OTP(일회용 비밀번호)란 무엇인가?
일회용 비밀번호(OTP, One-time Password)는 특정 인증 소프트웨어가 생성하는 고유한 패스키로, 한 번만 사용할 수 있는 일회성 암호다. 일반적인 정적 비밀번호와 달리 OTP는 동적으로 생성되며, 매번 새롭게 발급된다.
OTP는 2단계 인증(2FA)에서 중요한 역할을 한다. 2단계 인증은 사용자가 알고 있는 것(비밀번호)과 소지하고 있는 것(일회용 비밀번호)을 함께 제공하도록 요구해 보안을 강화한다.
핵심 내용
- 일회용 비밀번호는 단 한 번만 사용할 수 있는 고유한 패스키다.
- OTP는 주로 이중 인증(2FA) 체계에서 사용된다.
- 서버 측 OTP는 SMS, 이메일, 전화, 또는 푸시 알림을 통해 사용자에게 자동 전달된다.
- 클라이언트 측 OTP는 하드웨어 토큰 또는 인증 앱을 통해 생성된다.
- 보안 강화를 위해 대부분의 OTP는 60초 이내에 만료된다.
OTP 작동 방식
OTP의 작동 방식은 고유한 일회용 비밀번호가 서버 측에서 생성되는지 클라이언트 측에서 생성되는지에 따라 달라진다.
서버 측 OTP는 알고리즘과 비밀 키를 사용해 6자리 코드로 된 OTP를 생성한다. 사용자가 인증 자격 정보를 입력하면 서버는 데이터베이스와 대조해 사용자의 이름과 비밀번호를 확인한다. 자격 증명이 유효하면 서버는 OTP를 생성해 SMS 문자 메시지, 이메일 메시지, 전화 또는 푸시 알림 중 하나의 방법으로 사용자에게 전송한다.
클라이언트 측 OTP는 알고리즘과 비밀 키도 사용하지만, 설정 시 비밀 키를 사용자 인증 앱이나 USB 보안 토큰과 공유한다.
사용자가 토큰을 삽입하고 버튼을 누르거나 인증 앱을 열면 토큰 또는 앱이 OTP를 생성하고 서버는 동시에 동일한 OTP를 생성한다.
일회용 비밀번호를 받는 방법
일회용 비밀번호를 받는 방법은 서버 측 OTP 인증서를 사용하는지 클라이언트 측 OTP 인증서를 사용하는지에 따라 다르다.
- OTP 애플리케이션이 서버 측인 경우 일회용 비밀번호가 자동으로 사용자에게 전송된다.
- OTP 애플리케이션이 클라이언트 측인 경우 사용자는 인증 앱 또는 USB 보안 토큰으로 OTP를 생성해야 한다.
일반적으로 일회용 비밀번호용 하드웨어 토큰은 소프트웨어 기반 인증 앱보다 비용이 더 많이 든다. 또한 사용자의 고용주가 발급하는 경우가 많으며, 소형 기기인 만큼 분실 위험도 있다.
반면, 구글 인증 앱과 같은 인증 앱은 주요 앱 스토어에서 사용할 수 있으며 일반적으로 무료로 얻을 수 있다. 또한, 많은 비밀번호 관리자 또는 ID 및 액세스 관리 (IAM, Identity and Access Management) 보안 소프트웨어 제품군에는 인증기 기능이 내장되어 있다.
OTP의 유형
일회용 비밀번호는 일회용 비밀번호를 생성하는 데 HOTP 알고리즘을 사용하는지 또는 TOTP 알고리즘을 사용하는지에 따라 분류되는 경우가 많다.
OTP의 사용 사례
OTP는 다단계 인증 (MFA)을 위한 추가 인증 요소를 제공하는 것 외에도 다음과 같은 용도로 자주 사용된다:
- 새로운 지역 또는 새로운 기기에서 로그인한 경우 확인.
- 계정 세부정보의 변경 사항을 확인.
- 임시 비밀번호 대체 수단 제공.
- 고액 금융 거래 확인.
- 기본 로그인 수단으로 사용.
OTP 예시
“835172”는 일회용 비밀번호(OTP)의 예시다. 6자리 숫자에는 백만 가지 조합이 가능하기 때문에 대부분의 OTP는 6자리 숫자다. 따라서 공격자가 짧은 시간 내에 패스키를 추측하기 어렵다.
OTP의 이점
OTP는 사용자가 암호를 기억할 필요 없이 사용할 수 있어 비밀번호 피로도를 줄여준다. 대부분의 서버 측 및 클라이언트 측 OTP는 짧은 유효 기간을 가지므로, 무단 사용의 위험이 최소화된다.
일부 사용자는 OTP를 불편한 추가 단계라고 여길 수 있지만, 사이버 보안의 이점을 고려할 때 상대적으로 적은 불편에 해당한다.
OTP의 보안성
OTP는 재전송 공격(replay attack)의 성공 가능성을 크게 줄일 수 있다.
재전송 공격은 공격자가 유효한 인증 요청에서 사용자명과 비밀번호를 가로채 후에 무단 접근을 시도하는 형태의 사이버 공격이다.
그러나 OTP는 한 번만 사용할 수 있고, 대부분 30~60초 내에 만료되기 때문에 공격자가 OTP를 가로채더라도 이후의 인증 시도에 사용할 수 없다.
클라이언트 측 OTP와 서버 측 OTP 중 어떤 것을 선택할지는 최종 사용자가 원하는 보안 수준과 편의성에 따라 달라질 수 있다.
일반적으로 클라이언트 측 OTP가 서버 측 OTP보다 더 안전한데, 이는 OTP가 로컬에서 생성되므로 인터넷을 통해 전송될 필요가 없어 공격 표면이 줄어들기 때문이다.
그러나 서버 측 OTP는 구현 비용이 적고 사용이 직관적으로 사용할 수 있도록 설계되었으며, 많은 온라인 서비스 및 거래에 적합한 수준의 보안을 제공하기 때문에 더 널리 사용된다.
OTP의 장점 및 단점
일회용 비밀번호는 공격자가 침해하기 어려운 추가 인증 계층을 제공한다. 그러나 OTP는 추가 인증 단계를 요구하기 때문에 사용자 경험에 약간의 불편함을 초래할 수 있다.
따라서 OTP는 보안과 편의성 사이에서 균형을 이루는 것이 중요하며, 효과는 적절한 구현과 사용자의 사이버 보안 인식에 달려 있다.
- 이중 인증 요소 제공
- 보안성 향상
- 비밀번호 피로도 감소
- 광범위하게 구현
- 기존 인증 시스템과 통합하기 어려울 수 있음
- 최종 사용자에게 불편을 초래할 수 있음
결론
보안 맥락에서 OTP의 의미를 잘 모르는 사용자는 종종 OTP를 “전화 상에서(on the phone)”의 약자로 오해하기도 한다. 이는 많은 OTP가 서버 측에서 생성되어 문자 메시지로 전달되기 때문이다.
데스크톱 사용자가 작업을 멈추고, 휴대폰을 찾아 메시지를 확인한 후 시간 초과 전에 OTP를 입력하려고 하면, 사용자 경험(UX)이 저하될 수 있다. 사용자에게 OTP의 의미와 2차 인증 요소로서 OTP의 가치에 대해 교육하면 사용자의 불만을 완화하는 데 도움이 될 수 있다.