오늘 Yahoo에서 작업할 때 타사 도구를 사용하여 클라이언트와 서버 간의 통신을 가로챌 수 없다는 사실을 발견했습니다. 자세히 살펴보니 이런 상황은 한 번도 발생하지 않았습니다. URL 요청은 https를 기반으로 했습니다. gg 이후에 https 프로토콜과 http 사이에 큰 차이가 있음을 발견했습니다. 일반적으로 http가 더 효율적이고 https가 더 안전합니다.
먼저 HTTPS가 무엇인지부터 알아보겠습니다.
HTTPS(Secure Hypertext Transfer Protocol) Secure Hypertext Transfer Protocol입니다. HTTP를 기반으로 개발되어 클라이언트 컴퓨터와 서버 간에 정보를 교환하는 데 사용되는 보안 통신 채널입니다. 정보 교환을 위해 단순히 HTTP의 보안 버전인 SSL(Secure Sockets Layer)을 사용합니다. Netscape에서 개발하여 브라우저에 내장되었으며 데이터를 압축 및 압축 해제하고 네트워크를 통해 다시 전송된 결과를 반환하는 데 사용됩니다. HTTPS는 실제로 Netscape의 SSL(Secure Socket Layer)을 HTTP 애플리케이션 계층의 하위 계층으로 사용합니다. (HTTPS는 TCP/IP와 통신할 때 HTTP처럼 포트 80 대신 포트 443을 사용합니다.) SSL은 비즈니스 정보를 암호화하는 데 적합한 RC4 스트림 암호화 알고리즘으로 40비트 키워드를 사용합니다. HTTPS 및 SSL은 X.509 디지털 인증 사용을 지원하므로 사용자는 필요한 경우 보낸 사람이 누구인지 확인할 수 있습니다.
HTTPS와 HTTP의 차이점:
https 프로토콜에서는 CA로부터 인증서를 신청해야 합니다. 일반적으로 무료 인증서가 거의 없으며 수수료를 지불해야 합니다. http는 하이퍼텍스트 전송 프로토콜로 정보는 일반 텍스트로 전송되는 반면, https는 안전한 SSL 암호화 전송 프로토콜입니다. http와 https는 완전히 다른 연결 방법과 다른 포트를 사용합니다. 전자는 80이고 후자는 443입니다.
http 연결은 매우 간단합니다. 이는 SSL+HTTP 프로토콜로 구축된 네트워크 프로토콜로, HTTP 프로토콜보다 더 안전합니다. HTTPS가 해결하는 문제:
1. 호스트 신뢰 문제. https를 사용하는 서버는 해당 서버에 대해 인증서를 사용할 경우에만 CA로부터 인증서를 신청해야 합니다. 클라이언트는 보조 호스트를 신뢰하므로 현재 시스템 웹 사이트와 주요 응용 프로그램은 모두 https입니다. 인증서를 신뢰함으로써 고객은 실제로 매우 비효율적이지만 은행은 보안에 더 많은 관심을 기울입니다. . 이는 우리에게 아무런 의미가 없습니다. 우리 서버는 인증서가 자체적으로 발급되었는지, 공공 장소에서 발급되었는지에 관계없이 클라이언트가 자체 소유이므로 서버를 신뢰해야 합니다.
2. 통신 과정 중 데이터 유출 및 변조
일반적으로 https는 서버에 인증서가 있다는 의미입니다.
a) 주요 목적은 해당 서버가 자신이 주장하는 서버인지 확인하는 것입니다. 이는 첫 번째 사항과 동일합니다.
b) 서버 측 클라이언트와의 모든 통신은 암호화됩니다. 즉, 클라이언트는 대칭 키를 생성하고 서버의 인증서를 통해 키를 교환합니다. 일반적인 의미의 핸드쉐이크 과정 ii. 모든 정보 교환은 암호화됩니다. 제3자가 가로채더라도 당연히 변조할 이유가 없습니다. 🎜>클라이언트에 대한 요구 사항이 있는 경우 클라이언트는 인증서가 있어야 합니다.
a) 여기서 클라이언트 인증서는 실제로 사용자 이름 외에 개인 정보를 표시할 때와 유사합니다. /password, CA 인증 아이덴티티도 있어야 합니다. 일반적으로 인증서는 타인이 흉내낼 수 없기 때문에 더욱 심층적으로 본인의 신원을 확인할 수 있습니다.
b) 현재 몇 가지 전문 버전이 있습니다. 의 개인 은행이 이 접근 방식을 채택합니다. 예를 들어 제가 사용하는 Bank of Communications의 온라인 뱅킹은 이 방법을 채택합니다. HTTPS는 번거롭습니다. a) 원래의 단순 http 프로토콜은 키를 반환하고 암호화 알고리즘을 확인하기 위해 https가 필요하기 때문에 모든 애플리케이션에서 6/7 왕복이 필요합니다. , 너무 많음 왕복은 확실히 성능에 영향을 미칩니다. b) 다음은 특정 http 프로토콜입니다. 모든 응답이나 요청은 클라이언트와 서버가 세션 콘텐츠를 암호화/암호 해독해야 합니다. 여전히 CPU를 너무 많이 소모하므로 이를 위한 특수 SSL 칩이 있습니다. CPU 성능이 상대적으로 낮으면 성능이 확실히 저하되고 더 많은 요청이 처리되지 않습니다.
SSL은 Netscape에서 제안한 보안 및 기밀성 프로토콜로, 데이터 전송을 위해 브라우저(예: Internet Explorer, Netscape Navigator)와 웹 서버(예: Netscape의 Netscape Enterprise Server, ColdFusion Server 등) 간에 보안 채널을 구성합니다. , SSL은 TCP/IP 계층 위와 애플리케이션 계층 아래에서 실행되어 애플리케이션에 암호화된 데이터 채널을 제공합니다. SSL은 RC4, MD5 및 RSA와 같은 암호화 알고리즘을 사용하며 암호화에 적합한 40비트 키를 사용합니다. 사업정보. 동시에 Netscape는 이에 따라 HTTPS 프로토콜을 개발하여 브라우저에 내장했습니다. HTTPS는 실제로 HTTP를 통한 SSL입니다. TCP/IP와 통신하기 위해 HTTP와 같은 포트 80을 사용하는 대신 기본 포트 443을 사용합니다. HTTPS 프로토콜은 SSL을 사용하여 보낸 사람의 원본 데이터를 암호화한 다음 받는 사람에서 이를 해독합니다. 암호화 및 암호 해독을 위해서는 보낸 사람과 받는 사람이 서로 알고 있는 키를 교환해야 합니다. 따라서 전송된 데이터는 네트워크 해커에 의해 쉽게 해킹되지 않습니다. 해독. 그러나 암호화 및 복호화 프로세스에는 많은 시스템 오버헤드가 필요하고 시스템 성능이 심각하게 저하됩니다. 관련 테스트 데이터에 따르면 HTTPS 프로토콜을 사용한 데이터 전송 효율성은 HTTP 프로토콜을 사용한 것의 10분의 1에 불과합니다. 보안과 기밀 유지를 위해 웹사이트의 모든 웹 애플리케이션이 암호화를 위한 SSL 기술을 활성화하고 전송에 HTTPS 프로토콜을 사용하는 경우 웹사이트의 성능과 효율성이 크게 저하되므로 그럴 필요가 없습니다. 일반적으로 모든 데이터에 그렇게 높은 수준의 보안과 기밀성이 필요한 것은 아니기 때문에 기밀 데이터와 관련된 대화형 처리에는 HTTPS 프로토콜만 사용하면 두 가지 장점을 모두 누릴 수 있습니다. 즉, https를 사용할 필요가 없다면 사용하지 않는 것이 좋습니다.