HTTPS - HTTP의 암호화 버전

Ilhwanee·2022년 3월 31일
0

CS

목록 보기
1/27
post-thumbnail
post-custom-banner

HTTPS란?

  • HTTP(HyperText Transfer Protocol)에 보안 요소가 추가된 것
  • 암호화, 복호화를 사용하여 서버와 클라이언트 사이의 모든 통신 내용을 암호화
  • Body는 암호화되며 통신을 위한 Header는 암호화되지 않는다.


암호화 알고리즘

  • 메시지 다이제스트(Message Digest)
    • 메시지의 무결성 검사를 위하여 암호 해시 함수를 이용하여 생성하는 크기가 고정된 값
    • 비 예측성
      • 암호화된 값을 예측하는 것이 불가능
    • 역상 저항성
      • 암호화되기 전 값을 찾는것이 계산적으로 불가능
    • 충돌 저항성
      • 같은 해시 값을 생성하는 두 개의 입력 값을 찾는 것이 계산적으로 불가능
    • MD5, SHA-256, KECCAK-256 등

  • 대칭 키 암호(Symmetric-key Algorithm)
    • 암호화와 복호화에 같은 키를 사용하는 암호
    • 대칭 키를 비밀 키라고도 함
    • 암복호 속도가 매우 빠름
    • 대칭 키를 공유해야 하는 문제가 있음
    • AES128-CBC, AES256-GCM 등

  • 공개 키 암호(Public-key Algorithm)
    • 암호화와 복호화에 서로 다른 키(비대칭 키)를 사용하는 암호
    • 개인키와 공개 키, 공개 키는 개인 키로 유도하여 생성
    • 공개 키로 암호화 하고, 개인 키로 복호화 함
    • 암복호의 비용이 대칭 키 암호화에 비하여 매우 큼
    • DIFFIE-HELLMAN, RSA, ECC 등

  • 전자 서명(Digital Signature Algorithm)
    • 공개 키 암호화 방식을 이용한 서명
    • 개인 키로 서명하고, 공개 키로 검증
    • A는 원본 파일의 메시지 다이제스트를 구하고, 그 MD값을 A의 개인 키로 서명하여 B에게 원본 파일과 서명을 보냄
    • B는 이미 가지고 있는 A의 공개 키를 사용하여 A가 보내 온 원본 파일과 서명을 검증
    • RSA, ECDSA 등


인증서와 인증기관

  • 공개 키가 해당 서버의 것인지 믿을 수 있는 어떤 장치가 필요함
  • 인증서는 다름 아닌 서버의 공개 키를 권위있는 인증 기관이 서명한 증서
  • 인증서는 다음의 정보들의 조합
    • 서버의 공개 키
    • 도메인 이름을 비롯한 서버의 여러 정보들
    • 위의 두 가지를 합한 것을 인증 기관이 자신의 개인 키로 서명한 값
  • 인증 기관(CA)
    • 인증서를 발행하는 신뢰할 수 있는 상업적 기관
    • CA는 서버가 제출한 서류를 심사하여 자신의 개인 키로 서명한 값을 추가한 인증서를 생성하여 서버에게 매년 혹은 격년 단위로 돈을 받고 발급해 줌
    • 각 운영체제와 웹브라우저는 유명한 CA의 인증서(공개 키)를 미리 가지고 있음


키 교환 과정

  • 공개 키 암호화 방식을 이용하여 암호화되지 않은 통신망을 통해 대칭 키를 공유
  • 웹브라우저는 서버에게 공개 키를 달라고 함, 서버는 자신의 공개 키를 보냄
  • 웹브라우저는 대칭 키를 생성하여 서버의 공개 키로 암호화 한 후 서버에게 보냄
  • 서버는 웹브라우저가 보낸 암호화된 대칭 키를 자신의 개인 키로 복호화 하여 대칭 키를 얻음
  • 이 과정에서 공유된 대칭 키를 세션 키라고 함
  • 예시
    • A는 B에게 인증서(공개 키)를 달라고 함
    • B는 자신의 공개 키가 들어있는 권위있는 인증 기관이 인증한 인증서를 보냄
    • A는 자신이 이미 가지고 있는 인증 기관의 인증서(공개 키)로 B가 보내 온 인증서의 서명 값을 검증 후 일치하면 대칭 키를 생성하여 인증서에 포함된 B의 공개 키로 암호화해서 B에게 보냄
    • B는 A가 보내온 암호화된 대칭 키를 자신의 개인 키로 복호화 하여 대칭 키를 얻음
  • 따라서 암호화된 채널을 만들기 위해서는 클라이언트와 서버간 키 교환, 전자 서명, 암호 해시, 대칭 키 암호화 알고리즘이 서로 약속되어야 하고, 이 것을 암호 모음(CIPHER SUITE)이라고 함


중간자 공격

  • Man in the middle attack
  • 공격자가 통신 객체가 전송하는 공개 키를 자신의 공개 키로 바꾸는 것
  • 예시
    • A가 C에게 공개 키 요청하지만 B가 가로챔
    • B가 C에게 공개 키 요청, C가 B에게 C의 공개 키 전송
    • B가 A에게 B의 공개 키 전송
    • A는 아무것도 모른채 B의 공개 키로 암호화한 암호문을 다시 B가 가로챔
    • B는 B의 공개 키로 A의 암호문을 복호화
    • B는 복호화한 평문을 다시 C의 공개 키로 암호화하여 C에게 전송


profile
블로그 이전 -> https://pppp0722.github.io
post-custom-banner

0개의 댓글