javaEE 기본 - HTTPS 프로토콜

HTTPS


HTTPS는 HTTP 프로토콜을 기반으로 하는 암호화 계층(SSL)을 도입하는 애플리케이션 계층 프로토콜 이기도 합니다.
HTTP 프로토콜의 내용은 일반 텍스트로 전송 되므로 전송 중에 일부 변조가 발생할 수 있습니다.


이것은 악명 높은 캐리어 .

캐리어 하이재킹이란 무엇입니까


예를 들어, 지금 소프트웨어를 다운로드하고 싶은데, 하이재킹되지 않은 경우 다운로드 버튼을 클릭하면 이 소프트웨어의 다운로드 링크가 팝업됩니다.
그러나 운영자 하이재킹이 발생하면 이때 다운로드 버튼을 클릭하면 다른 소프트웨어에 대한 다운로드 링크가 팝업됩니다.

당사가 네트워크를 통해 전송하는 모든 데이터 패킷은 운영자의 네트워크 장비(라우터, 스위치 등)를 통과하므로
운영자의 네트워크 장비는 귀하가 전송하는 데이터의 내용을 분석하고 변조할 수 있습니다.
"다운로드 버튼"을 클릭하면 실제로 서버에 HTTP 요청을 보내고 얻은 HTTP 응답에는 실제로 APP의 다운로드 링크가 포함됩니다.
운영자 하이재킹 후 요청이 앱을 다운로드하는 것임이 확인되어 자동으로 사용자에게 응답을 다른 소프트웨어의 다운로드 주소로 변경합니다. 이는 주로 ¥ 로 인한 운영자의 하이재킹



때문입니다 .


불쾌한 캐리어 하이재킹을 수정하는 방법은 무엇입니까?

답은 암호화 HTTPS는 HTTP를 기반으로 암호화하여 사용자 정보의 보안을 더욱 강화합니다~

암호화란 무엇인가


암호화는 평문 (전송할 정보 ) 일련의 변환을 수행하여 암호문을 생성하는 것입니다 .

복호화는 암호문에 대한 일련의 변환을 수행하고 평문 입니다 .


영화 '나이브스 아웃'을 보면 아버지가 딸에게 남편이 바람을 피우고 있다는 사실을 암호문으로 알리는 장면이 있다.
원래는 종이 한 장에 아무것도 없었지만 라이터로 구우자마자 손글씨가 나타났다.




아버지의 원래 의도의 의미는 딸에게 남편이 바람을 피웠다는 사실을 알리는 것이었지만 암호화된 메시지는 이 종이 한 장에 아무것도 남지 않았다는 것이었습니다.
손글씨는 불의 형태를 통해 드러나는데, 불의 근원이 열쇠 , 손글씨를 사라지게 하는 것은 암호화 , 제시하는 것은 복호화 .

HTTPS 작동 방식


네트워크 전송에서 평문은 더 이상 직접 전송되지 않고 암호화 후 "암호문"이 전송됩니다.

많은 암호화 방법이 있지만 전체는 대칭 암호화비대칭 암호화의 두 가지 범주로 나눌 수 있습니다 .

1 대칭 암호화


안전한 전송을 할 때 핵심은 암호화이며 대칭 암호화는 가장 간단하고 효과적인 방법입니다.

대칭 암호화는 키로 암호화되며 당연히 이 키로 복호화할 수 있습니다.

예를 들어 a(일반 텍스트) + 키(키) => b(암호문) , b(암호문) + 키(키) => a(일반 텍스트)

키 구성 요소는 숫자 문자열 또는 문자열 문자열로 간주될 수 있습니다. 암호화 과정에서 일반 텍스트와 문자열에 대해 일련의 수학적 변환이 수행되며
가장 간단한 것은 ^(비트 XOR) 입니다.


암호화 프로세스 동안 보안을 보장하기 위해 해커가 이를 알 수 없어야 합니다.


해커는 키가 무엇인지 모르기 때문에 데이터를 가로채더라도 그것이 무엇을 의미하는지 알 수 없습니다.

키는 클라이언트 또는 서버에서 생성됩니까?

서버는 다수의 클라이언트에 해당하므로 이들 클라이언트는 서로 다른 키를 가져야 함
클라이언트가 키를 생성한다고 가정할 때 클라이언트는 서버에 키를 알려야 함 이때 클라이언트는 키를 다음으로 전송해야 함 서버.

이때 키가 생성되었을 뿐이고 서버는 아직 이를 알지 못하기 때문에 여기에서 서버로의 전송은 일반 텍스트 .
이때 전송되는 키는 해커에 의해 가로챌 수 있습니다.



이때 고려해야 할 문제는 키를 서버에 안전하게 전송하는 방법이며 당연히 암호화 해야 합니다 .

여기에서 비대칭 .

2 비대칭 암호화


먼저 공개 키 개인 키로 나뉩니다 .

평문 + 공개키 => 암호문
암호문 + 개인키 => 평문

즉, 공개 키를 것이 암호화이고 개인 키를 것이 복호화이거나 그 반대입니다.




서버는 공개 키와 개인 키 쌍을 생성하고 클라이언트는 공개 키를 보유하고 서버는 개인 키를 보유합니다.
이때 클라이언트의 공개키는 서버에서 획득하는데, 공개키는 알 수 있지만 개인키는 서버만이 알고 있기 때문에 해커는 알 수 없다.

이때 클라이언트는 공개키를 이용하여 대칭키를 암호화하여 서버로 전송하는데, 이때 서버는 자신의 개인키로 복호화할 수 있으며 복호화 후 대칭키를 획득할 수 있다
.

이 시점에서 클라이언트 서버는 후속 전송에 이 대칭 키를 사용할 수 있습니다.


비대칭 암호화는 전송할 대칭 키를 암호화하는 데만 사용되기 때문에 클라이언트는 개인 키가 필요하지 않습니다 . 대칭 키가 성공적으로 서버에 도달하면 후속 전송은 대칭 암호화를 사용하여 암호화됩니다. 비대칭 암호화는 속도가 상대적으로 느리기 때문에 모든 비대칭 암호화를 사용할 수 없으며 보안을 전제로 최대한 속도를 높여야 합니다.



3 중간자 공격


서버가 클라이언트에게 공개 키를 보낼 수 있으므로 해커가 서버를 모방하여 클라이언트에 자신의 공개 키를 보낼 수 있습니까?
가능한 경우 이것은 실제로 중간자 공격 입니다.


클라이언트가 해커가 보낸 공개 키를 수신하면 이때 클라이언트는 암호화된 키를 해커에게 보냅니다.

예로서.

Zhang San은 마약 단속 경찰의 비밀 요원이고 Li Si는 마약상이며 다른 두 명의 마약상 A와 B가 있습니다.
A와 B는 서로를 알지 못하지만 둘 다 Li Si를 알고 있으며 Li Si는 중개자로 존재합니다.

Li Si는 먼저 Zhang San을 A와 만나기 위해 Zhang San이 이때 B를 연기했으며, Li Si는 Zhang San을 다시 B와 만나기 위해 Zhang San이 이때 A를 연기했습니다.
이때 AB와 AB가 거꾸로 만났을 때 자세한 내용은 이미 경찰에 알려졌기 때문에 한 번에 모두 잡을 수 있었다.


3.1 중간자 공격 방지


중간자 공격을 해결하는 열쇠는 클라이언트가 현재 공개 키가 서버의 공개 키인지 여부를 구별할 수 있도록 하는 것입니다. 이 시점에서 본질적으로 타사 인증 기관인
"인증서"를 도입할 수 있습니다 .

서버(웹사이트) 구축 초기에는 전문 인증 기관에 인증서 신청(일부 자격 제공)이 필요합니다.
심사를 통과하면 인증서가 발급되며 이 인증서에는 서버에서 생성한 공개 키가 포함됩니다.

이때 클라이언트는 서버에 공개키를 요청할 때 더 이상 단순히 공개키만 요청하는 것이 아니라 인증서 전체를 요청하게 된다.

클라이언트가 인증서를 받은 후 인증서를 확인하여 현재 인증서가 위조 또는 변조되었는지 여부를 확인할 수 있습니다.
인증서가 유효하지 않은 것으로 확인되면 브라우저에서 경고 상자를 직접 표시합니다.




클라이언트는 인증서를 받은 후 인증서를 확인할 수 있으며 인증서에는 인증서 서명 이라는 특정 필드가 있습니다 . 교사에게 휴가를 요청하려면 교사의 서명이 필요한 것처럼 학교 경비원은 서명이 교사의 서명인지 확인합니다.


인증서의 필드 1이 abc 이면 필드 2는 cde , 필드 3은 gdj , 공개 키는 0xaabbccdd...
인증서에는 sdbdsbcskdbskaskc라는 서명 도 있습니다.

여기서 서명은 실제로 인증 기관에서 제공한 공개 키를 사용하여 클라이언트가 해독할 수 있는 암호화된 문자열입니다.
복호화 후 얻은 결과는 해시 값과 동일합니다. tcp udp의 체크섬과 마찬가지로 인증서의 다른 필드 합계를 기반으로 계산된 결과입니다.


클라이언트는 동일한 해시 알고리즘을 사용하여 다른 필드에 대한 해시 값을 다시 계산하여 hash2를 얻을 수 있으며
hash1(서명에서 해결)과 hash2(클라이언트에서 계산)의 두 값이 동일하지 않음을 확인할 수 있습니다. ,
동일하면 인증서가 유효하고 그렇지 않으면 인증서가 변조된 것입니다.


인증 기관은 또한 일련의 공개 및 개인 키를 가지고 있으며 개인 키는 서명을 얻기 위해 해시 값을 암호화하는 데 사용되고 공개 키는 클라이언트가 서명을 해독하여 해시 값을 얻는 데 사용됩니다.

해커는 공개 키를 변경하는 등 인증서를 스스로 변조할 수 없습니다.
일단 공개 키가 변경되면 클라이언트가 계산한 hash2 값과 서명으로 복호화한 hash1 값이 일치하지 않으며 클라이언트는
이것이 유효하지 않음을 알게 됩니다.

또한 해커는 인증기관의 개인키를 알지 못하기 때문에 해커가 새로 변조된 해시 값을 계산하더라도
암호화하여 서명을 생성할 수 없다.




추천

출처blog.csdn.net/m0_63033419/article/details/129970886