Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

정보 보안의 핵심, 동적 암호(OTP) 인증이란 무엇일까?

동적 암호 인증이란?

동적 암호(Dynamic Password)는 '일회용 암호(One Time Password, OTP)'라고도 불립니다. 기존의 고정 암호(정적 암호) 방식은 도청(eavesdropping), 재전송 공격(replay attack), 위조, 암호 추측 등의 공격에 취약하다는 근본적인 한계를 안고 있었으며, 동적 암호 인증은 바로 이러한 문제를 해결하기 위해 등장한 기술입니다.

동적 암호가 보안을 강화하는 원리

동적 암호 방식에서는 로그인 과정마다 인증 정보에 변동 요소가 반영되어 매번 다른 인증 정보가 생성됩니다. 이를 통해 로그인 절차 전반의 정보 보안성이 크게 향상됩니다. 이 기술은 재전송 공격을 효과적으로 차단할 뿐만 아니라, 전송 중이나 데이터베이스에 저장된 상태에서 정적 암호가 유출되기 쉽다는 문제점까지 해결해 줍니다.

인증 서버로 전송되는 세 가지 정보

인증 서버 또는 KDC(Key Distribution Center, 키 분배 센터)로 전송되는 정보는 크게 세 가지입니다.

  • 사용자 ID (Principal ID)
  • 사용자 암호 (Principal Password)
  • 사용자 단말기의 현재 시스템 타임스탬프(timestamp)

이때 암호와 타임스탬프는 먼저 해시(hash) 처리된 후에 전송됩니다.

서버 측 검증 절차

서버는 접속한 사용자가 실제로 본인인지 확인합니다. 서버에는 정상적인 사용자 ID와 암호 쌍이 데이터베이스로 저장되어 있으며, 검증은 다음 순서로 진행됩니다.

  1. 재전송 공격 여부 확인: 타임스탬프를 비교하여 이전에 전송된 적 있는 요청인지 판별합니다.
  2. 암호 일치 여부 확인: 수신한 해시 값과 서버가 직접 생성한 해시 값을 비교하여 올바른 암호가 제출되었는지 검증합니다.

검증이 완료되면 다음 단계로 티켓(ticket)을 암호화하는 데 사용될 비밀키(secret key)를 생성합니다.

스마트카드 기반 동적 암호 생성

동적 암호 방식은 스마트카드의 연산 능력을 활용해 인증 시도마다 새로운 암호를 만들어냄으로써 기존 암호 방식을 한 단계 발전시킨 기술입니다. 스마트카드는 하루에도 여러 번 새로운 암호를 생성하며, 호스트(host) 측도 카드와 동일한 알고리즘을 구현하고 있기 때문에 언제든 해당 암호 토큰의 현재 유효한 암호를 파악할 수 있습니다.

시드(seed)와 초기화 코드

카드 발급 기관은 시스템 내 모든 카드를 초기화하면서 동기화 절차를 거쳐 초기화 코드, 즉 시드(seed)를 암호 토큰과 호스트 양쪽에 입력합니다. 시드와 암호 결정 알고리즘은 철저히 비밀로 관리됩니다. 각 카드의 시드 값과 초기화 코드는 모두 고유하기 때문에 두 카드가 같은 시각에 동일한 암호를 가질 일은 없습니다. 따라서 알고리즘, 시드, 초기화 값을 모르는 사람이 특정 시점의 유효한 암호를 예측하는 것은 사실상 불가능합니다.

인증 진행 과정

인증이 진행되면 암호 토큰은 현재 유효한 암호를 화면에 표시하고, 이 암호가 호스트로 전송됩니다. 호스트의 검증기(verifier)는 수신한 암호를 자신이 계산한 정상 값과 비교하며, 두 값이 일치하면 해당 카드를 승인합니다. 각 암호의 유효 기간이 짧고, 알고리즘이 카드마다 다르며 비밀로 유지되기 때문에 이 방식은 카드의 진위성(authenticity)을 확실하게 보장합니다.

CAD 없이 가능한 원격 로그인 인증

이 방식은 CAD(Card Acceptance Device, 카드 판독 장치) 없이도 인증을 수행할 수 있다는 장점이 있습니다. 대신 사용자가 컴퓨터 터미널에 카드 식별 번호와 암호를 직접 입력하여 원격 로그인을 진행할 수 있습니다. 이 인증 방식에 사용되는 스마트카드는 배터리와 디스플레이를 필수로 갖추어야 하며, 경우에 따라 키패드도 함께 탑재됩니다.