인터넷 뱅킹이나 전자 상거래를 할 때 온라인상에서 사용자 인증은 필수적이다. 정당한 사용자인지를 인증받는 흔한 방법은 아이디(ID)와 비밀번호를 입력하는 것으로, 사용자가 특정한 정보를 알고 있는지 확인하는 방식이다. 그러나 이러한 방식은 고정된 정보를 반복적으로 사용하기 때문에 정보가 노출 될 수 있다. 이러한 문제점을 보완하기 위해 개발된 인증 기법이 OTP(One-Time Password, 일회용 비밀번호) 기술이다. OTP 기술은 사용자가 금융 거래 인증을 받고자 할 때마다 해당 기관에서 발급한 OTP발생기를 통해 새로운 비밀번호를 생성하여 인증받는 방식이다.


OTP 기술은 크게 비동기화 방식과 동기화 방식으로 나눌 수 있다. 비동기화 방식은 OTP발생기와 인증 서버 사이에 동기화된 값이 없는 방식으로, 인증 서버의 질의에 사용자가 응 답하는 방식이다. OTP 기술 도입 초기에 사용된 질의 응답방식은 인증 서버가 임의의 6자리 수, 즉 질읫값을 제시하면 사용자는 그 수를 OTP 발생기에 입력하고, OTP 발생기는 질읫값과 다른 응답값을 생성한다. 사용자는 그 값을 로그인 서버에 입력하고 인증 서버는 입력된 값을 확인한다. 이 방식은 사용자가 OTP 발생기에 질읫값을 직접 입력해 응답값을 구해야 하는 번거로움이 있기 때문에 사용이 불편하다.


<초기 OTP 발생기>


이와 달리 동기화 방식은 OTP 발생기와 인증 서버 사이에 동기화*된 값을 설정하고 이에 따라 비밀번호를 생성하는 방식으로, 이벤트 동기화 방식과 시간 동기화 방식이 있다. 이벤 트 동기화 방식은 기촛값과 카운트값을 바탕으로 OTP 발생기는 비밀번호를, 인증 서버는 인증값을 생성하는 방식이다. 기촛값이란 사용자의 신상 정보와 해당 금융 기관의 정보 등이 반영된 고유한 값이며, 카운트값이란 비밀번호를 생성한 횟수이다. 사용자가 인증을 받아야 할 경우 이벤트 동기화 방식의 OTP 발생기는 기촛값과 카운트값을 바탕으로 비밀번호를 생성하게 되며, 생성된 비밀번호를 사용자가 로그인 서버에 입력하면 된다. 이때 OTP 발생기는 비밀번호를 생성할 때마다 카운트값을 증가시킨다. 인증 서버 역시 기촛값과 카운트값으로 인증값을 생성하여 로그인 서버로 입력된 OTP 발생기의 비밀번호와 비교하는 것이다. 이때 인증에 성공하면 인증 서버는 카운트값을 증가시켜서 저장해 두었다가 다음번 인증에 반영한다. 그러나 이 방식은 OTP 발생기에서 비밀번호를 생성만 하고 인증하지 않으면 OTP 발생기와 인증 서버 간에 카운트 값이 달라지는 문제점이 있다.


시간 동기화 방식은 현재 금융 거래에서 주로 사용되는 방식으로, 기촛값과 인증을 시도한 날짜와 시간을 바탕으로 일정한 시간 간격마다 일방향 함수를 통해 OTP 발생기는 비밀번호를, 인증 서버는 인증값을 생성하는 방식이다. 일방향 함수란 계산하기는 쉽지만 역연산하는 것은 매우 어려운 함수로, 결괏값을 안다고 하더라도 입력값을 구하는 것이 매우 어려운 특성이 있다.


시간 동기화 방식으로 일회용 비밀번호를 생성하는 과정은 다양하지만 다음과 같은 과정을 생각해 볼 수 있다. 사용자가 인증을 받아야 할 경우 시간 동기화 방식의 OTP 발생기는 발급 시 동기화된 기촛값과 인증 시도 시간을 바탕으로 r를 구하고, r에 대해 일방향 함수 ƒ를 n번 수행하여 𝘟n을 생성한다. 이렇게 생성된 𝘟n을 사용자가 로그인 서버에 입력하면, 로그인 서버는 입력된 𝘟n을 일방향 함수 ƒ로 한 번 더 계산해 𝘟n+1을 구하고 이 값을 인증 서버로 전달하게 된다. 인증 서버 역시 기촛값과 인증 시도 시간을 바탕으로 r를 구하고, r에 대해 일방향 함수 ƒ를 n+1번 수행하여 𝘟n+1을 생성한 후 로그인 서버로부터 전달받은 값과 비교하여 인증을 하게 된다.


시간 동기화 방식의 OTP 발생기에는 인증 서버의 시간과 같은 시간을 가리키는 전자시계가 장착되어 있어 시간 동기화가 가능하다. 하지만 인증 서버와 OTP 발생기 간에 시간 오차가 발생하면 인증에 실패한다. 또한 시간 동기화 방식은 이벤트 동기화 방식에 비해 입력 시간에도 제약을 받는다. 왜냐하면 사용자의 비밀번호 입력 시간이 길어지면 새로운 비밀번호가 생성되기 때문이다.


*동기화: 서로 일관성 있게 같은 값을 유지하는 것. 같은 시점에서 특정 작업을 수행하는 것.



― 정영곤, ‘OTP 인증 기술 최신 동향 및 발전 방향’




최근에는 스마트폰을 활용한 OTP 서비스가 대세이다.