Network

HTTP Digest 인증과 토큰 기반 인증

behonestar 2015. 5. 10. 01:28

HTTP Digest 인증



출처 : David Gourley and Brian Totty, "HTTP: The Definitive Guide (Definitive Guides)", O'Reilly, 2002


특징

  1. HTTP header 내에 유저네임과 비밀번호를 암호화하여 전달하는 방식
  2. nonce를 사용하기 때문에 인증 체결을 가로채서 재현하지 못함
  3. 구현 방법에 따라 메시지 내용 위조 방지 가능


단점

  1. 해쉬 알고리즘으로 MD5를 사용하기 때문에 보안레벨이 낮음
    1. MD5 Dictonary 사이트
      1. MD5 해쉬값 입력 : 939e7578ed9e3c518a452acee763bce9
      2. 복호화된 해쉬값 : Mufasa:testrealm@host.com:Circle Of Life

  2. CSRF 공격에 취약
    1. 계정별 API 실행 권한을 설정하여 보완

  3. 로드 밸런싱 등의 목적으로 여러 대의 서버가 존재할 경우 세션 관리 기법 필요
    1. Sticky Session 사용 (AWS의 ELB가 지원)
    2. 세션 클러스팅 사용



토큰 기반 인증



출처 : 조대협의 블로그, http://bcho.tistory.com/887



특징

  1. 최초 1회만 계정 정보를 전송하고 이후에는 서버가 생성한 토큰을 사용하는 방식
    1. Digest 인증 사용하거나 더 강화된 Hash 알고리즘을 사용하여 비밀번호 관리
  2. 토큰이 노출되더라도 계정 정보는 보호할 수 있음
  3. OAuth 등의 인증 방식에서 사용


단점

  1. 제 3자가 토큰을 탈취하여 API 실행 가능 (세션 하이재킹)
    1. 토큰 만료 시간, 토큰에 매칭되는 IP 검사 등을 통해 보완
    2. 계정별 API 실행 권한 설정하여 보완
    3. Secure Cookie(Signed Cookie)로 토큰 전달하여 노큰 노출 방지
      1. 토큰을 Response Body가 아닌 Secure Cookie에 넣어서 전달
      2. Secure Cookie는 HTTPS를 통해서만 전송 가능
      3. Cookie에 HTTP ONLY 옵션을 추가하면 스크립트단에서 Cookie를 읽거나 조작할 수 없음
        Cookie는 Request 시 웹브라우저에 의해 자동 전송됨

  2. 로드 밸런싱 등의 목적으로 여러 대의 서버가 존재할 경우 토큰 관리 기법 필요




참고자료

  1. REST API의 이해와 설계-#3 API 보안
  2. 빠르게 훝어 보는 node.js - #4 웹개발 프레임웍 Express 1/2
  3. 보안: 크로스 사이트 요청 위조(Cross-Site Request Forgery) 공격 방지하기
  4. 오픈소스 데이터그리드를 이용한 서로 다른 WAS 간의 세션 클러스터링


'Network' 카테고리의 다른 글

tcp_tw_reuse와 SO_REUSEADDR의 차이  (0) 2017.02.08
OAuth2.0  (0) 2017.01.19
[TCP] window size full  (0) 2015.03.18
[gsoap] 웹서버 오버헤드를 줄이기 위한 gsoap 버퍼링 구현  (0) 2015.03.05
[gsoap] recv, send 함수 흐름  (0) 2015.02.27