HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
👻
개발 기록
/
🐿️
HTTP 완벽 가이드
/
📘
13. 다이제스트 인증 (미완)
📘

13. 다이제스트 인증 (미완)

  • 기본 인증은 편리하고 유연하지만, 전혀 안전하지 않음.
  • 메세지를 위조하지 못하게 보호하려는 어떠한 시도도 하지 않음.
  • 다이제스트 인증은 기본 인증과 호환되는 더 안전한 대체재로서 개발됨.
  • 다이제스트 인증은 널리 쓰이지는 않지만, 그 개념은 보안 트랜잭션을 구현하고자 하는 이들에게 여전히 유용함.
 

특징 및 동작 원리

  • 특징
    • 비밀번호를 네트워크를 통해 평문으로 전송하지 않음.
    • 인증 체결을 가로채 재현하려는 악의적인 사람들을 차단함.
    • 메시지 내용 위조를 막는 것도 가능.
    • 그 외 여러 형태의 공격을 막음.
  • 공인인증서 등에 쓰이는 공개키 기반 메커니즘과 비교해 그다지 안전한 프로토콜은 아님.
  • 요청과 응답의 나머지 부분은 다른 누군가가 엿보는 게 가능함. 그래도 CRAM-MD5 등 다른 보안 체계들보다는 강력함.
💡
SSL을 이용한 암호화된 HTTP의 인기와 폭넓은 채택을 고려할 때, 다이제스트 인증의 필요성에 대한 논란이 계속됨.
  • 다이제스트 인증이 동작하는 방법 (실제보다 간략히 표현함).
    • 서버에 비밀번호를 보내는 대신, 비밀번호를 비가역적으로 뒤섞은 지문(fingerprint) 혹은 요약(digest)를 보냄.
    • 비밀번호는 네트워크에 전송되지 않음.
인증 시 비밀번호를 알아내기 어렵게 하기 위해 요약을 사용함.
인증 시 비밀번호를 알아내기 어렵게 하기 위해 요약을 사용함.
  1. 클라가 보호된 문서를 요구함.
  1. 서버는 클라가 비밀번호를 알고 있음을 증명하여 신원을 증명하기 전까지 문서 제공을 거부. 클라에게 사용자 이름과 요약된 형태의 비밀번호를 요구.
  1. 클라는 비밀번호의 요약을 전달하여 신원 증명. 서버는 모든 사용자의 비밀번호를 알고 있음. 클라가 제공한 요약과 서버가 스스로 계산한 요약이 일치하는지 비교하여 인증.
  1. 서버는 클라가 제공한 요약과 계산한 요약을 비교하여 일치하면 문서를 제공함.

단방향 요약

  • 요약은 단방향 함수로 동작함.
  • 가능한 무한 가지의 입력 값들을 유한한 범위의 압축으로 변환함. 두 개의 서로 다른 입력이 같은 다이제스트로 변환하는 충돌(collision)이 발생하기도 함(아주 희박).
  • 인기 있는 요약 함수 중 하나인 MD5(Message Digest #5)는 임의의 바이트 배열을 원래 길이와 상관 없이 128비트 요약으로 변환. 128비트는 종종 32글자의 16진수 문자로 표현됨.
    • notion image
  • 비밀번호 혹은 요약 둘중 하나만 가져도 나머지를 추측하기 쉽지 않음.
  • 요약 함수는 보통 암호 체크섬(cryptographic checksums)로 불리고, 단방향 해시 함수이거나 지문함수(fingerprint function)임.

재전송 방지를 위한 난스(nonce) 사용

  • 불투명 비밀번호 자체로는 가로채서 서버로 몇 번이고 재전송할 수 있으므로 안전하지 않음.
  • 재전송 공격을 방지하기 위해, 서버는 난스를 건네줆. 난스는 자주 바뀜.
  • 난스를 비밀번호에 섞으면 난스가 바뀔때 마다 요약도 바뀌게 됨. 따라서 비밀번호 요약이 특정한 난스 값에 대해서만 유효하게 만듦.
  • 자잘한 재전송 공격들이 난스를 쓰지 않는 다이제스트 인증을 기본 인증만큼 허약한 것으로 만듦.
  • 난스는 WWW-Authenticate 인증 요구에 담겨 서버에서 클라로 넘겨짐.

다이제스트 인증 핸드셰이크

notion image
  • 서버는 난스 값 계산.
    • 서버는 난스를 WWW-Authenticate 인증 요구 메시지에 담아 지원하는 알고리즘 목록과 함께 클라에 전송.
  • 클라는 알고리즘 선택, 비밀번호와 그 외 데이터에 대한 요약 계산.
    • Authorization 메시지에 요약을 담아 서버에 돌려줆.
    • 클라이언트 난스를 보내 서버가 인증하게 할 수 있음.
  • 서버는 요약, 선택한 알고리즘, 그 외 보조 데이터들을 받아 클라이언트가 했던 그대로 요약을 계산함.
    • 계산한 요약과 클라이언트의 요약이 같은지 확인.
    • 클라가 대칭적으로 서버에게 클라이언트 난스를 갖고 인증을 요구하면, 클라 요약이 만들어짐.
    • 서버는 클라이언트가 다음번 요약을 생성할 수 있도록 다음번 난스를 미리 계산해 클라에게 넘겨줄 수도 있음.
기본 인증 대 다이제스트 인증 문법
기본 인증 대 다이제스트 인증 문법
 
💡
다이제스트 인증의 내부 동작에 대해 좀 더 면밀히 살펴보자.
 

요약 계산

…