우아한 테크코스/테크코스

[보안] 폼인증 vs Basic 인증 vs 다이제스트 인증

jamie. 2020. 2. 22. 19:01
반응형

폼 인증(FORM Autrhentication)

 HTTP의 폼으로 인증 페이지를 만든 것

폼 인증 단점

 프로그램을 만들어야 함

폼 인증 장점

 사용자에게 역할을 설정하고 역할에 따라 접속할 수 있는 화면을 제한하는 식의 기능 등을 제공할 수 있음

 세션과의 연동이 가능하므로 로그아웃 등의 기능을 구현할 수 있음

Basic 인증(Basic Authentication)

 브라우저가 표시하는 대화창

 브라우저에 따라 디자인은 다르지만 기능은 같음

 HTTP 규격의 일부로 규정되어 있는 가장 단순한 인증 시스템

 Base64를 이용해 HTTP 헤더에 넣을 수 있는 형태로 사용자 이름과 패스워드를 변환 (HTTP 헤더에 사용할 수 있는 문자는 한정되어 있기 때문)

Base64 : 임의의 정보를 알파벳이나 숫자 등 64가지 문자로 변환하기 위한 방식
변환 결과는 통상적인 무낮열로 취급할 수 있기 때문에 이메일에 이미지나 압축 파일 등 텍스트 이외의 정보를 첨부하는데 사용
// 입력한 ID / PW
ID : reader
PW : webtext

// 실제 헤더 (암호화 X, Base 64방식으로 변환한 것)
Authorization cmVhZGVyOndlYnRleHQ=

Basic 인증 장점

 웹 서버를 통해 제공되기 때문에 폼 인증처럼 프로그램을 만들지 않아도 브라우저 설정만으로 구현할 수 있음

Basic 인증 단점

 지정한 디렉터리 이하의 URL에 접속할 때 사용자 이름과 패스워드 입력을 요구하는 수준의 간단한 인증밖에 구현하지 못하기 때문에 폼 인증과 비교시 구현 가능한 기능의 폭이 좁음

 세션과의 연동이 불가능함

 패스워드가 그대로 송신되기 때문에 SSL을 이용한 암호화 통신과 조합하거나, 패스워드는 직접 주고받지 않는 다이제스트(Digest) 인증을 사용하는 것이 안전함

다이제스트 인증(Digest Authentication)

 사용자 이름이나 패스워드를 직접 송수신하지 않고 인증을 구현

 HTTP로 송수신되는 인증 정보는 무작위로 생성된 문자열이나 메시지 다이제스트 뿐이므로 설령 네트워크 도청을 당하더라도 패스워드를 역으로 계산하기란 불가능

Authroization: Digest username="reader",realm="Webtext",nonce="4k24kfi2043lsx",uri="/webtext/jamie/",cnonce="3k2jdir90wkgvnrk2ld9f023orj428gd",nc=000000001,responce="2lkd9fjdke92k459gkjdfg9432",qop="auth",opaque="fkjl2l34jkljdfklasdf92352d9"

 웹 서버를 통한 인증의 안전성을 향상시킬 수 있지만, HTTP 통신 자체는 암호화되지 않으니 주의(SSL/TLS를 사용해야 암호화)

순서

 1. 웹 서버가 논스(nonce)라고 부르는 무작위 문자열을 생성해 인증 요구와 함께 웹 브라우저에 보냄

 2. 웹 브라우저는 클라이언트 논스(cnonce)라고 부르는 무작위 문자열을 생성

 3. 웹 브라우저는 사용자가 입력한 ID, PW에 nonce와 cnonce를 합친 문자열의 메시지 다이제스트를 작성, 이것을 응답(response)이라고 함

 4. 웹 브라우저는 응답과 클라이언트 논스를 웹 서버에 돌려줌

 5. 웹 서버는 저장하고 있는 ID, PW, 논스와 함께 웹 브라우저에서 받은 클라이언트 논스로부터 메시지 다이제스트를 작성해 웹 브라우저로부터 받은 응답과 비교해 인증을 실시 

반응형