OTP(One Time Password)
- 일회용 패스워드
- 매번 다른 비밀번호로 사용자를 인증하는 일회용 비밀번호를 의미
- 현재 사용할 비밀번호로 다음번에 사용할 비밀번호를 유추하는 것이 불가
OTP 생성 매커니즘
1. OTP 생성 알고리즘의 입력데이터
- 서버와 OTP 토큰간에 공유된 OTP 비밀키와 부가정보로 구성
- 부가정보는 OTP 생성 방식에 따라 구분
1) 질의/응답 방식: 질의값
2) 시간 동기화 방식: 시각값
3) 이벤트 동기화 방식: 키운터(이벤트횟수)
4) 조합방식: 시각값, 카운터(이벤트 횟수)
2. OTP 생성 알고리즘
- 입력 데이터로 부터 OTP 값(raw data)을 생성해 내는 알고리즘
- 일방향 해시함수 또는 대칭키(블럭암호화사용) 알고리즘에 기반함
3. OTP 추출함수
- OTP 생성 알고리즘을 통해 출력된 값으로부터 실제 OTP로 사용할 OTP값 6~8자리 숫자 출력 함수
OTP 생성 방식
- OTP 토큰과 인증서버 간의 동기화 여부에 따라 비동기화 방식 또는 동기화 방식으로 구분
1. 비동기화 방식: 질의-응답 방식이 해당
- OTP 토큰과 인증서버 간에 미리 설정되어 있는 동기화 기준 정보가 없음
- 인증 요청 시 사용자가 직접 임의의 난수값을 OTP 통큰에 입력하여 OTP를 생성
2. 동기화 방식: 시각 동기화, 이벤트 동기화, 조합 방식이 해당
- OTP 토큰과 인증서버 간에 미리 공유된 비밀 정보와 동기화 정보에 의해 OTP가 생성되는 방식
- OTP 토큰과 인증서버 간에 반드시 동기화가 이뤄져야 올바른 인증처리가 되는 제약이 있음
- 비동기화 방식의 단점(사용자 입력 불편, 기존 ID/PW App과의 호환 어려움 등)을 개선한 방식
1) 시간 동기화 방식
- 서버와 OTP 토큰간에 동기화된 시각 정보를 기준으로 특정 시각 정보를 기준으로 특정 시간(보통 1분) 마다
변하는 비밀번호를 생성하는 방식
- 사용자의 인증요청과 상관없이 특정 시간 간격마다 OTP가 변경되므로 공격자가 해킹에 사용할 수 있는
OTP를 얻어내기 어려움
2) 이벤트 동기화 방식
- 서버와 OTP 토큰이 동일한 카운트 값을 기준으로 비밀번호를 생성하는 방식
- 동기화 기준값으로 사용되는 카운트 값은 OTP 토큰과 인증서버만 알 수 있는 값으로 비밀 키 외에 입력되는
비밀정보
- OTP 값을 얻은 후 다시 OTP 생성 요청 할 때 까지 비밀번호가 바뀌지 않음
3) 조합 방식
- 시각 동기화 방식과 이벤트 동기화 방식의 장점을 조합하여 구성한 방식
- 시각 동기화 중심의 조합방식과 이벤트 동기화 중심의 조합방식으로 구분
a. 시각 동기화 중심의 조합방식
- 특정 시간 간격(보통 24 ~ 32초)마다 비밀번호가 다시 생성되며, 같은 시간 간격 내에서 재시도 시에는
카운트 값을 증가시켜서 비밀번호가 바뀌도록 하는 방식
- 시간 간격 내에도 여러 번 다른 비밀번호를 생성하여 활용 가능
b. 이벤트 동기화 중심의 조합방식
- 특정 시간에 발생한 카운터 갑슬 기준으로 비밀번호가 생성
- 사용자가 이벤트 버튼을 눌러 생성 요청을 할 때마다 값이 변경됨
OTP 생성 알고리즘 보안 요구사항
1. 키 생성 알고리즘
- 표준 알고리즘을 사용해야 함
- 128bit 이상의 엔트로피를 갖는 seed값을 사용해야 함
2. OTP 생성 알고리즘
- 대칭키 알고리즘의 보안강도: 112bit 이상 표준 암호 알고리즘 사용
- 일방향 해시 알고리즘 보안강도: 112bit 이상 표준 암호 알고리즘 사용
- 일방향 해시 함수를 사용하는 것에 비해 해시 기반 메시지 인증코드(HMAC: Hash-based Message Authentication Code) 기법을 사용하는 것을 권고
- HMAC 보안 강도: 160bit 이상
3. OTP 길이
- 최소 10진수 6자리 이상의 OTP 출력