사용자:Nonametag/연습장

위키백과, 우리 모두의 백과사전.

OTP는 일회성으로 사용하는 비밀번호로, One-time password의 약자이다.

용도[편집]

OTP는 주로 높은 수준의 보안을 유지하며 사용자를 인증해야 할 필요가 있을 때 사용되며, 그 일반적인 경우는 아래와 같다.[1][2]

도입 배경[편집]

OTP 이외의 사용자 인증 수단으로는 사용자 아이디암호를 이용한 방식, 추가적인 질의응답을 이용한 방식 등 여러 가지가 있는데, 대부분 한 번 인증값이 유출되고 나면 인증값을 바꾸기 전에는 해킹을 당하기 쉽다는 문제점을 가지고 있다. 이를 보완하기 위한 인증 수단으로 보안 카드가 있지만, 이 역시 정해진 수십여 개의 번호를 사용할 뿐이므로 여전히 유출에 의한 위험성을 가지고 있다.[3]
이에 따라, 한 번 생성되면 그 인증값이 임시적으로 한 번에 한해서만 유효한 OTP 방식을 도입하게 되었다.

생성 및 인증 방식[편집]

S/KEY 방식[편집]

벨 통신 연구소에서 개발한 OTP 생성 방식으로, 유닉스 계열 운영 체제에서 인증에 사용되고 있다. 그 생성 알고리즘은 아래와 같다.

  1. 클라이언트에서 정한 임의의 비밀키를 서버로 전송한다.
  2. 클라이언트로부터 받은 비밀키를 첫 값으로 사용하여, 해시 체인 방식으로, 이전 결과 값에 대한 해시 값을 구하는 작업을 n번 반복한다.
  3. 그렇게 생성된 n개의 비밀키를 서버에 저장한다.

또한 이를 통해, 클라이언트에서 i번째로 서버에 인증을 요구할 때의 인증 방식은 아래와 같다.

  1. 클라이언트에서 정한 비밀키에 해시 함수를 n-i번 중첩 적용하여 서버로 전송한다.
  2. 서버에서는 클라이언트로부터 받은 값에 해시 함수를 한 번 적용하여, 그 결과가 서버에 저장된 n-i+1번째 비밀키와 일치하는지 검사한다.
  3. 일치하면 인증에 성공한 것으로, 카운트를 1 증가시킨다.

해시 체인에 기반하고 있는 이 알고리즘은, 해시 함수의 역연산을 하기 어렵다는 점에 착안하여 만들어졌다.
해킹에 의해 클라이언트에서 서버로 전송되는 값이 노출된다 해도, 그 값은 일회용이므로 다시 사용될 수 없다. 또한 그 다음 인증을 위해서는 그 전에 전송된 값보다 해시 함수가 한 번 적게 적용된 값을 사용해야 하는데, 그 값을 유추하는 것 또한 매우 어렵다.
다만 생성했던 OTP를 모두 소진하면 다시 새로 설정을 해야 하며, 서버에 저장돼 있는 비밀키 목록이 유출될 경우 보안에 대단히 취약해진다는 단점이 있다.[4]

주석[편집]

  1. 허미혜. “당신의 비밀번호를 지켜 준다, OTP”. IT동아. 2012년 11월 30일에 확인함. 
  2. “One Time Password (OTP)”. 2012년 11월 30일에 확인함. 
  3. “공인인증/OTP안내”. 2012년 12월 3일에 확인함. 
  4. Chris Walsh. “The S/Key Password System”. 2012년 12월 7일에 확인함.