본문 바로가기

스프링 Security/정리

(스프링 Security)HTTPS

B가 A에게 안녕이라는 문자를 보낸다고 가정하자 그런데 중간에 해커가 정보를 가로챈다면 문제가 생긴다.

 

기존의 HTTP는 안녕이라는 문자를를 보내면 안녕이라는 문자가 그대로 흘러서 상대방에게 갔었다.

그래서 중간에 탈취해서 정보를 보면 안녕이라는 문자가 확인이 가능했다.

이를 방지하게 위해 HTTPS라는것이 생겼는데, HTTPS 는 HTTP에 secure를 더하여 보안성이 올라간 형식이다.

 

우리는 우리가 사용중인 웹페이지가 HTTPS인지 손쉽게 확인이 가능한데 크롬 유저라면 좌측 상단을 확인해보자.

 

 

 

자물쇠 버튼을 눌러보면 사이트가 HTTPS를 사용중인것을 확인할수 있을것이다.

 

 

HTTPS는 SSL이나 TLS 프로토콜을 사용하여 키교환을 하게 된다. HTTPS는 보안성을 올리기 위해 키라는 것으로 인증절차를 거치게 된다.

 

키는 공개키와 개인키 두가지로 나눌수가 있다.

말 그대로 공개키는 모든 사람에게 공개된 키이며 개인키는 나만 알고있는 키이다.

 

A가 B로부터 정보를 받는 상황이 라고 먼저 가정해 보자(A B가 바뀌면 아래 설명을 반대로 생각하자)

A가 정보를 받을때 A는 개인키와 공개키 두개를 동시에 생성한다. 그런 이유로 A가 만든 개인키와 공개키는 서로 해석를 할수 있는 한쌍인 것이다.

 

이때 A의 개인키는 A가 가지고 있고 A의 공개키를 B에게 보내게 된다. 하지만 중간에 해커가 가로챌수 있는데 아래 설명하겠다.

 

B는 받은 공개키를 사용하여 예를들어 안녕이라는 문자를 ga46b16y6**-~642 뭐 이런식으로 암호화 하여 누가봐도 알수없고 해석이 불가능 하게 만든다.

 

A에게 통신할때 암호화된 문자를 보내게 된다. 그럼 A는 개인키를 사용하여 해독하는데 이걸 복호화 라고 부른다.

 

여기서 의문이 들수가 있다. 공개키는 공용으로 뿌려져 있는데 중간에 해커가 가져다 쓰면 어떻함?

A와 B 둘다 공개키를 사용하는 대칭키라면 그렇게 될것이다 하지만 개인키와 공개키를 쓰는 비대칭키는 불가능하다.

A의 공개키는 해커가 중간에 훔칠수가 있으니 B와 해커가 가지고 있다고 하자.

B가 A에게 A의 공개키를 사용하여 암호화를 하였다. B가 암호화된 정보를 A에게 보내는데 이때도 해커가 가로챌수가 있다.

 

A는 성공적으로 암호화 문서를 개인키를 사용하여 복호화 하지만 해커는 개인키가 없어서 불가능하다.

위에 설명했듯 AB 모두 공개키를 사용하면 해커가 해독이 가능하지만 비대칭형은 개인키 공개키 두가지로 암호 복호가 일어나기에 개인키가 없는 해커는 복호화가 불가능하다.

 

 

 

 

전자서명이라고 아는가? 사전적으로 말하면 송신자의 개인키로 서명하고 송신자와 수신자가 모두 가지고 있는 공개키로 검증하는 과정. 이라고 말할수 있는데 간단하게 말하면 우리가 웹사이트에 로그인 할때 쓰는 간편인증이다.

 

 

로그인 할때 이런 화면을 본적이 있을것이다. 이게 전자서명이라고 생각하면 된다.

 

전자서명도 사전적 의미 처럼 사용자가 진짜로 맞는지 확인하는 작업인데 원리는 비슷하다.

 

A가 이번에도 개인키와 공개키를 만들었다 그런데 B라는 서버에 보낼 인증 정보를 개인키와 인증정보를 섞어서(암호화 해서) B라는 서버에 암호화 정보를 보내게 된다.

 

B는 정상적으로 받고 A의 공개키를 사용하여 A의 요청이 사실임을 확인하고 전자서명이 맞다고 판단하게 된다.

 

 

그런데 이번에는 해커가 자신만의 개인키와 공개키를 사용하여 암호문을 만든뒤에 B에게 보낸다고 생각해보자.

 

하지만 소용은 없을 것이다. 해커가 보낸 정보는 A가 보낸 공개키로 복호화가 되질 않으니 말이다.

 

 

 

 

추가로 처음에 설명하였던 HTTPS를 확인하는 화면에서 이 사이트는 보안연결이 사용되었다는 글씨를 누르면 인증서를 확인할수가 있는데

이 처럼 발급 기관을 확인할수가 있다.

 

인증서는 무엇이고 발급기관은 무엇일까?

 

우리가 구글에 접속을 할때 우리 컴퓨터는 이 사이트가 진짜 구글인지 의심을 하고 시작한다. 우리는 의심을 풀기 위해 랜덤한 정보를 구글에 보내게 되고 구글 또한 랜덤한 정보와 인증서 라는 것을 우리에게 보내주게 된다.

 

이 과정이 마치 악수 같아서 handshake라고 부르고 있다.

 

그럼 우리는 구글이 보낸 인증서가 진품인지 확인하기 위해 CA(certificate authority) 라는 인증 기관을 통하여 확인을 하게 되는데 이때 위의 전자 서명 처럼 진위를 확인하게 된다.

 

CA 업체 들은 크롬이나 엣지 파이어폭스등 브라우저들에 기본적으로 탑재되어 있다.

 

위의 사진도 Thawte TLS RSA CA라고 써였지 않은가? 쏘트라는 회사에서 구글은 진짜다! 라고 인증을 해주고 있는 것이다.

 

만약 인증되지 않은 페이지에 접속하게 된다면 이런 화면을 마주 한적이 있을것이다.

 

ㅎㅎㅎ...조심하자

'스프링 Security > 정리' 카테고리의 다른 글

(스프링 Security) 세션과 JWT  (1) 2023.01.19