OTP(One-Time Password)는 일회용 비밀번호 시스템으로, 각 사용자에게 고유하며 한 번 사용 후 무효화되는 비밀번호를 제공합니다. 이는 전통적인 고정 비밀번호 시스템의 취약점을 보완하기 위해 개발되었습니다. OTP 시스템의 원리는 다음과 같습니다:
시간 기반 OTP (TOTP, Time-Based One-Time Password): 이 방식은 현재 시간을 기반으로 OTP를 생성합니다. 사용자와 인증 서버 양쪽에서 같은 알고리즘과 초기 공유 비밀을 사용하여 현재 시간을 기반으로 OTP를 생성합니다. 일반적으로, 이 OTP는 30초에서 60초 사이에 만료되어 새로운 OTP가 생성됩니다.
이벤트 기반 OTP (HOTP, HMAC-Based One-Time Password): 이 방식은 특정 이벤트(예: 버튼 누르기)가 발생할 때마다 새로운 OTP를 생성합니다. 이때 사용되는 알고리즘은 HMAC (Keyed-Hash Message Authentication Code)을 기반으로 하며, 각 OTP는 이전 OTP에 기반하여 생성됩니다.
SMS 기반 OTP: 이 방식은 사용자의 휴대폰으로 SMS를 통해 OTP를 전송합니다. 사용자는 로그인 과정에서 이 OTP를 입력하여 인증을 완료합니다. 이 방식은 추가적인 앱이나 하드웨어가 필요하지 않기 때문에 널리 사용됩니다.
앱 기반 OTP: 구글 인증기나 마이크로소프트 인증기와 같은 애플리케이션을 사용하여 OTP를 생성합니다. 이 앱들은 보통 시간 기반 OTP를 사용하며, 사용자의 스마트폰에 설치되어 인터넷 연결 없이도 OTP를 생성할 수 있습니다.
OTP 시스템은 공격자가 기존의 고정된 비밀번호를 획득하더라도 유효한 OTP를 가지고 있지 않으면 접근이 불가능하게 만들어 보안성을 높입니다. 그러나 OTP 시스템 역시 피싱, 중간자 공격, SMS 인터셉트 등의 방법으로 공격당할 수 있으므로, 사용자의 주의와 함께 다중 인증 방식을 병행하는 것이 좋습니다.