시간 기반 일회용 비밀번호 문서 원본 보기
←
시간 기반 일회용 비밀번호
둘러보기로 이동
검색으로 이동
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
{{위키데이터 속성 추적}} '''시간 기반 일회용 비밀번호'''({{lang|en|Time-based one-time password}}, '''TOTP''')는 현재 시간을 고유성의 원천으로 사용하여 [[일회용 비밀번호]] (OTP)를 생성하는 [[컴퓨터 알고리즘]]이다. [[HMAC 기반 일회용 비밀번호 알고리즘]] (HOTP)의 확장으로 [[국제 인터넷 표준화 기구]] (IETF) 표준 {{IETF RFC|6238}}로 채택되었다.<ref name="RFC6238">{{웹 인용|url=https://tools.ietf.org/html/rfc6238|title=RFC 6238 – TOTP: Time-Based One-Time Password Algorithm|access-date=July 13, 2011|archive-date=July 11, 2011|archive-url=https://web.archive.org/web/20110711124823/http://tools.ietf.org/html/rfc6238|url-status=live}}</ref> TOTP는 [[개방형 인증 이니셔티브]] (OATH)의 초석이며, 다수의 [[2요소 인증]] 시스템에 사용된다. == 역사 == 여러 OATH 회원들의 협력을 통해 업계에서 지원하는 표준을 만들기 위해 TOTP 초안이 개발되었습니다. 이벤트 기반 일회성 표준 HOTP를 보완하고 최종 사용자 조직과 기업이 애플리케이션 요구 사항 및 [[보안]] 지침에 가장 적합한 기술을 선택할 수 있는 더 많은 선택권을 제공한다. 2008년, OATH는 IETF에 이 규격의 초안을 제출했다. 이 버전은 IETF에 제출된 이전 버전에 기초하여 저자가 기술 공동체로부터 받은 모든 피드백과 논평을 통합한다.<ref>{{웹 인용|url=http://www.openauthentication.org/news/20080408|title=OATH Submits TOTP: Time-Based One Time Password Specification to IETF|last=Alexander|first=Madison|work=Open Authentication|access-date=22 February 2010|archive-date=23 January 2013|archive-url=https://www.webcitation.org/6DtdCt3JN?url=http://www.openauthentication.org/news/20080408|url-status=live}}</ref> 2011년 5월에 TOTP는 공식적으로 [[RFC]] 6238이 되었다.<ref name="RFC6238" /> == 알고리즘 == TOTP 인증을 설정하려면 인증기와 피인증자가 HOTP 매개 변수와 TOTP 매개 변수를 모두 미리 설정해야 한다: * ''T''{{sub|0}}, 시간 간격 카운트가 시작될 [[유닉스 시간]] (기본값은 0), * ''T{{sub|X}}'', ''C{{sub|T}}'' 카운터 값을 계산하는 데 사용되는 간격 (기본값은 30초). 인증기와 피인증자는 모두 TOTP 값을 계산한 다음 피인증자가 제공한 TOTP 값이 로컬에서 생성된 TOTP 값과 일치하는지 확인한다. 몇몇 인증기는 약간의 [[클럭 스큐]], 네트워크 지연 및 사용자 지연을 고려하기 위해 현재 시간 이전 또는 이후에 생성되어야 하는 값을 허용한다. TOTP는 HOTP 알고리즘을 사용하여 카운터를 현재 시간을 기준으로 감소하지 않는 값으로 바꾼다: TOTP 값(''K'') = [[HMAC 기반 일회용 비밀번호 알고리즘#정의|HOTP 값]](''K'', ''C{{sub|T}}''), 카운터 값 계산 <math display="block">C_T = \left\lfloor\frac{T - T_0}{T_X}\right\rfloor,</math> 여기에서 * ''C{{sub|T}}'' is the count of the number of durations ''T{{sub|X}}'' between ''T''{{sub|0}} and ''T'', * ''T'' is the current time in seconds since a particular [[epoch]], * ''T''{{sub|0}} is the epoch as specified in seconds since the [[Unix epoch]] (e.g. if using [[Unix time]], then ''T''{{sub|0}} is 0), * ''T{{sub|X}}'' is the length of one time duration (e.g. 30 seconds). 유닉스 시간은 엄격하게 증가하지 않는다. UTC에 [[윤초]]가 삽입되면 유닉스 시간은 1초를 반복한다. 그러나 한번의 윤초는 유닉스 시간의 [[바닥 함수|정수 부분]]을 감소시키지 않으며, ''T{{sub|X}}''가 1초의 배수인 한 ''C{{sub|T}}''도 감소하지 않는다. == 보안성 == TOTP 값은 [[비밀번호]]처럼 [[피싱]]될 수 있지만, 이를 위해서는 공격자가 실시간으로 자격 증명을 프록시해야 한다.<ref>{{웹 인용|last=Umawing|first=Jovi|date=21 January 2019|access-date=9 August 2020|title=Has two-factor authentication been defeated? A spotlight on 2FA's latest challenge|url=https://blog.malwarebytes.com/cybercrime/2019/01/two-factor-authentication-defeated-spotlight-2fas-latest-challenge/|website=Malwarebytes Labs|language=en-US|archive-date=25 September 2020|archive-url=https://web.archive.org/web/20200925082641/https://blog.malwarebytes.com/cybercrime/2019/01/two-factor-authentication-defeated-spotlight-2fas-latest-challenge/|url-status=live}}</ref> 공유 비밀번호를 도용한 공격자는 원하는 대로 유효한 새 TOTP 값을 생성할 수 있다. 이것은 공격자가 대규모 인증 데이터베이스를 위반하는 경우 특히 문제가 될 수 있다.<ref>{{뉴스 인용|url=https://www.wired.com/2011/06/rsa-replaces-securid-tokens/|title=RSA Agrees to Replace Security Tokens After Admitting Compromise|last=Zetter|first=Kim|newspaper=WIRED|access-date=17 February 2017|language=en-US|archive-date=12 November 2020|archive-url=https://web.archive.org/web/20201112032021/https://www.wired.com/2011/06/rsa-replaces-securid-tokens/|url-status=live}}</ref> 네트워크와 사람 모두의 [[레이턴시]], [[시간 동기화|동기화되지 않은 시계]]로 인해 일회용 비밀번호는 [[인증기]]와 피인증자 사이의 시간 범위에 걸쳐 유효성을 검사해야 한다. 여기에서 시간은 당사자 간의 유효성을 허용하기 위해 더 큰 기간(예: 30초)으로 다운샘플링된다. 후속 인증이 작동하려면 피인증자와 인증기의 시계를 대략적으로 동기화해야 한다(인증기는 일반적으로 피인증자의 타임스탬프와 ±1 시간 간격이 다른 타임스탬프에서 생성된 1회용 암호를 수락한다).<ref name="RFC6238"/> TOTP 값은 일반적으로 30초 이상 유효하므로 클라이언트 및 서버 시간 지연이 고려된다.<ref name="RFC6238"/> == 같이 보기 == * [[Botan]] * [[FreeOTP]] * [[Google Authenticator]] * [[multiOTP]] == 각주 == {{refs}} == 외부 링크 == * [https://nbviewer.jupyter.org/github/algorithmic-space/cryptoy/blob/master/rfc6238.ipynb Step by step Python implementation in a Jupyter Notebook] {{웹아카이브|url=https://web.archive.org/web/20190406214815/https://nbviewer.jupyter.org/github/algorithmic-space/cryptoy/blob/master/rfc6238.ipynb}} * [https://www.docker.com/blog/designing-docker-hub-2fa/ Designing Docker Hub Two-Factor Authentication], (section "Using Time-Based One-Time Password (TOTP) Authentication"). [[분류:인터넷 프로토콜]] [[분류:컴퓨터 접근 제어]] [[분류:암호 알고리즘]]
이 문서에서 사용한 틀:
틀:IETF RFC
(
원본 보기
)
틀:Lang
(
원본 보기
)
틀:Refs
(
원본 보기
)
틀:Sub
(
원본 보기
)
틀:뉴스 인용
(
원본 보기
)
틀:웹 인용
(
원본 보기
)
틀:웹아카이브
(
원본 보기
)
틀:위키데이터 속성 추적
(
원본 보기
)
시간 기반 일회용 비밀번호
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보