Skip to main content

13. 다이제스트 인증

  • 기본 인증은 편리하고 유연하지만 전혀 안전하지 않습니다.
  • 다이제스트 인증은 기본 인증과 호환되는 더 안전한 대체재로서 개발되었습니다.

13.1 다이제스트 인증의 개선점#

다이제스트 인증의 특징은 다음과 같습니다.

  • 비밀번호를 절대로 네트워크를 통해 평문으로 전송하지 않습니다.
  • 인증 체결을 가로채서 재현하려는 악의적인 사람들을 차단합니다.
  • 구현하기에 따라서 메시지 내용 위조를 막는 것도 가능합니다.
  • 그 외 몇몇 잘 알려진 형태의 공격을 막습니다.

다이제스트 인증이 가장 안전한 프로토콜이 아니며, 그러한 요구사항들에는 전송 계층 보안(TLS)HTTPS가 더 적합한 프로토콜입니다.

다이제스트 인증은 기본 인증을 대체하기 위해 설계되었으며 LDAP, POP, IMAP 등보다 더 강력합니다. 다만, 다이제스트 인증은 널리 쓰이고 있지 않습니다.

비밀번호를 안전하게 지키기 위해 요약 사용하기#

  • 다이제스트 인증의 좌우명은 "절대로 비밀번호를 네트워크를 통해 보내지 않는다"입니다.
  • 비밀번호 대신 클라이언트는 비밀번호를 비가역적으로 뒤섞은 지문 혹은 요약(digest)를 보냅니다.

다이제스트 인증은 다음의 순으로 진행합니다.

다이제스트 인증

단방향 요약#

  • 요약은 '정보 본문의 압축' 입니다.
  • 요약은 단방향 함수로 동작하고, 일반적으로 입력 가능한 무한 가지의 모든 입력값들을 유한한 범위의 압축으로 변환합니다.
  • 요약 함수는 보통 암호 체크섬(cryptographic checksums)으로 불리며, 단방향 해시함수이거나 지문 함수(fingerprint function) 입니다.

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

  • 단방향 요약은 비밀번호를 그대로 전송할 필요없이 요약을 보내주고, 쉽게 해독할 수 없음을 보장받기만 하면 됩니다.
  • 그러나 악당이 요약을 가로쳐서 서버로 몇번이고 재전송할 수 있기 때문에 요약도 비밀번호 자체와 다름이 없습니다.
  • 이러한 재전송 공격을 방지하기 위해서 서버는 클라이언트에게 난스라고 불리는 특별한, 그리고 자주 바뀌는 증표를 건네줍니다.
  • 다이제스트 인증은 난스를 사용할 것을 요구합니다.
    • 난스는 WWW-Authenticate 인증요구에 담겨서 서버에서 클라이언트로 넘겨집니다.

다이제스트 인증 핸드세이크#

  • HTTP 다이제스트 인증 프로토콜은 기본 인증에서 사용하는 것과 비슷한 헤더를 사용하는 강화된 버전의 인증입니다.
  • 기존 헤더에 몇몇 새 옵션이 추가되었고, 선택적인 헤더인 Authorization-Info 가 추가되었습니다.

다이제스트 인증


13.2 요약 계산#

요약 알고리즘 입력 데이터#

H(d)와 KD(s,d) 알고리즘#

보안 관련 데이터 (A1)#

메시지 관련 데이터 (A2)#

요약 알고리즘 전반#

다이제스트 인증 세션#

사전(preemptive) 인가#

난스 선택#

상호 인증#


13.3 보호 수준(Quality of Protection) 향상#

메시지 무결성 보호#

다이제스트 인증 헤더#


13.4 실제 상황에 대한 고려#

다중 인증요구#

오류 처리#

보호 공간(Protection Space)#

URL 다시 쓰기#

캐시#


13.5 보안에 대한 고려사항#

헤더 부당 변경#

재전송 공격#

다중 인증 메커니즘#

사전(dictionary) 공격#

악의적인 프락시와 중간자 공격(Man-in-the-Middle Attack)#

선택 평문 공격#

비밀번호 저장#

Last updated on