HMAC 기반 일회용 암호
HMAC-based one-time password![]() |
HMAC 기반 HOTP(One-Time Password)는 HMAC에 기반한 OTP(One-Time Password) 알고리즘입니다.Open Authentication Initiative for Open Authentication(OATH; 오픈 인증 이니셔티브)의 토대입니다.
HOTP는 2005년 12월에 정보 IETF RFC 4226으로 발행되어 알고리즘을 Java 구현과 함께 문서화하고 있습니다.그 후, 이 알고리즘은 전 세계의 많은 기업에 채용되고 있습니다(아래 참조).HOTP 알고리즘은 자유롭게 사용할 수 있는 개방형 표준입니다.
알고리즘.
HOTP 알고리즘은 사람이 판독할 수 있는 패스워드(또는 값)를 대칭적으로 생성하여 인증하는 방법을 제공합니다.각각은 1회의 인증 시도에만 사용됩니다.일회성 속성은 각 카운터 값의 단일 사용에서 직접 이어집니다.
HOTP를 사용하려는 당사자는 다음과 같이 설정해야 합니다.파라미터(통상은 오센티케이터에 의해 지정되며 인증필에 의해 받아들여지거나 받아들여지지 않습니다).
- 암호화 해시 방식 H(기본값은 SHA-1)
- 개인 키 K. 임의의 바이트 문자열로 개인 키를 유지해야 합니다.
- 반복 횟수를 카운트하는 카운터 C
- HOTP 값 길이 d(6~10, 기본값은 6, 6~8 권장)
쌍방은 비밀키 K와 카운터 C에서 도출된 HOTP 값을 산출한다.다음으로 오센티케이터는 로컬로 생성된 값을 인증된 값과 대조합니다.
오센티케이터와 인증된 카운터 C는 서로 독립적으로 증가하며, 카운터 C는 카운터 C가 전자보다 먼저 증가할 수 있으므로 재동기 프로토콜이 현명합니다.RFC 4226은 실제로 이러한 것을 요구하지 않지만 권장하고 있습니다.이것에 의해, 오센티케이터는, 사이즈 s 의 창을 개입시켜 카운터에 앞서 검증을 반복할 뿐입니다.오센티케이터의 카운터는 검증이 성공하는 값보다 계속 앞으로 이동하며 인증된 에 의한 액션은 필요하지 않습니다.
HOTP 값 검증의 영속적인 슬롯링을 실시해, 그 사이즈가 비교적 작기 때문에, 무차별 포스 공격에 대한 취약성을 해소하는 것을 추천합니다.검증은 몇 번 실패하면 록아웃되거나 실패할 때마다 추가(선형적으로 증가하는) 지연이 발생하는 것을 권장합니다.
일반적으로 6자리 코드는 디폴트값 d를 통지하는 여러 벤더의 독자적인 하드웨어 토큰에 의해 제공됩니다.잘라내기에서는 31비트 ( 2 _ ( 99.3 의 소수점 이하가 추출됩니다.즉, d는 최대 10 자리수이며, 10 자리수에는 0, 1, 및 2 의 값(0.3 자리수)이 추가됩니다.
검증 후 오센티케이터는 다음 HOTP 값을 생성하여 반환하는 것만으로 자신을 인증할 수 있습니다.그 후 인증 완료자는 자신의 HOTP 값을 생성하여 검증할 수 있습니다.이 프로세스에서는 이 시점에서 카운터가 동기화되는 것이 보증됩니다.
HOTP 값은 사람이 판독할 수 있는 설계 출력으로 d자리의 10진수(선행0이 생략되지 않음)입니다.
- HOTP 값 = HOTP(K, C) modd 10.
즉, 이 값은 HOTP의 최하위 10자리입니다.
HOTP는 카운터 C의 HMAC를 잘라낸 것입니다(키 K 및 해시 함수H 아래).
- HOTP(K, C) = 잘라내기(HMACH(K, C),
여기서 카운터 C는 빅 엔디안을 사용해야 합니다.
절단은 처음에 MAC의 최하위4비트를 취득하여 바이트오프셋 i로서 사용합니다.
- 잘라내기(MAC) = 추출 31(MAC, MAC[(19 × 8) + 4:(19 × 8) + 7]),
여기서 ":"는 시작 비트 번호에서 종료 비트 번호까지 비트를 추출하는 데 사용됩니다. 여기서 이 비트 번호는 0 ~12진수입니다.위의 공식에서 "19"를 사용하는 것은 해시함수의 출력 크기와 관련이 있습니다.디폴트 SHA-1에서는 출력은 20바이트이므로 마지막 바이트는 바이트 19(0-origin)입니다.
이 인덱스 i는 비트 i × 8 + 1부터 시작하여 MAC에서 31비트를 선택하는 데 사용됩니다.
- extract31(MAC, i) = MAC[i × 8 + 1:i × 8 + (4 × 8) - 1]
31비트는 4바이트 워드의 1비트 부족입니다.따라서 부호 비트(가장 유의한 비트)를 사용하지 않고 이러한 단어 안에 값을 배치할 수 있습니다.이는 음수에 [1]대해 모듈식 계산을 수행하는 것을 확실히 피하기 위해 수행되었습니다. 이는 정의와 구현이 다양하기 때문입니다.
토큰
하드웨어 토큰과 소프트웨어 토큰은 모두 다양한 벤더가 제공하고 있습니다.이들 중 일부는 아래 참조를 참조해 주십시오.OPERSH HOTP를 구현하는 하드웨어 토큰은 독점 알고리즘을 [2]기반으로 한 경쟁 제품보다 훨씬 저렴한 경향이 있습니다.2010년 현재 OPERSH HOTP 하드웨어 토큰은 최저가로 [3]구입할 수 있습니다.일부 제품은 강력한 비밀번호 및 OPERSH [4]HOTP에 사용할 수 있습니다.
소프트웨어 토큰은 (거의) 모든 주요 모바일/스마트폰 플랫폼(J2ME,[5] Android,[6] iPhone,[7] BlackBerry,[8] Maemo,[9] macOS [10]및 Windows[8] Mobile)에서 사용할 수 있습니다.
접수처
2004년과 [11][12][13]2005년 사이 일부 컴퓨터 프레스로부터의 수신은 부정적이었습니다만, 2005년 12월에 IETF가 HOTP를 RFC 4226으로 채택한 후, 다양한 벤더가 HOTP 호환 토큰 및/또는 인증 솔루션 전체를 생산하기 시작했습니다.
강력 인증 기사를"RoadMap:정시 운항성 인증과 암호를 교체하는 것"[2], 버튼 그룹에 의해(가트너의 분열)2010년에 발표되는 것은 가트너의 기대 반면 스마트 폰 OTPs과 기본이 되는 하드웨어 플랫폼에 걸쳐 성장은 하드웨어 정시 운항성 형태 인자는 완만한 성장세를 계속 즐길 것이다. time.
「 」를 참조해 주세요.
- 오픈 인증 이니셔티브
- 키
- 시간 기반 One-Time Password Algorithm(TOTP; 원타임패스워드 알고리즘)
레퍼런스
- ^ Frank, Hoornaert; David, Naccache; Mihir, Bellare; Ohad, Ranen (December 2005). "HOTP: An HMAC-Based One-Time Password Algorithm". tools.ietf.org.
- ^ a b Diodati, Mark (2010). "Road Map: Replacing Passwords with OTP Authentication". Burton Group.
- ^ "Security Authentication Tokens — Entrust". Entrust. 2011.
- ^ "Password sCrib Tokens — Smart Crib". Smart Crib. 2013. Archived from the original on 2013-03-20.
- ^ "DS3 Launches OathToken Midlet Application". Data Security Systems Solutions. 2006-02-24. Archived from the original on 29 December 2013.
- ^ "StrongAuth". 2010. Archived from the original on 2010-05-18.
- ^ Cobbs, Archie L. (2010). "OATH Token". Archie L. Cobbs.
- ^ a b "ActivIdentity Soft Tokens". ActivIdentity. 2010. Archived from the original on 2010-09-17.
- ^ Whitbeck, Sean (2011). "OTP Generator for N900". Sean Whitbeck.
- ^ "SecuriToken". Feel Good Software. 2011. Archived from the original on 2012-04-25.
- ^ Kearns, Dave (2004-12-06). "Digging deeper into OATH doesn't look so good". Network World.
- ^ Willoughby, Mark (2005-03-21). "No agreement on Oath authentication". Computerworld.
- ^ Kaliski, Burt (2005-05-19). "Algorithm agility and OATH". Computerworld.