이 포스트는 “HTTP 완벽가이드”의 “13장, 다이제스트 인증”을 정리한 내용입니다.
- 기본 인증은 편리하고 유연하지만 안전하지 못함
- 다이제스트 인증은 기본 인증과 호환되는 대체재로서 개발
- 널리 쓰이지는 않지만 개념은 보안트랜잭션의 구현에 유용함
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
이 포스트는 “HTTP 완벽가이드”의 “13장, 다이제스트 인증”을 정리한 내용입니다.
특징
단방향 다이제스트
재전송 방지를 위한 난스 사용
다이제스트 인증 핸드쉐이크
그림1. 다이제스트 인증 핸드셰이크
자료 출처:David Gourley and Brian Totty, "HTTP: The Definitive Guide (Definitive Guides)", O'Reilly, 2002
다이제스트 인증이 핵심은 공개된 정보, 비밀 정보, 시한부 난스 값을 조합한 단방한 요약
다이제스트 알고리즘의 입력 값
H(d) | 단방향 해시함수 |
KD(s,d) | 요약함수. s는 secret, d는 data를 의미 |
A1 | 비밀번호 등 보안 정보를 담고 있는 데이터 덩어리 |
A2 | 요청 메시지의 비밀이 아닌 속성을 담고 있는 데이터 덩어리 |
H(d)와 KD(s,d) 알고리즘
KD 요약 함수는 콜론으로 연결된 비밀 데이터와 일반데이터의 MD5를 계산
H(<데이터>) = MD5(<데이터>)
KD(<비밀>,<데이터>) = H(연결(<비밀>:<데이터>)
보안 관련 데이터(A1)
사용자 이름, 비밀번호, 보호 영역, 난스와 같은 비밀 보호 정보로 이루어짐
MD5: A1 = <사용자>:<영역>:<비밀번호>
MD5-sess: A1 = MD5(<사용자>:<영역>:<비밀번호>):<난스>:<c난스>
메시지 관련 데이터(A2)
qop(quality of protection)에 따라 A2의 두가지 사용법이 있음
정의되지 않음: <요청메서드>:<uri 지시자 값>
auth: <요청메서드>:<uri 지시자 값>
auth-int: <요청메서드>:<uri 지시자 값>
메시지 무결성 보호
다중 인증 요구
오류 처리
uri
지시자가 가리키는 리소스가 요청줄에 명시된 리소스와 같음을 확인해야함WWW-Authenticate 지시자들
realm | 사용자 이름과 비밀번호가 어디 사용될 것인지 알려주기 위해 사용자에게 보여질 문자열 |
nonce | 401 응답이 만들어질 때마다 유일하게 생성되어야 하는 서버에 특화된 데이터 문자열 |
domain | 보호될 공간을 정의한 따옴표로 감싸진 URI들의 공백으로 분리된 목록 |
opaque | 서버에 의해 정의된 데이터의 문자열, 클라이언트는 같은 보호 공간의 URI에 대한 다음번 요청에서 Authorizaiton 허더에 이 값을 담아 반환 |
stable | 클라이언트로부터의 이전 요청이 nonce 값이 신선하지 않아서 거부되었음을 의미하는 플래그 |
algorithm | 다이제스트와 체크섬을 생성할 때 사용하는 알고리즘, 기본 값은 MD5 |
qop | 선택적, 서버가 지원하는 보호 수준을 의미 |
Authorization 지시자들
username | 특정 realm에서의 사용자 이름 |
realm | WWW-Authenticte 헤더에 담겨 클라이언트에게 넘겨진 releam |
nonce | WWW- Authenticate 헤더에 담겨 클라이언트에게 넘겨진 nonce |
uri | 요청 URI에서의 URI, 프락시에 의해 요청이 변경될 수 있기 때문에 존재 |
response | 다이제스트 값, 사용자가 비밀번호를 알고 있음을 증명 |
algorithm | 다이제스트와 체크섬을 생성할 때 사용하는 알고리즘, 기본 값은 MD5 |
opaque | 서버에 의해 정의된 데이터의 문자열, 같은 보호 공간의 URI에 대한 다음번 요청에서 값을 그대로 넣어서 반환 |
cnonce | qop 지시자가 보내진 경우만 포함. 메시지 무결성 보호를 제공 |
qop | 클라이언트가 메세지에 적용한 “보호 수준”의 정도 |
nc | qop 지시자가 보낸 경우에만 포함. 클라이언트가 이 요청의 nonce값과 함께 보낸 요청들의 횟수 합계 |
Authentication-Info 지시자들
nextnonce | 미래의 인증 응답 시에 클라이언트가 사용해주기를 서버가 원하는 nonce |
qop | 서버에 의해 응답에 적용된 ‘보호 수준”의 정도 |
rspauth | response auth를 의미. 선택적인 응답 다이제스트가 들어있으며 이를 이용해 상호 인증을 지원 |
cnonce | 응답 대상인 클라이언트의 요청에 들어있는 값과 반드시 같아야 함 |
nc | 응답 대상인 클라이언트 요청에 들어있는 값과 반드시 같아야 함 |
RFC 2617,”HTTP Authentication: Basic and Digest Access Authentication”
출처: "HTTP 완벽가이드", 이응준, 정상일 옮김, 인사이트, 2014
SSH 인사이드 (0) | 2016.06.09 |
---|---|
HTTP 기본인증 (Basic authentication) (0) | 2015.09.20 |
HTTP 세션을 이용한 인증 (0) | 2015.06.04 |
HTTPS 설정 및 사설인증서 관련 글들 (0) | 2015.06.04 |
자바와 보안을 알기위한 스터디 (0) | 2015.04.27 |