[Today I Learn] - 대칭키와 비대칭키, HTTP와 HTTPS

치맨·2023년 1월 23일
0

[Today I Learn] - CS

목록 보기
6/12
post-thumbnail

목차

대칭키란

  • 대칭키란 이름에서 알 수 있듯이 암호화, 복호화를 동일(대칭)한 경우 입니다.

  • 서로 같은 키를 공유합니다 → 메세지를 같은 키를 통해 암호화해서 보냅니다. → 받은 정보를 다시 같은 키를 활용해 복호화 합니다.


대칭키의 장단점

  • 대칭키의 장점

    • 같은키로만 복호화가 가능하기 때문에 안전합니다.
    • 암호화 속도가 빠릅니다.
  • 대칭키의 단점

    • 어쨌든 서로 같은키를 가지기 위해 한번은 공유 해야하는데 이 과정에서 누가 키를 가져간다면(해킹 당하면) 암호화가 의미가 없어집니다.
    • 암호화 속도가 느립니다.
    • 각각의 키를 소유해야되기 때문에, 키가 많아지면 관리가 어려워집니다.

비대칭키란

  • 비대칭키에는 개인키,공개키 서로 다른 두개의 키가 존재하고, 개인키로 암호화하면 공개키로만 복호화 할 수 있고, 반대로 공개키로 암호화 하면 개인키로만 복호화를 할 수 있습니다.

  • 예를 들어 사용자, 네이버가 정보를 공유한다고 가정하겠습니다.
    네이버는 공개키를 공개합니다 → 사용자가 공개키를 활용해 암호화한 정보를 보냅니다 → 네이버는 정보를 개인키로 복호화해서 사용합니다.


비대칭키의 장단점

  • 비대칭키의 장점

    • 공개키를 모두에게 공개하기 때문에 중간에 암호화된 정보를 가로채도 의미가 없습니다.

    • 개인키로만 복호화할 수 있기 때문에 개인키를 가지고있는 수신자만이 암호화된 데이터를 복호화할 수 있으므로 일종의 인증기능도 제공

    • 키분배와 키관리가 용이합니다.

  • 대칭키의 단점

    • 키의 길이가 길고 연산 속도가 느립니다.
    • 암호화 할 수 있는 길이의 제한이 있습니다.

HTTP란

  • HTTP란 Hyper Text Transfer Protocol의 약자로서 HyperText를 전송하는 규약입니다. 물론 HyperText뿐만 아니라 다양한 Data들을 전송합니다.

  • 좀 더 쉽게 설명하면 사용자(클라이언트)와 서버간의 Data들을 주고받는 약속 입니다.

  • 이와 같이 사용자와 서버간의 Data를 HTTP 형식으로 주고 받습니다.

구글사전
프로토콜이란 : 복수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기 위해 필요한 통신 규약. 신호 송신의 순서, 데이터의 표현법, 오류(誤謬) 검출법 등을 정함. 통신 규약(通信規約).


HTTPS란

  • HTTPS란 Hyper Text Transfer Protocol Secure의 약자로서HTTP로 주고받는 Data를 더 안전하게 주고받을 수 있도록 합니다.

  • HTTPS는 SSL을 사용하여 보안성이 좋습니다.

    1. 서버와 브라우저 사이의 정보를 교환할 때 암호화 해줍니다.
      HTTP는 그냥 데이터를 주고받았다면, HTTPS는 데이터를 암호화 해서 주고받습니다.

    2. 접속한 사이트가 믿을만한 사이트인지 알 수 있습니다. 왜냐하면 기관으로 부터 검증된 사이트만 HTTPS 주소를 사용할 수 있기 때문입니다.

  • HTTPS는 검색엔진 최적화에 좋습니다. 구글은 검색 순위 보상을 넘어 SSL 인증서가 없는 사이트에게 불이익을 주기 시작했기 때문입니다.


SSL과TSL

  • 웹서버와 웹브라우저간의 보안을 위해 만든 프로토콜이며 대칭키와 비대칭키를 혼합하여 사용합니다.

  • TSL은 SSL을 보완하여 만든 것 이지만, 통상적으로 SSL,TSL 모두 SSL로 부릅니다.


SSL 통신 과정

  • SSL은 공개키 방식으로 대칭키를 전달합니다.

  • 대칭키와 공개키의 장단점을 혼합하여 대칭키를 안전하게 전달하고, 대칭키로 암호화 및 복호화를 하여 시간을 줄일 수 있습니다.

  • 사진을 통해 추가적으로 설명 해보겠습니다.
    설명하기에 앞서 사용자, 사이트, 인증기관 3가지를 예를 들겠습니다.

  1. 사이트는 CA라고 하는 인증기관에게 사이트 공개키, 사이트 정보를 보냅니다.
  1. CA 인증기관은 개인키로 사이트 정보에 대해 인증을 하고, 인증서를 사이트에 보냅니다. 동시에 사용자에겐 인증기관 공개키를 전달합니다.
  1. 사용자사이트에 접속 요청을 보내면, 사이트사용자에게 사이트 인증서를 보냅니다. 이 과정을 handshake 라고 합니다.
  1. 사용자는 사이트 인증서를 인증기관 공개키로 복호화 하여 사이트 정보, 사이트 공개키를 얻습니다.
  1. 사용자는 대칭키를 사이트 공개키를 통해 암호화하여 사이트로 보냅니다.

  2. 사이트는 개인키를 통해 받은 대칭키를 복호화 하여 대칭키를 가지게 됩니다.

  3. 대칭키를 안전하게 잘 전달받은 뒤, 대칭키를 통해 암호화 및 복호화하여 Data를 주고받습니다.

Ref

profile
기본기가 탄탄한 개발자가 되자!

0개의 댓글