지식공유/테크 이슈

OTP 장점과 원리 그리고 표준 RFC6238

DevMonster 2022. 1. 16. 23:54

인터넷뱅킹을 사용하는 대부분의 사람들은 보안카드나 OTP를 갖고 있다.
2자리씩 숫자들이 나열되어 있는 보안카드의 경우
한 번 유출되면 보안의 수명은 끝이 난다.


OTP의 장점

하지만, OTP의 경우 이름 풀이와 같이 One Time Password
한 번씩만 사용할 수 있는 일회용 6자리 비밀번호를 생성한다.
6자리 번호가 유출되어도 최대 1분만 사용가능한 비밀번호이기에 기존 보안카드보다 안전하다.
또, 현재 출력된 6자리 비밀번호를 알아도 다음 나올 비밀번호를 알 수 없는 것이 큰 장점이다.


OTP의 원리

OTP 표면에는 고유번호가 적혀있다.
고유번호에 해당하는 KEY 값이 은행과 OTP 기기 안에 저장되어 있다.
(참고로, KEY 값은 OTP 소유자도 은행직원도 모른다.)

'KEY + 현재 시각 → 일회용 비밀번호 발급' 개념이다.
OTP기기나 카드 내부에는 작은 배터리와 시계가 들어 있기 때문에
시간을 받아오기 위해 은행이나 GPS로 시간을 받아올 필요가 없다.

OTP 시간이 은행과 맞지 않으면 어떻게 될까?
은행에서는 OTP 내부 시계의 오차범위를 미리 파악하고 있다.
만약, OTP에서 출력된 값이 1분 전이라면, 
은행에선 "아 OTP가 1분 늦는구나. 오케이 내 시간도 1분 전으로 맞춰둘게." 라고 판단하고 보정한다.

 

TOTP 표준 RFC6238

우리가 사용하는 시간 기반 OTP의 표준은 RFC6238에 <TOTP: Time-Based One-Time Password Algorithm> 이라는 타이틀로 기술되어 있다. 난수를 생성하는 알고리즘은 HMAC-SHA-1 기반이다. (SHA-1의 경우 2005년 보안 취약점이 발견돼 실제 OTP에 적용되는 것은 SHA-2나 SHA-3 version이지 않을까?)

여기 HMAC(hash-based message authentication code)이란 해시 함수를 기반으로 한 메시지 인증 방식이다. 이 알고리즘을 우리가 사용하는 OTP에 적용하기 위해선 아래와 같은 조건들이 필요하다.

 

1. OTP와 은행에 UNIX 시간(1970년 1월 1일 자정부터 경과된 초) 방식 적용

2. OTP와 은행은 6자리를 생성하기 위해 서로 공유된 KEY와 변환 방식이 공유

3. 동일한 시간으로 시작

4. KEY는 무작위로 생성되거나 파생 알고리즘을 통해 생성

5. KEY는 변조 방지 장치에 저장 + 무단 접근 및 사용으로부터 보호 필요

 

 

[참고자료]

https://ko.wikipedia.org/wiki/HMAC

https://datatracker.ietf.org/doc/html/rfc6238

728x90
반응형