시간 기반 일회용 비밀번호

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

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 = \left\lfloor\frac{T - T_0}{T_X}\right\rfloor,

여기서

* CTT 사이의 기간 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 관리 소프트웨어로도 사용할 수 있도록 설계)

4. 보안성

TOTP 값은 비밀번호처럼 피싱될 수 있지만, 공격자가 실시간으로 자격 증명을 가로채야 하므로 일반적인 피싱보다는 어렵다. 공유 비밀번호를 도용한 공격자는 원하는 대로 유효한 새 TOTP 값을 생성할 수 있는데, 이는 대규모 인증 데이터베이스 침해 시 특히 문제가 될 수 있다.

레이턴시 및 동기화되지 않은 시계 문제로 인해 일회용 비밀번호는 일정 시간 범위 내에서 유효성을 검사해야 한다. 클라이언트와 서버의 시계는 대략적으로 동기화되어야 하며, TOTP 값은 일반적으로 30초 이상 유효하다.