대칭키, 비대칭키 [HTTP, HTTPS]

Lumi·2021년 11월 2일
0

이론적인 내용

목록 보기
7/13
post-thumbnail

기본적으로 HTTP는 통신 프로토콜이라는 것을 알수가 있다.

일단 기본적으로 대칭키 , 비대칭키로 암호화 하게 된다.

일단 널리 사용되어 왔던 방법은 대칭키이다.

🔥 대칭키

이는 서버와 클라이언트 간에 서로 똑같은 키를 가지고 있는 보안방법이다.

클라이언트 쪽에서 4*대칭키 = 12 이렇게 암호화된 데이터를 보내게 된다고 생각을 하면

  • 대칭키를 통해서 암호화를 하여 4가 12로 보내진다고 가정을 하는 것이다.

서버 쪽에서는 12 / 대칭키 = 3이렇게 복호화 하여 3이라는 정보를 받을수 있다.

우리가 이게 가능한 이유는 모두 똑같은 대칭키를 가지고 있기 떄문이다.

🔥 대칭키의 한계

보안의 목적은 해커로부터 데이터를 보호하는 것이다.

하지만 만약 이 키가 뺴앗기게 된다면 결국 키의 의미가 없을 것이다.

  • 해커도 복호화, 암호화를 모두 할 수 있기 때문에
  • 빼앗기는 방법은 일단 최초로 키를 전송을 해야하는데 그떄 해커가 빼앗아 갈수도 있다.

🔥 비대칭키 = 공개키

앞서 말했듯이 대칭키는 최초 키를 뺴앗기게 되면 아무런 필요가 없는 보안 방법이라는 것을 알수가 있고 이를 보완하기 위해 비대칭키가 등장하게 되었다.

보통 공개키라고도 한다.

대칭키는 A라는 같은키로 암호화 복호화를 모두 할수 있었지만

비대칭키는 A,B라는 두가지의 키를 가지며

A키로 암호화 하면 B키로만 복호화 가능,
B키로 암호화 하면 A키로만 복호화 가능하다.

서버쪽에서는 비밀키로 불리는 A라는 키를 보관을 하고

그후 공개키로 불리는 B라는 키는 사용자들에게 공개를 하게 된다.

일단 사용자 쪽에서 공개키(B)암호화 하여 서버에 보내게 되면 서버는 비밀키(A)르 복호화를 하여 사용할수가 있다.

  • 해킹을 당해도 문제가 없다. 왜냐면 공개키로 암호화된 정보는 반드시 비밀키로만 복호화 할수 있기 떄문에

그럼 반대로 사용자 입장에서 서버를 어떻게 믿을수 있을까??

서버에서 보내는 데이터는 일부가 서버의 개인키(비밀키)로 암호화 되어 있다.

사용자는 서버의 정보를 받고 공개키로 복호화 하여 서버를 확인한다.

  • 만약 타 서버에서 전송하는 정보는 내가 이용하는 서버의 공개키로는 열어볼수 없다.

🔥 CA

우리는 앞선 내용으로 보안이 어떻게 이루어 지는지 알게 되었다.

그러면 우리는 뭘 믿고 이 서버의 공개키를 이용하게 될까??

  • 다른 서버의 공개키 일수도 있다.

이러한 인증을 진행해주는 공인된 인증 기관을 CA라고 한다.

기본적으로 CA를 브라우저에 내장 되어 있다.

🔥 전반적인 통신 과정

클라이언트에서 A라는 데이터를 전송하면 서버에서는 B라는 데이터에 인증서를 담아서 응답을 해주게 된다.

그러면 클라이언트(브라우저)는 해당 인증서를 CA의 정보를 통해 확인하게 된다.

인증서는 CA의 개인키로 암호화가 되어 있지만 인증서가 사실이라면 브라우저에 저장된 CA의 공개키로 복호화를 할 수 있을 것이다.

이렇게 무난하게 진행 되었다고 가정을 해보자.

이렇게 복호화된 인증서에는 서버의 공캐키가 들어가 있다.

그후 통신은 대칭키 + 비대칭키 방식이 혼합되어서 사용이 된다.

  • 비대칭키 방식이 보안상으로 더 뛰어나지만 컴퓨터에 더 많은 부담을 주는 방법이다.

그러기 떄문에 통신은 대칭키로 이루어 지게 된다.

  • 앞서 말했듯이 대칭키는 최초 전달받는 과정에서 뺴앗길수가 있다.
  • 하지만 우리가 대칭키에 대한 정보를 비대칭키로 암호화하여 전송을 하게 된다면 해킹을 당해도 문제가 없다.

아까 CA를 진행하기 전에 데이터를 주고 받는 다는 것을 기억할 것이다.

그 주고 받은 데이터를 클라이언트에서 혼합하여 어떠한 임시키를 만들고 임시키를 서버의 공개키로 암호화해 서버에 보내게 된다.

  • 이러한 과정으로 대칭키를 가지게 된다.
profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글