✊ 필오의 개발일지
Back to Posts
2019년 11월 24일

다이제스트 인증 (1) - 다이제스트 인증과 특징

다이제스트 인증 (1) - 다이제스트 인증과 특징

TL;DR


자세히…



기본 인증의 개선한 다이제스트 인증


MD5 해쉬의 경우에는 특히나 Dictionary Attack에 취약한데, Dictionary Attack이란, Hash된 값과 원래 값을 Dictionary (사전) 데이터 베이스로 유지해놓고, Hash 값으로 원본 메시지를 검색하는 방식 (출처: 조대협의 블로그 )


1. 다이제스트 인증의 특징

1.1 단방향 요약

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



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

  1. 1단계
  1. 2단계
  1. 3단계
  1. 4단계
  1. 5단계


3. 요약 계산

3.1 요약 알고리즘과 입력 데이터

요약은 다음 3가지 요소로부터 계산된다. A1, A2 두 조각의 데이터는 요약을 생성하기 위해 H와 KD에 의해 처리됨

  1. action: 함수들

  2. 단방향 해시 함수 H(d)

  3. 요약 함수 KD(s,d) // s는 비밀, d는 data

  4. core: 데이터

  5. 보안정보 데이터

    • 비밀번호 등 보안 정보를 담고 있는 데이터 덩어리 (A1이라 칭하자)
  6. 요청메세지의 비밀 외의 속성 데이터

    • 요청 메세지의 비밀이 아닌 속성을 담고 있는 데이터 덩어리 (A2이라 칭하자)

보안 관련 데이터 A1

메세지 관련 데이터 A2

H와 KD 알고리즘

// 개인적으로 빠른 인지를 위해 자바스크립트 문법 사용 KD = (비밀, 데이터) => H(연결(비밀:데이터)) // 요약 함수 H = (데이터) => MD5(데이터) // 해시함수

요약 알고리즘 전반

RFC7616 2617은 주어진 H, KD, A1, A2로 요약을 계산하는 방법에는, **난스 횟수 집계(nc) 및 대칭 인증의 지원(qop)**을 포함한다.

response = <"> < KD ( H(A1), unq(nonce) ":" nc ":" unq(cnonce) ":" unq(qop) ":" H(A2) ) <">

3.2 다이제스트 인증 세션

3.3 사전 인가 preemptive


  1. 서버가 다음 난스를 Authentication-Info 성공 헤더에 담아서 미리 보낸다.
  2. 서버가 짧은 시간 동안 같은 난스를 재사용하는 것을 허용한다.
  3. 클라가 서버와 동기화되어 있고 예층 가능한 난스 생성 알고리즘을 사용한다.

1. 다음 난스 미리 생성하기

Authentication-Info: nextnonce="<난스 값>"

장/단점


2. 제한된 난스 재사용

장/단점


3. 동기화된 난스 생성



3.4 nonce 어떻게 사용할까 선택.

// RFC 7616 기준 BASE64(time-stamp H(time-stamp ":" ETag ":" secret-data))

3.5 상호 인증



4. 보호 수준 향상 Quality of Protection

  1. 서버는 우선 WWW-Authenticate 헤더에 qop 옵션을 수비표로 구분된 목록 형태로 내보낸다.
  2. 클라는 그 옵션들 중 지원할 수 있으면서 동시에 자신의 요구에도 맞는 것을 선택하고 Authorization 헤더의 qop 필드에 담아 돌려준다.

메세지 무결성 보호 auth-init



참고자료

PreviousHTTPS 이해를 위한 디지털 암호학
Next기본 인증

Related

© 2025 Felix