인증이란 누가 엑세스 하고 있는지 알 수 없다
상대방에게 이름을 알려달라고 해야 한다
다만 상대방에게 확인을 하더라도 실재로 누구인지는 알 수 없다
실제로 알기 위해서는 본인 인증을 해야 한다
단 위의 정보를 제시할 수 있다면 본인이 아니더라도 인증을 통과하게 된다
BASIC 인증은 HTTP/1.0 에 구현된 인증 방식으로 현재 일부 사용되고 있다
BASIC 인증은 웹 서버에 대응하고 있는 클라이언트 사이에서 이뤄지는 인증 방식
BASIC 인증에서는 Base64 라는 인코딩 형식을 사용하고 있지만 암호화가 아니기 때문에
아무런 부가 정보 없이 복호화 할 수 있다
HTTPS 등에서 암호화되지 않은 통신 경로 상 BASIC 인증이 도청된 경우
복호화된 유저 ID 와 패스워드를 뺴앗길 가능성이 있다
한 번 BASIC 인증을 하면 일반 브라우저에서는 로그아웃할 수 없다
BASIC 인증은 사용상 문제와 보안 등급에 미치지 못한다는 면에서 그다지 사용되고 있지는 않다
HTTP/1.1 에 소개되어 있다
BASIC 인증의 약점을 보안한다
DIGEST 인증에는 챌린지 응답 방식이 사용되고 있어
BASIC 인증과 같이 패스워드를 있는 그대로 보내는 일은 없다
챌린지 응답 방식은 최초 상대방에게 인증 요구를 보내고 상대방 측에서 받은 챌린지 코드를 사용해
응답 코드를 계산한다 이 값을 상대에게 송신하여 인증을 하는 방식이다
응답 코드라는 패스워드와 챌린지 코드를 이용해서 계산한 결과를 상대에게 보내기 때문에
BASIC 인증과 같은 방식에 비하면 패스워드가 누출될 가능성이 줄어든다
DIGEST 인증도 BASIC 인증과 마찬가지로 사용상 문제와 보안 등급이 미치지 못한다는 점에서
잘 사용되지 않는다
SSL 클라이언트 인증은 HTTPS 의 클라이언트 인증서를 이용한 인증 방식으로
사전에 등록된 클라이언트에서의 엑세스인지 아닌지를 확인할 수 있다
SSL 클라이언트 인증 시 사전에 클라이언트 증명서를 배포하고 설치해야 한다
SSL 클라이언트 인증은 대부분의 경우 단독으로 사용되지 않고
이후 다룰 폼 베이스 인증과 합쳐 2-factor 인증의 하나로 이용되고 있다
2-factor 인증은 두 가지 인증 방식을 병용하여 인증 하는 방법이다
SSL 클라이언트 인증을 사용하여 클라이언트 컴퓨터를 인증하고 패스워드 등을 사용하여 유저 본인 확인을 한다
SSL 클라이언트 인증에는 클라이언트 증명서를 이용할 필요가 있다
클라이언트 증명서에는 비용이 필요하다
이 경우에 비용은 인증 기관에서 클라이언트 증명서를 구입하는 비용이나
안전하게 운용하기 위해 들어가는 비용이다
폼 베이스 인증은 HTTP 프로토콜로 사양이 정의되어 있는 인증 방식은 아니다
클라이언트가 서버 상 웹 애플리케이션에 자격 정보를 송신하여
그 자격 정보의 검증 결과에 따라 인증 하는 방식이다
웹 애플리케이션에 따라 제공되는 인터페이스나 인증 방법이 다양하다
대부분의 경우에는 사전 등록해 둔 자격 정보인 유저 ID 와 패스워드를 입력하여 검증을 한다
HTTP 표준인 BASIC 이나 DIGEST 인증은 사용 문제와 보안적 문제로 거의 사용되지 않는다
SSL 클라이언트 인증은 비용 문제로 널리 사용되기는 어렵다
웹 사이트 인증 기능으로 요구되는 표준이 없기 때문에
웹 애플리케이션에서 제각각 구현하는 폼 베이스 인증을 채용할 수 밖에 없다
공통 사양이 결정되어 있지 않기 때문에 서비스 별로 다르게 구현되어 있다
그렇기 때문에 안전하지 않은 웹 사이트도 종종 발견할 수 있다
폼 베이스 인증은 표준적인 사양이 결정되어 있지 않지만 일반적으로 자주 사용되고 있는 방법은
세션 관리를 위해 쿠키를 사용하는 방법이 있다
폼 베이스 인증의 인증 자체는 서버 측 웹 애플리케이션 등에 의해 클라이언트가
송신해온 유저 ID 와 패스워드가 사전에 등록하고 있는 것과 일치하느지를 검증하면서 이루어진다
HTTP 는 스테이스리스 프로토콜이기 때문에 방금 전에 인증을 성공했던 유저라는 상태를 유지할 수 없다
때문에 세션 관리와 쿠키를 사용하여 상태 관리 기능을 보충한다
폼 베이스 인증에서는 자격 정보를 교환하는 방법은 표준화되어 있지 않다
일반적으로 패스워드에 salt 라는 부가 정보를 사용하여 해시 값을 저장한다