IT 그리고 정보보안/Knowledge base

OTP (One Time Password) 인증

plummmm 2021. 4. 16. 06:24
반응형

OTP를 이용한 사용자 인증에 대해 알아보자.

OTP란 One-Time Password의 약자로, 일회용으로 쓰고버리는 비밀번호라는 말이다.

그때 그때 난수를 생성하여 비밀번호로 사용하면 실시간으로 생기는 비밀번호니까 보안성이 아주 뛰어나다 볼 수 있다.

 

OTP를 이용한 방식에 몇가지 방법들이 있다. 하나씩 살펴보자.

 

1. Challenge-response method (질의-응답 방식)

서버에서 난수를 생성하여 임의의 수를 만들고 클라이언트에게 그 값을 전송하면

클라이언트가 그 값으로 OTP를 생성하여 응답한 값으로 인증하는 방식이다.

 

A를 클라이언트라고 보면 되고, B를 서버라고 봐라.

1. 최초 A와 B는 서로임을 검증할 수 있는 암호에 대해 동의한다.

2. A는 B에게 로그인 요청을 한다. "아무 난수나 보내봐 인증해줄라니까"

3. B는 A에게 N이라는 Nonce를 전송한다. (이건 난수다)

4. A는 B에게 N을 OTP 생성 함수를 돌려 다시 응답한다.

5. B는 OTP를 인증한다.

 

얘들은 문제점이 뭐냐면..

한번 OTP를 사용하고 인증값을 바꾸기전에는 값이 안바뀐다. 그래서 한번 유출되면 큰일난다.

 

2. S/Key method

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

이건 쉽게 설명해 질의-응답방식의 문제점을 해결한 것이다.

OTP를 한번에 한번만 사용하는 방법이다.

해시체인을 이용하여 인증할 때마다 다른 비밀번호를 사용하도록 그렇게 설계되었다.

그림을 보면 바로 이해를 할 수 있다. 

 

여튼 해시체인으로 시도할 때마다 다른 값이 나오므로 보안성이 뛰어나다 볼 수 있음.

여타 다른 OTP 종류도 있지만 가장 메이저한 방법들만 소개했음. 

반응형