>  기사  >  웹 프론트엔드  >  https 시대가 도래했는데 아직도 아무것도 모르시나요?

https 시대가 도래했는데 아직도 아무것도 모르시나요?

阿神
阿神원래의
2017-01-23 15:22:091250검색

이제 유명 주요 웹사이트를 열면 주소 표시줄에 작은 녹색 자물쇠가 추가된 것을 보셨나요?

https 시대가 도래했는데 아직도 아무것도 모르시나요?

그래 지금은 https, https 시대다.

그런데 https를 아시죠?

간단히 말하면 https는 SSL/TLS로 래핑된 http이므로 안전한 http입니다. 안전이란 무엇입니까? 안전한 네트워크 통신 환경에서는 다음 세 가지 문제를 해결해야 합니다.

1. 통신 내용의 기밀성

2. 통신 당사자의 신원에 대한 신뢰성

3. content

https는 이 세 가지 주요 문제(정확히 말하면 SSL)를 해결하기 위해 탄생했습니다. 이 세 가지 문제에 대한 솔루션을 각각 살펴보겠습니다.

통신 내용의 비밀 보장

통신 내용의 비밀은 암호화를 통해 보장되어야 함 . 우리의 인터넷 환경은 매우 투명하며 통신은 수신자에게 도달하기 전에 많은 경로를 거쳐야 합니다. 이 상황은 수업 중에 첫 번째 줄에 있는 샤오홍에게 쪽지를 건네는 것과 비슷합니다. 쪽지에는 "오늘 밤 자정에 놀이터에서 만나요"라고 직접 쓰지 않고 "같은 장소에서 만나요"라고 교묘하게 쓰게 될 것입니다. " 이 오래된 장소에 대해서는 당신과 Xiaohong만이 알고 있으므로 Xiaoming과 Xiaoli는 메모를 보더라도 이전 장소가 도서관인지 영어 코너인지 알 수 없습니다. 이것은 암호화이고 오래된 장소는 소위입니다. 열쇠.

물론 이 예는 그다지 정확하지는 않습니다. 쉽게 말하면 암호화와 복호화는 함수이고, 키는 이 함수의 매개변수이다. 예를 들어 간단한 암호화 함수 f(x)=x+b를 정의합니다. x는 입력 일반 텍스트이고 b는 키입니다. 해독 함수는 암호화 함수의 역함수, 즉 g(x)입니다. =x-b. b를 모르면 암호문을 보아도 실제 내용을 추측할 수 없으므로 암호화가 이루어집니다. 이런 종류의 암호화와 복호화는 동일한 키를 사용하는데, 이를 대칭암호라고 합니다

그런데 여기에서 매개변수 b가 어떻게 협상되나요?


당신과 샤오홍은 시간과 돈을 들여 b값에 합의할 수 있지만 실제 네트워크 환경에서는 당신과 샤오홍 사이에 직접적인 의사소통이 불가능하다. Xiaohong. 모든 통신 Xiao Ming과 Xiao Li에게 메모를 전달해야 한다면 어떻게 피할 수 있습니까? 여기서는 비대칭 암호화 알고리즘을 사용해야 합니다. 이 알고리즘에는 공개 키와 개인 키가 한 쌍으로 구성됩니다. 공개 키는 누구나 얻을 수 있는 키이고, 개인 키는 서버가 비공개로 보관하는 키입니다. 비대칭 암호화 알고리즘에서는 공개 키로 암호화된 내용은 개인 키로만 복호화할 수 있고, 개인 키로 암호화한 내용은 공개 키로만 복호화할 수 있습니다. 따라서 귀하가 Xiaohong의 공개 키를 사용하여 귀하의 메모를 암호화하면 Xiaoming, Xiaoli 및 귀하의 메모 전달을 돕는 다른 사람들이 해당 메모를 볼 때 해당 내용을 읽을 수 없습니다.

대칭 암호화 알고리즘은 암호화와 복호화에 동일한 비밀 키를 사용합니다. 비대칭 암호화 알고리즘은 암호화와 복호화에 두 개의 키가 필요하며 이 두 키가 공개 키(공개 키, 공개 키라고 함)입니다. 및 개인 키(개인 키, 개인 키라고 함). 비대칭 암호화 알고리즘의 원리가 궁금할 수도 있지만 여기서는 알고리즘에 대해 자세히 설명하지 않겠습니다. 관심 있는 학생들은 스스로 검색할 수 있습니다.

그럼 샤오홍도 답변을 암호화하고 싶다면 어떻게 해야 할까요?

샤오홍이 개인 키로 암호화하면 학급의 모든 사람이 공개 키를 알고, 공개 키로 개인 키를 해독할 수 있습니다. 이는 또한 모든 사람이 샤오홍의 메시지에 대한 응답을 해독할 수 있음을 의미합니다. 당신이 똑똑하다면 해결책을 생각했을 것입니다. 비대칭 암호화 알고리즘을 사용하여 Xiaohong에 대칭 키를 암호화하고 Xiaohong은 자신의 개인 키를 사용하여 대칭 키를 읽은 다음 이 대칭 키를 사용하여 대칭 암호화를 수행합니다. 즐거운 데이트를 할 수 있어요.

물론 https도 같은 역할을 합니다.

통신 당사자의 정체

암호화 후 통신 과정은 완벽해진 것 같은데요? 잠깐만요, 샤오홍의 공개키는 어떻게 세상에 알려지나요?

네트워크 환경에서 모든 정보 상호작용은 메모를 통해 이루어지며, 샤오홍의 공개키도 예외가 아닌데 샤오밍의 손을 거쳐 전환된다면 어떨까요? 당신의 손에 있는 Xiaohong 공개 키가 실제 Xiaohong 공개 키인지 어떻게 확인할 수 있나요? 학급의 미친 남자와 여자에 대한 메모가 다양한 방식으로 교환되는 것을 보고 오락 위원회 위원인 펑 자매가 나서기로 결정했습니다. Feng 자매는 자신의 신원을 증명하기 위해 모든 암호화된 통신에 인증서를 가지고 다닐 수 있는 방법을 고안했습니다. 이 증명서는 펑 자매가 학급의 모든 독신자들을 위해 특별히 만든 것입니다. 공개 키는 증명서에 들어 있으며 공개 키 외에 학생 번호와 같은 다양한 정보도 포함되어 있습니다. , 이름, 심지어 조디악 표지판, 키 및 치수까지. 증명서에는 커다란 신분 인장이 찍혀 있습니다. 이는 펑 자매의 고유 도장으로, 이 도장을 보면 상대방이 펑 자매임을 알 수 있습니다. 진짜 싱글.

이 정보를 통해 상대방이 Xiaohong인지 Ruhua인지 알 수 있습니다. 이것이 인증서 메커니즘입니다.

분명히 펑 자매님의 증명서에 있는 관인이 위조되었을 수도 있다는 의심을 품게 되실 것이며, 귀하의 의심은 정당합니다! 따라서 인증서의 공식 인감도 비대칭 암호화됩니다. 암호화 방법은 위에서 언급한 것과 정반대입니다. 즉, Feng 자매의 개인 키로 암호화하고 Feng 자매의 공개 키로 복호화하여 인증서의 진위 여부를 확인할 수 있습니다. 확인되었습니다. 이 공식 인장은 인증서의 디지털 서명입니다. 구체적으로는 해시 알고리즘을 사용하여 인증서의 다이제스트를 추출한 후 다이제스트를 암호화하는 프로세스입니다. 또한 증명서를 가지고 Feng 자매에게 직접 갈 수도 있으며 Feng 자매가 증명서의 유효성을 확인하는 데 도움을 줄 것입니다. (인증서에는 만료일이 있기 때문에 실제 인증서도 만료될 수 있으므로 주의가 필요합니다)

이 메커니즘은 꽤 완성된 것처럼 보이지만 보안 메커니즘을 구축하려면 모든 것을 의심해야 합니다. Feng 자매가 보장하는 것은 신뢰할 수 있습니다.

그런데 펑 자매가 정말 펑 자매인가요? ? ?

그리고 증명서는 실제로 만들기가 매우 쉽기 때문에 지하철 입구에서는 장당 10위안, 하버드와 스탠포드 모두 10위안입니다! 따라서 일부 회사에서는 유명한 12306과 같이 루트 CA 조직에 전혀 가지 않고 자체 인증서를 만들 것입니다. 또한 자신만의 인증서를 만들어 사용자가 다운로드하여 브라우저로 가져올 수 있도록 온라인에 게시할 수도 있지만 Feng 자매의 영향력이 없기 때문에 아무도 당신을 믿지 않을 것입니다. 물론 일부 사람들은 Feng 자매를 믿지도 않습니다. ...https 시대가 도래했는데 아직도 아무것도 모르시나요?

소통 내용 완성https 시대가 도래했는데 아직도 아무것도 모르시나요?

비밀번호도 추가되어 있고, 그리고 Feng 자매의 공식 인장도 찍혀 있습니다. 이 메커니즘이 딱 맞나요?

아니요아니요 생각해보세요. 당신을 좋아하는 샤오밍은 당신이 샤오홍에게 쪽지를 보내는 것을 보면 분명 기분이 좋지 않을 것입니다. 비록 그는 이해할 수는 없지만 그럴 수 있습니다. 여전히 비밀 텍스트를 변경하세요. 원래는 샤오홍에게 자정에 운동장에서 만나자고 하려고 했는데 샤오밍이 암호문의 앞부분을 삭제했고, 복호화한 후 우연히 "놀이터에서 만나자"라고 나오더군요. 그러자 샤오홍은 수업이 끝나자마자 놀이터로 달려갔습니다. , 그런데 당신은 샤워를 잘 하려고 기숙사로 달려갔습니다. . . 그러다가 샤오밍과 함께 도망쳤습니다~~

저희가 어떤 사이트를 방문하면 아무 이유 없이 운영자의 광고가 나오는 것은 모두가 깊이 이해하고 있다고 생각합니다. 연산자! ! 따라서 콘텐츠의 무결성도 보장되어야 합니다. 이는 비교적 간단합니다. 먼저 해시 알고리즘을 사용하여 콘텐츠 요약을 추출한 다음 요약을 암호화하여 디지털 서명을 확인하면 됩니다. 통신 내용의 무결성.

위는 https에서 사용되는 기술을 단순화한 것입니다. http 통신 프로세스는 다음과 같습니다.

https 시대가 도래했는데 아직도 아무것도 모르시나요?
일반 단계:

1. 클라이언트는 SSL 통신을 시작하기 위해 클라이언트 Hello 메시지를 보냅니다. 메시지에는 SSL 버전, 사용 가능한 알고리즘 목록, 키 길이 등

2. 서버가 SSL 통신을 지원하는 경우 Server Hello 메시지로 응답합니다. 메시지에는 SSL 버전과 협상된 암호화 및 복호화 알고리즘인 암호화 알고리즘 구성도 포함됩니다.

3. 그런 다음 서버는 인증서 메시지를 보냅니다. 즉, 인증서가 클라이언트로 전송됩니다.

4. 클라이언트는 클라이언트 키 교환 메시지를 보내고 3의 인증서 공개 키를 사용하여 사전 마스터 비밀 임의 비밀번호 문자열을 암호화한 후 통신을 위한 대칭 암호화에 이 비밀번호를 사용합니다.

5. 서버는 개인 키를 사용하여 성공적으로 복호화한 후 SSL 통신 환경이 설정되었음을 나타내는 응답을 반환합니다.

6. 그 다음은 정기적인 http C/S 통신입니다.

위에서 언급한 것처럼 3단계와 6단계에서는 다이제스트 및 서명 알고리즘을 사용하여 전달된 인증서와 통신 내용이 변조되지 않도록 합니다. 이 과정을 통해 https의 핵심은 암호화, 특히 키 정보 전송에 많이 사용되는 비대칭 암호화 알고리즘에 있음을 알 수 있습니다.

암호화를 이해하고, 네트워크의 투명성을 인식하고, 모든 것에 회의를 품고 나면 https 시스템을 이해하기가 더 쉬워집니다.

결론


최근 시스템에 http에 관련된 내용을 복습하기 위해 먼저 https의 기본원리를 소개합니다. 지식이 부족하고 부적절한 내용이 있어 수정해주시길 바랍니다. 실용적인 응용프로그램, 정적 서버 구성 등은 추후 소개하겠습니다~



부록


https에서 중간자 하이재킹을 피하는 방법은 무엇입니까?


누군가 귀하의 DNS 서버를 하이재킹하여 http://wwe.icbc.com을 그의 불법 웹사이트로 연결하거나 프록시 서버가 귀하를 그의 불법 웹사이트로 연결한다면 이는 중간자 공격입니다. https가 없으면 공격이 발생합니다. 그렇다면 https는 이러한 공격을 어떻게 방지합니까?

답은 인증서 인증을 통해서 입니다.

1. 인증서 신청 시 신청하는 도메인 이름에 대해 CA에서 제어 인증을 진행하기 때문에 옆에 있는 라오왕 홈페이지를 이용해 인증서 신청이 불가능합니다. 자신의 사이트를 해킹하더라도 Lao Wang은 인증서를 신청하기만 하면 알아낼 수 있습니다.

2. 권한 있는 CA에서 발급하지 않은 인증서를 위조한 경우 해당 인증서가 불법인지 확인할 때 브라우저에서 경고를 표시합니다. 물론 사용자는 기차표를 구하는 등의 작업을 계속할 수 있습니다. .

3. 실제 사이트의 인증서를 다운로드하면 인증서의 도메인 이름은 변경되지 않고 공개 키만 교체하면 브라우저에서 디지털 서명을 비교할 때 올바르지 않은 것으로 확인됩니다. 아무 말도 하지 않고 경찰에 신고하세요.

4. 중개자가 ICBC Home의 실제 인증서를 직접 사용하는 경우 클라이언트의 메시지를 받을 수는 있지만 암호를 해독할 수 없으므로 클라이언트의 요청에 응답할 수 없으므로 공격은 무효입니다!


인증서의 디지털 서명


해시 알고리즘 및 번호 전 나는 시그니처에 대해 잘 알지 못하지만, 시그니처를 이해하고 나니 원리는 꽤 간단하다는 것을 알게 되었습니다. 해시 알고리즘은 많은 양의 데이터를 고정 길이의 요약으로 변환할 수 있으며, 요약은 입력에 해당하며 입력이 변경되면 요약도 변경됩니다. 따라서 데이터에 해시 알고리즘을 적용하여 요약을 비교함으로써 데이터가 변조되었는지 여부를 확인할 수 있습니다. 인증서는 개인 키를 사용하여 다이제스트를 암호화한 다음, 클라이언트는 공개 키로 이를 해독하여 다이제스트를 얻을 수 있으며, 해시 알고리즘으로 계산된 다이제스트를 비교하여 인증서가 변조되었는지 여부를 확인할 수 있습니다. 반면, 공개 키와 개인 키가 쌍으로 되어 있기 때문에 변조된 인증서의 다이제스트를 얻을 수는 있지만 서명을 암호화할 수 없으므로 다이제스트와 암호화를 조합하여 인증서의 진위를 보장할 수 있습니다. 여기서 개인키는 인증서 발급 기관의 개인키로, 즉 CA 체인의 CA는 사용자 서버 인증서를 암호화하고, 상위 CA는 하위 CA의 인증서를 암호화하여 트러스트 링을 형성한다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.