Fall in IT.

2FA와 TOTP 기반 OTP 인증 시스템의 이해 본문

기타

2FA와 TOTP 기반 OTP 인증 시스템의 이해

D.Y 2025. 12. 19. 12:27
반응형

서비스 보안을 강화하기 위해 가장 보편적으로 사용되는 방법은 2FA(2-Factor Authentication, 2단계 인증)입니다.

오늘은 2FA의 핵심 기술 중 하나인 TOTP 방식의 OTP 인증 아키텍처와 그 작동 원리에 대해 정리해 보겠습니다.

 

1. 2FA(2단계 인증)란 무엇인가?

2FA는 사용자가 로그인을 시도할 때, 서로 다른 두 가지 방식의 인증 요소를 결합하여 본인임을 확인하는 절차입니다.

  • 1차 인증: 지식 기반 요소 (ID/Password)
  • 2차 인증: 소유 기반 요소 (OTP 코드, 하드웨어 토큰) 또는 생체 기반 요소 (지문, FaceID 등)

아이디와 비밀번호가 유출되더라도, 사용자가 물리적으로 소유한 기기(스마트폰 등)가 없다면 계정에 접근할 수 없도록 설계하는 것이 핵심입니다.

 

2. OTP와 TOTP의 동작 원리

  • OTP(One-Time Password)는 단 한 번만 유효한 비밀번호를 의미합니다. 그중에서도 가장 널리 쓰이는 방식이 TOTP(Time-based One-Time Password)입니다.
  • 생성 공식: TOTP = 알고리즘(Secret Key + 현재 시간)
  • 특징:
    • 비밀키(Secret Key)
      서버와 사용자 앱(Google Authenticator, Authy 등)이 공유하는 고유 키입니다. 서버에서 생성되고 QR코드를 통해 사용자 앱에 공유 됩니다.
    • 동기화
      서버와 앱은 동일한 비밀키와 '현재 시간'을 공유하므로, 네트워크 연결 없이도 동일한 6자리 숫자를 생성해낼 수 있습니다.
    • 유효 기간
      일반적으로 30초마다 새로운 코드가 생성되며, 지난 코드는 즉시 폐기됩니다.

 

3. 2FA OTP 아키텍처 및 구성 요소

OTP 시스템을 구축하기 위해서는 서버, 클라이언트, 그리고 인증 앱 간의 유기적인 흐름이 필요합니다.

  • 서버 (Server): 사용자별 Secret Key를 생성하고, DB에 안전하게 저장하고, 전송받은 OTP 번호를 검증하는 로직을 수행합니다.
  • 클라이언트 (Web/App): 사용자에게 QR 코드를 노출하여 OTP 앱에 등록을 유도하고, 인증 시 6자리 번호를 입력받는 인터페이스를 제공합니다.
  • OTP 앱 (Authenticator): 사용자의 스마트폰에 설치된 앱으로, QR 코드를 통해 Secret Key를 저장한 뒤 실시간으로 코드를 생성합니다.

 

4. 핵심 프로세스

① OTP 등록 단계 (Registration)

처음 2FA를 설정할 때 발생하는 과정입니다.

  1. 로그인: ID와 Password를 사용해서 서비스에 로그인 합니다.
  2. 2FA 설정: Secret Key 생성. 서버에서 사용자별로 고유한 랜덤 비밀키를 생성합니다.
  3. QR 코드 제공: 서버는 otpauth:// 프로토콜 형식을 사용하여 비밀키 정보를 담은 QR 코드를 클라이언트에 전달합니다.
  4. OTP 앱 등록: 사용자는 OTP 앱으로 QR 코드를 스캔하여 비밀키를 기기에 저장합니다.
  5. 저장: 서버는 해당 비밀키를 사용자의 계정 정보와 매핑하여 DB에 저장합니다.

 

② OTP 인증 단계 (Authentication)

로그인 시 본인 확인을 거치는 과정입니다.

  1. 코드 입력: 사용자는 자신의 OTP 앱에 떠 있는 6자리 숫자를 2차 로그인 화면에 입력합니다.
  2. 서버 검증: 서버는 DB에서 해당 사용자의 Secret Key를 조회합니다.
    • 현재 시간을 기준으로 서버 자체적으로 OTP 코드를 계산합니다.
  3. 비교 및 승인: 사용자가 입력한 값과 서버가 계산한 값이 일치하면 인증이 성공하며, 세션에 2FA 인증 완료 정보를 기록합니다.

 

주의사항 및 고려할 점

  • Secret Key 보안: 비밀키가 유출되면 2FA는 무용지물이 됩니다. DB 저장 시 반드시 암호화하여 저장해야 합니다.
  • 시간 동기화: TOTP는 시간에 의존하므로, 서버의 시스템 시간이 정확하지 않으면 인증에 실패할 수 있습니다. (NTP 등을 통한 시간 정기 동기화 권장)
  • 백업 플랜: 사용자가 휴대폰을 분실했을 경우를 대비하여 '복구 코드(Recovery Codes)'를 별도로 제공하는 것이 좋습니다.

 

 

반응형
Comments