개요
2단계 인증(2FA라고도 함)은 두 가지 다른 인증 방식을 결합하여 사용자를 인증하는 메커니즘입니다. 2011년 3월, 구글은 온라인 2단계 인증을 도입한다고 발표했으며, 이어 MSN과 야후도 도입되었습니다.
사용자 이름과 비밀번호 확인 외에도, 이중 인증은 RSA 토큰이나 휴대전화와 같은 다른 물리적 기기의 조합을 필요로 합니다. 이중 인증 제품은 크게 두 가지 범주로 나눌 수 있습니다:
토큰을 생성할 수 있는 하드웨어 장치 스마트폰 앱
OTP
2단계 검증에 사용되는 비밀번호는 일회성 비밀번호(OTP)로, 동적 비밀번호라고도 불립니다. 이는 암호화 기술을 사용하여 클라이언트와 서버 간에 키를 공유하는 강력한 인증 기술로, 현재의 정적 비밀번호 인증을 향상시키는 매우 편리한 기술적 수단이며, 중요한 2단계 인증 인증 기술입니다.
OTP는 일회용 비밀번호(One-Time Password)의 약자로, 일회성 비밀번호를 의미합니다. 이 종은 다음과 같은 두 가지 유형으로 나뉩니다:
HOTP (HMAC 기반 일회용 비밀번호 알고리즘)
HOTP는 ITEF에서 발표한 알고리즘 명세인 HMAC 알고리즘(이벤트 동기화용 동적 비밀번호라고도 함)을 기반으로 생성된 일회성 비밀번호이며, 의사코드는 다음과 같습니다:
클라이언트와 서버는 일회용 비밀번호를 생성하기 위해 미리 키 K를 협상합니다. 클라이언트와 서버는 각각 이벤트 카운터 C를 가지고 있으며 카운트 값을 미리 동기화합니다. 트런케이트는 HMAC-SHA-1에서 생성된 20바이트 문자열을 여러 소수점으로 변환하는 알고리즘입니다.
TOTP (시간 기반 일회용 비밀번호 알고리즘)
TOTP는 HOTP의 이벤트 카운터 C(시간 동기화를 위한 동적 암호라고도 함)를 대체하기 위해 시간을 사용하는 개선된 HOTP의 버전입니다. 의사코드:
T0은 초기 테스트 시간으로, 기본값은 0입니다 X는 기본 30초로 설정된 시간 단위입니다 공식 문서에는 현재 유닉스 시간 = 59, T0 = 0, X = 30, 그리고 T=1을 가정하는 조건으로 요약되어 있습니다 현재 유닉스 시간=60, T0=0, X=30, 그리고 T=2를 가정할 때 즉, T의 값을 반올림하고 소수점은 버려집니다
위 그림에서 볼 수 있듯이, 입력 알고리즘에는 두 가지 주요 요소가 있는데, 하나는 공유 키(시드라고도 함)이고, 다른 하나는 특정 알고리즘에 의해 계산되는 카운팅(시간 인자)입니다. 두 요소가 일관되면, 서버 측과 클라이언트 측이 동일한 결과를 계산하여 인증 기능을 가능하게 합니다.
|