OTP(One Time Password)의 원리

흔히 사용되는 보안카드는(뒤에 숫자가 적혀 있는 보안카드) 휴대의 불편함 때문에 사진으로 찍어서 파일로 저장하고 그것을 웹으로 올리는 등의 보안상의 취약점이 있다. 실제로 그 파일이 유출되면서 해킹되는 사례도 발생하였다.

OTP란 (One Time Password) 로서 고정된 패스워드 대신 무작위로 생성되는 일회용 패스워드를 이용하는 사용자 인증 방식이다. 보안을 강화하기 위해여 도입한 시스템으로 로그인 할 때마다 일회성 패스워드를 생성하여 동일한 패스워드가 반복해서 사용됨으로 발생하는 보안상의 취약점을 극복하기 위해 도입되었다.

주로 금융권에서 온라인 뱅킹(Online banking) 등의 전자 금융 거래에서 사용되며, 사용자는 일회성 비밀번호를 생성하는 하드웨어인 OTP 생성기(OPT Token)를 이용한다.

OTP 생성기는 버튼을 누르면 6자리의 패스워드가 나오는 방식, 매 1분마다 자동으로 서로 다른 6자리의 패스워드가 나오는 시간동기 방식, 키패드에 4자리 비밀번호를 입력하명 6자리 패스워드를 보여주는 방식등이 있다. 형태로는 소형 단말기 모양의 토큰형과 신용카드 모양의 카드형이 사용되고 있으며 최근에는 휴대폰의 범용가입자식별모듈(USIM)을 기반으로 하는 모바일 OTP의 도입이 추진되고 있다.

b0007036_47e1e0df17422.jpg

원리

OTP 생성기 작동시 컴퓨터와 인증서버와 직접적으로 무선통신하는 원리가 아니다.

모든 경우의 OTP를 다르게 하기 위해서는 OTP 생성 시에 각 사용자에게만 할당된 비밀키를 이용하여 값을 생성해야 하고, 비밀키는 초기에 OTP 생성기를 제작할 때에 함게 생성되어 인증서버에 저장한다. 하지만, 편의상 OTP뒷면의 업체번호와 기기번호가 비밀키로 사용된다.

사용자의 OTP를 매회 다르게 하기 위해서는 인증정보(현재시간, 누름횟수 등)를 OTP가 생성될 대에 비밀키와 동시에 연산되도록 한다. 인증정보는 OTP 생성기와 인증서버가 동일하게 유지되기 위해서 OTP를 사용할 때마다 자동 보정되어야 한다.

OTP 생성기에 나오는 번호는 시간, 함수, 은행의 특정 번호 등으로 조합을 바탕으로 미리 정해진 특정한 규칙에 따라 숫자를 생성하며, 서버쪽에서도 같은 규칙을 사용해서 암호를 만든다.

단지 달라지는 것은 현재 시간이며, 이 때문에 시간에 따라 계속 다른 암호를 사용할 수 있게 된다. 1)

암호화 규칙은 미리 정해진 것이기 때문에 이론적으로는

  1. OTP제조사
  2. OTP의 S/N
  3. 생성 규칙

등을 안다면, 암호를 복제해 낼 수도 있다.

장점

보안카드와 달리 OTP 생성기는 숫자가 미리 표시되어 있지 않고, 숫자 조합이 현재 시간에 의해서 결정되기 때문에 숫자를 유추하기가 어렵다.

단점

별도의 OTP 생성기를 소지해야 하는 불편함이 있다.

1)
OTP는 시간을 Seed 값으로 사용하기 때문에 OTP 토큰 안에는 전자시계와 OTP 생성기가 같이 들어있다고 보면 된다. 시계에서 생성된 시간과 토큰 고유의 Secret Key를 Seed 값으로 이용해 128bit 암호화 알고리즘과 OTP 생성 알고리즘을 통해 6자리의 비밀번호를 생성하게 된다.