Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

정리하는 공간

리눅스) HTTPS [이론] 본문

리눅스 기초

리눅스) HTTPS [이론]

개구리집 2022. 5. 12. 10:26
반응형

왜 https 서버를 쓰는가? 보안을 강화하기 위해서이다.

 

내가 인터넷으로 은행과 거래를 한다고 가정한다.

 

이때 http 서버로 패킷을 주고받는 다면 평론의 패킷을 주고받게 된다. 이는 보안에 취약하고

 

그래서 SSL/TLS를 http에 붙여 https 서버를 구축해 보안을 강화하는 것이다.

 

https = http + SSL/TLS

 

1. 암호학

 

대칭키

 

================================================

클라이언트                                                     서버

 

[평문+비밀키]

=>알고리즘을 거쳐   

    암호문 생성        

     

       암호문 ------------------------------->  [비밀키+받은 암호문]

                                                          => 알고르즘을 거쳐

                                                        클라이언트가 보낸 평문 생성   

==================================================     

 

문제점 : 클라이언트에서 보낸 암호문엔 평문과 키가 같이 담겨있어, 누군가 탈취할 수 있음

 

 

비대칭키                                                

 

클라이언트                                                         서버

 

[CA 공개키]

클라이언트는

모두 받아져 있음

 

어렵다..

SSL/TLS 암호 통신 방법

 

1단계, hello 교환 단계

 

-클라이언트가 사용가능한 암호화 방식(대칭키, 비대칭키)를 가지고 있다고, 의미 없는 데이터를 서버에 보낸다.

 

-이 데이터 안에는 서버가 SSL을 사용해 클라이언트와 연결하기 위한 모든 정보, 즉 암호화 알고리즘의 종류와 지원 가능한 SSL 버전 정보가 포함되어 있다.

 

-서버는 이에 대해 비슷한 정보가 포함된 헬로 메시지를 송신하고, 클라이언트와 같이 사용할 암호화 알고리즘 및 SSL 버전 정보가 포함되어 있다.

 

2단계, 인증서 교환

 

-서버는 자신의 신분을 증명할 SSL 인증서를 클라이언트에게 송신한다.

 

-이 SSL 인증서에는 소유자 이름, 서버 공개키, 전자서명, 유효기간 같은 정보가 있다.

 

-클라이언트는 이 인증서가 신뢰할 만한지 검증한다. (웹 브라우저를 설치하면 모든 브라우저엔 CA 공개키가 있는데, 이 CA공개키로 확인한다.)

 

-서버도 클라이언트를 인증할 때가 있다. 그럼 해당되는 웹브라우저에 서버에서 사용하는 공개키가 받아져 있어야 한다. (대부분 클라이언트가 서버 인증을 함.)

 

 

3단계, 키교환

 

-암호화 할 때는 보통 대칭키 암호화를 한다. 비대칭키는 키 관리도 힘들고, 암호화 복구화 키도 모두 다를 뿐더러 시간도 오래걸리기 때문이다. 비대칭키가 암호를 더 복잡하게 하긴 하지만, 이런 이유에서 대칭키 암호화를 한다.

 

-그래서 데이터 암호화는 대칭키 암호화 알고리즘으로 한다.

 

-클라이언트는 대칭키 알고리즘을 사용해 임의의 키(비밀키)를 생성하고, 이 키를 서버의 공개키로 암호화해서 서버로 보낸다.

 

-서버는 자신의 개인키를 사용해 수신된 임의의 키를 복호한 후 에 데이터 전송시 복호화된 평문을 보낸다.

LIST

'리눅스 기초' 카테고리의 다른 글

리눅스) DNS  (0) 2022.05.12
리눅스) HTTPS (SSL)[실습]  (0) 2022.05.12
리눅스) httpd.conf 지사자와 값들  (0) 2022.05.12
리눅스) wordpress 설치  (0) 2022.05.12
리눅스) 프록시 서버 [실습]  (0) 2022.05.12
Comments