시간 기반 일회용 비밀번호
1. 개요
시간 기반 일회용 비밀번호(TOTP)는 OATH 회원들의 협력을 통해 개발된 업계 표준으로, HMAC 기반 일회용 비밀번호 알고리즘(HOTP)을 기반으로 한다. 2011년 RFC 6238로 공식화되었다. TOTP는 특정 에포크 이후의 현재 시간을 사용하여 계산되며, 구현 방식은 기업 고유 알고리즘과 OATH-TOTP 두 가지로 나뉜다. OATH-TOTP는 Base32 형식의 공유 시크릿을 사용자가 직접 등록하는 방식이며, 보안이 중요한 상황에서는 전용 관리 소프트웨어를 사용하기도 한다. TOTP는 피싱될 수 있지만, 공유 비밀번호가 유출될 경우 위험하며, 클라이언트와 서버의 시간 동기화가 중요하다.
| 유형 | 비밀번호 |
|---|---|
| 목적 | 인증 |
| 개발자 | RSA 보안 |
| 첫 공개 | 2005년 |
| 표준 | RFC 4226 (HOTP) RFC 6238 (TOTP) |
| 설명 | 시간 기반 일회용 비밀번호 (TOTP)는 대칭 키를 사용하여 암호화된, 시간과 동기화된 일회용 비밀번호를 생성하는 알고리즘이다. |
|---|---|
| 특징 | 시간 동기화 대칭 키 암호화 일회용 비밀번호 생성 |
| 기반 | HOTP 알고리즘 기반 |
|---|---|
| 해시 함수 | HMAC-SHA-1 (기본), HMAC-SHA-256, HMAC-SHA-512 지원 |
| 시간 간격 | 30초 (일반적) |
| 비밀 키 | 서버와 클라이언트 간 공유 |
| 비밀번호 길이 | 6-8자리 숫자 |
| 장점 | 추가 하드웨어 불필요 구현 용이 다양한 플랫폼 지원 |
| 단점 | 시간 동기화 필요 비밀 키 유출 시 보안 취약 |
| 관련 기술 | OTP HOTP 다단계 인증 |
|---|---|
| 표준 문서 | RFC 6238 |
-
암호 알고리즘 -
이진 코드
-
암호 알고리즘 -
메시지 인증 코드
메시지 인증 코드(MAC)는 메시지 무결성을 보장하기 위해 사용되는 암호화 기법으로, 송신자와 수신자가 동일한 키를 공유하여 MAC 생성, 확인 과정을 거친다. -
인터넷 프로토콜 -
IPTV
IPTV는 인터넷 프로토콜을 사용하여 실시간 방송, VOD 등 다양한 콘텐츠를 제공하는 텔레비전 서비스이며, 고속통신망과의 통합, 양방향 서비스 등의 장점을 가지지만 망 사업자 제한 등의 제한 사항도 존재한다. -
인터넷 프로토콜 -
DNSSEC
-
컴퓨터 접근 제어 -
로그인
로그인은 특정 페이지, 웹사이트 또는 응용 프로그램에 접근하기 위해 사용자 이름과 암호를 입력하여 시스템에 접근하는 절차이며, 1960년대 시분할 시스템과 1970년대 BBS에서 사용되기 시작했다. -
컴퓨터 접근 제어 -
SIM 카드
SIM 카드는 이동통신 장치에서 가입자 정보를 저장하고 네트워크를 인증하는 스마트 카드로, 가입자 식별 정보, 인증 정보, 전화번호부 등을 저장하며, 최근에는 내장형 eSIM으로 발전하고 있다.
2. 역사
TOTP 초안은 여러 OATH 회원들의 협력을 통해 개발되어 업계에서 지원하는 표준을 목표로 하였다. 이는 이벤트 기반 일회용 표준인 HOTP를 보완하며, 최종 사용자 조직과 기업에게 애플리케이션 요구 사항 및 보안 지침에 가장 적합한 기술을 선택할 수 있는 더 많은 선택권을 제공한다. 2008년, OATH는 IETF에 이 규격의 초안을 제출했다. 이 버전은 IETF에 제출된 이전 버전에 기초하여 저자가 기술 공동체로부터 받은 모든 피드백과 논평을 통합한다. 2011년 5월에 TOTP는 공식적으로 RFC 6238이 되었다.
코드 생성 방법으로는, 전문 기업이 독자적으로 개발한 알고리즘을 이용하는 경우와, HMAC 기반 일회용 비밀번호를 기반으로 한 "OATH-TOTP"(RFC 6238)를 이용하는 경우가 있다. 전자는 독점 소프트웨어의 일부이므로 도입을 위해서는 계약이 필요하지만, 후자는 국제 표준화된 규격으로 누구나 이용할 수 있다. 따라서 대부분의 웹 서비스는 후자의 방식을 채택하고 있다.
3. 알고리즘
TOTP는 HMAC 기반 일회용 비밀번호 알고리즘(HOTP)을 기반으로 한다. 인증 대상과 인증자는 HOTP 매개변수와 함께 다음 TOTP 매개변수를 미리 설정해야 한다.
* T: 시간 간격 카운트가 시작될 유닉스 시간 (기본값은 0)
* T: C 카운터 값을 계산하는 데 사용되는 간격 (기본값은 30초)
인증기와 피인증자는 모두 TOTP 값을 계산한 다음, 피인증자가 제공한 TOTP 값이 로컬에서 생성된 TOTP 값과 일치하는지 확인한다. 일부 인증기는 클럭 스큐, 네트워크 지연 및 사용자 지연을 고려하여 현재 시간 이전 또는 이후에 생성되어야 하는 값을 허용한다.
TOTP 값은 HOTP 알고리즘을 사용하여 카운터를 현재 시간을 기준으로 감소하지 않는 값으로 바꾼다.
TOTP 값(K) = HOTP 값(K, C)
카운터 값은 다음과 같이 계산한다.
여기서
* C는 T과 T 사이의 기간 T의 수
* T는 특정 에포크 이후의 현재 시간을 초 단위로 표시
* T은 유닉스 에포크 이후의 초 단위로 지정된 에포크 (예: 유닉스 시간을 사용하면 T은 0)
* T는 일회성 기간의 길이 (예: 30초)
유닉스 시간은 윤초 삽입 시 1초를 반복하지만, C는 감소하지 않는다.
3.1. 구현 방식
TOTP 구현 방식은 크게 기업 고유 알고리즘을 이용하는 방식과 OATH-TOTP (6238)를 이용하는 방식 두 가지로 나뉜다.
기업 고유 알고리즘 방식은 초기 설정 시 공유 시크릿을 토큰에 다운로드하거나 시리얼 번호를 입력하여 사용자 계정과 서버를 연결한다. 이 경우 사용자는 공유 시크릿 원본 데이터에 접근할 수 없다.
OATH-TOTP 방식은 서버에서 제공된 Base32 형식의 공유 시크릿을 사용자가 직접 등록하는 방식이다.
3.1.1. OATH-TOTP 준수 제품
NTT 데이터 그룹의 BizXaaS Authentication, RSA 시큐리티의 SecurID, OneSpan의 디지패스 등이 있다. 서버에서 제공된 BASE32 형식의 공유 시크릿을 OATH-TOTP에 준수하는 범용 관리 소프트웨어 및 장치에 사용자가 직접 등록한다. 올바르게 일회용 비밀번호를 생성할 수 있다면 어떤 소프트웨어 및 장치를 선택해도 문제가 없으므로, 각자의 필요에 맞춰 원하는 것을 선택하여 사용할 수 있다.
그러나 인터넷 뱅킹 등 높은 보안이 요구되는 상황에서는, 위의 일반적인 등록 절차처럼 공유 시크릿의 원시 데이터가 노출될 기회가 있다는 것 자체가 위험이 될 수 있다. 이 경우, 기업 고유의 알고리즘을 탑재한 제품과 같이 전용 관리 소프트웨어 및 장치를 이용한다.
범용 관리 소프트웨어 및 장치에는 다음이 포함된다.
* Aegis Authenticator - 무료 및 오픈 소스
* andOTP
* ente Auth - 무료 및 오픈 소스
* FreeOTP
* Google Authenticator
* KeepassXC ( 비밀번호 관리자이지만 OATH-TOTP 관리 기능도 존재)
* YubiKey (유비코(Yubico)) (FIDO 보안 키이지만, OATH-TOTP 관리 기능도 탑재)
전용 관리 소프트웨어 및 장치에는 다음이 포함된다.
* 시만텍 VIP (Symantec VIP) (범용 OATH-TOTP 관리 소프트웨어로도 사용할 수 있도록 설계)