当前位置: 首页 > 科技观察

看透HTTPS,筑起坚不可摧的城堡

时间:2023-03-17 14:52:20 科技观察

为什么要用HTTPS?因为HTTP不安全!互联网不再是“田园时代”,“黑暗森林”已经到来。上网记录很容易被截取,无法验证网站的真实性。黑客可以冒充银行网站窃取真实姓名、密码、银行卡等敏感信息,威胁人身安全和财产安全。上网时,一定要步步为营,否则就会被不知潜伏在何处的黑客“追杀”。HTTPS是如何实现安全通信的?如何打造一座坚不可摧的网络城堡?涉及的主要知识点如下:理解什么是HTTPS,什么是安全通信对称加密和非对称加密,摘要算法,数字签名,完整性验证迁移HTTPS的必要性到底是什么?什么是安全?踏踏实实做事。老司机【码哥字节】安全驾驶!不管是穿杜蕾斯还是安全气囊,“安全最重要”!在通信过程中,具有以下特点被认为是安全的:机密性、完整性、不可否认性、身份认证机密数据必须保密,只有信任的人才能阅读,其他人是不可见的秘密。诸葛亮的密报一定不能让司马懿知道,否则就是上当了。通俗地说:就是不让不相干的人看到不该看到的东西。完整性也叫一致性,即数据在传输过程中没有被非法篡改,内容不能多也不能少,保持不变。比如张无忌原来说:“赵敏,你好。”周芷若抓住了发信息的飞鸽,截获了信息,改成“赵敏,去死吧!”。这样一来,倚天屠龙记就有可能被改写。不可否认意味着不可否认,不可能否认已经发生的事情。所谓“君子之言难从也”。“懒惰”是不可能发生的。就像殷芷萍跟小龙女有过亲密接触,事后一直隐瞒否认,假装不知道,这是万万不能接受的。所以它最终打嗝了。鉴权是为了确认对方的真实身份,“证明你真的是你”,确保信息是发给可信任的人,而不是非法的人。比如令狐冲给任盈盈写了一封情书:“盈盈,冲哥爱你”,岳不群看到快递小哥,冒充令狐冲截住情书,回信说:“笨蛋,做白日梦”。令狐冲不知道这是岳不群的回信,还以为是任盈盈的回信,小傲江湖又要重写……所以同时,它具有保密性、完整性、身份认证四大特点,和交通不便。只有安全得到保障,才是真正的安全。什么是HTTPS至此,终于轮到HTTPS上台了,也就是在HTTP的基础上增加了刚才说的四大安全特性。HTTPS其实是一个“非常简单”的协议,它规定了一个新的协议名称“https”,默认的端口号是443。至于其他的请求-响应模式、消息结构、请求方法、URI、头字段、连接管理,etc.etc.完全遵循HTTP,没有什么新鲜事。唯一的区别是端口号不同,去掉了明文传输。那么为什么HTTPS会变得安全呢?因为他在TCP/IP和HTTP之间加入了SSL/TLS,从原来的HTTPoverTCP/IP变成了HTTPoverSSL/TLS,让HTTP在安全的SSL/TLS协议上安全的运行在Drive上。http和https,所以重点是掌握什么使SSL/TLS安全。SSL/TLSSSL即安全套接字层(SecureSocketsLayer),在OSI模型中处于第五层(会话层)。Netscape于1994年发明,有v2和v3两个版本,v1存在严重缺陷。从来没有公开过。当SSL发展到v3时,已经证明它是一个非常好的安全通信协议,于是互联网工程组IETF在1999年更名为TLS(TransportLayerSecurity,传输层安全),正式标准化,版本号为从1.0更改为Counting,因此TLS1.0实际上是SSLv3.1。TLS由记录协议、握手协议、警告协议、更改密码规范协议、扩展协议等几个子协议组成。它采用了对称加密、非对称加密、身份认证等多项前沿密码学技术。浏览器和服务器在使用TLS建立连接时,实际上是选择了一套加密算法来实现安全通信。这些算法组合被称为“密码套件(ciphersuite)”。套件名称非常规则,例如“ECDHE-RSA-AES256-GCM-SHA384”。它由密钥交换算法+签名算法+对称加密算法+摘要算法组成。所以这个套件的意思是:使用ECDHE算法进行密钥交换,使用RSA签名和认证,握手后使用AES对称加密,密钥长度256位、分组方式GCM、消息鉴权、使用摘要算法SHA384生成随机数对称加密和非对称加密实现安全的四个必要条件,我们先说保密性,即消息只能给谁想要。人们可以看到和理解。实现机密性的手段是加密(encrypt),即使用加密算法将原始明文消息转换为其他人无法理解的密文。只有拥有唯一密钥的人才能解密原来的内容。诸葛亮好像把给关二爷的密报内容改成了其他的r的内容经过了算法的转换,但司马懿看不懂。关二爷掌握着解密内容的秘钥。密钥就是密钥(key),未加密的信息称为明文(plaintext/cleartext),加密后的内容称为密文,通过密钥对原始文本进行解密的过程称为解密,整个过程加解密就是加密算法。由于HTTPS和TLS都在计算机上运行,??因此“密钥”是一长串数字,但常规的计量单位是“位”而不是“字节”。例如Thekeylengthis128,isa16-bytebinarystring,andthekeylengthis1024,itisa128-bytebinarystring.通常有两种加密算法:对称加密和非对称加密。对称加密的加密和解密使用的密钥是一样的,是“对称”的。只要双方保证没有其他人知道密钥,通信就是保密的。常见的对称加密算法有RC4、DES、3DES、AES、ChaCha20等,但前三种算法被认为是不安全的,通常被禁止使用。目前常用的只有AES和ChaCha20。AES是“高级加密标准”(AdvancedEncryptionStandard)的意思,密钥长度可以是128、192或256是DES算法的替代品,安全强度高,性能好,有些硬件会专门优化,所以它是非常流行和使用最广泛的对称加密算法。加密组模式对称算法还有一个“组模式”的概念,目的是通过该算法用固定长度的密钥对任意长度的明文进行加密。最新的分组方式称为AEAD(AuthenticatedEncryptionwithAssociatedData),在加密的同时增加了认证的功能。常用的有GCM、CCM和Poly1305。非对称加密有对称加密,那为什么要搞一个非对称加密呢?对称加密确实解决了保密性问题,只有相关人员才能阅读信息。但最大的问题是:如何安全地将密钥传递给对方,技术术语“密钥交换”。这很容易理解。对称加密的密钥在鸽子传递信件的过程中被打鸟的敌人夺取并窃取。然后秘密报告数据可以随意加密和解密。诸葛亮的密报,一点都不机密。于是非对称加密就诞生了。它由两个密钥组成,即公钥和“私钥”。这两个密钥不同,这是不对称的根源。公钥任何人都可以使用,私钥是保密的。这里要注意,公钥和私钥都可以用来加密和解密,用公钥加密的密文只能用私钥解密,反之亦然。服务器保存私钥并在互联网上分发公钥。访问服务器网站时,使用授予的公钥对明文进行加密,服务器使用对应的私钥进行解密。没有私钥,敌人无法解密密文。非对称加密TLS中常见的加密算法有DH、RSA、ECC、DSA等,其中以RSA最为常用。它的安全性是基于“整数分解”的数学问题。使用两个超大质数的乘积作为生成密钥的材料,从公钥推导出私钥是非常困难的。ECC(EllipticCurveCryptography)是非对称加密中的“后起之秀”。它基于“椭圆曲线离散对数”的数学问题。它使用特定的曲线方程和基点来生成公钥和私钥。子算法ECDHE用于密钥交换,ECDSA用于数字签名。与RSA相比,ECC在安全强度和性能上具有明显的优势。160位ECC相当于1024位RSA,224位ECC相当于2048位RSA。因为密钥短,相应的计算量、内存消耗和带宽也减少,加解密性能提高,这对现在的移动互联网非常有吸引力。现在我们从对称加密到非对称加密是为了保密,非对称加密也解决了密钥交换不安全的问题。那么是不是可以直接使用非对称加密来实现保密呢?答案是不!因为非对称加密的运算速度比较慢。因此需要两者结合,混合模式实现保密性问题,同时具有良好的性能。加密过程如下:首先创建随机数对称加密密钥,会话密钥(sessionkey);使用会话密钥加密要传输的明文消息,因为对称加密具有更好的性能,然后使用非对称加密公钥加密会话密钥,由于会话密钥很短,通常只有16或32字节,因此加密也不算太慢。这里的主要目的是解决非对称加密的性能问题,同时实现会话密钥的保密交换。对方收到密文后,用非对称加密的私钥解密上一步加密的会话密钥,再用会话密钥解密加密后的消息明文。综上所述,混合加密采用非对称加密算法对会话密钥进行加密,采用对称加密算法对报文明文进行加密,接收方使用非对称加密算法的私钥对会话密钥进行解密,然后使用用于解密消息密钥的会话密钥。艺术。这样,混合加密解决了对称加密算法的密钥交换问题,兼顾了安全性和性能,完美实现了保密性。还有完整性、身份认证、不可抵赖性等特性没有实现,所以现在的通信不是绝对安全的。摘要算法与完整性摘要算法的主要目的是实现完整性,这是通过普通散列函数和散列函数来实现的。我们可以简单地将其理解为一种特殊的压缩算法,将任意长度的明文数据处理成固定长度且唯一的“摘要”字符串,也就是数据的指纹。同时,摘要算法是一种单向加密算法。没有密钥,就无法解密加密数据,即无法从“摘要”中推导出明文。比如我们听说过或使用过的MD5(Message-Digest5)和SHA-1(SecureHashAlgorithm1)就是最常用的两种摘要算法,可以生成16字节和20字节的数字摘要。完整性的实现有了摘要算法生成的数字摘要,我们只需要在明文数据上附加相应的摘要即可保证数据的完整性。但由于摘要算法不保密,不能明文传输,否则黑客可以修改消息和更改摘要,网站仍然无法识别完整性。所以,诚信还是要建立在保密的基础上的。我们使用“会话密钥”结合前面提到的混合加密,对明文消息+摘要进行加密,使得黑客无法获取明文,也无法修改。有一个技术术语称为“哈希消息验证码(HMAC)”。HashMessageAuthenticationCode(HMAC)例如,诸葛亮使用上述混合加密过程向关二爷发送消息:“明日围城”+“SHA-2摘要”,关二爷使用密钥解密收到后。会话密钥对明文消息进行解密,同时使用解密后的摘要算法对明文消息进行摘要计算,然后比较两个“摘要”字符串是否一致。如果一致,则说明消息完整可信,没有被敌人篡改过。经过。新闻被篡改是很危险的,要以史为鉴。比如赵高和李斯伪造遗嘱,直接将扶苏送往西天。这很糟糕。总结起来就是通过摘要比较来防止篡改,同时使用混合加密实现密文和摘要的安全传输。数字签名和CA在这里已经很安全了,但是还是有漏洞,就是通信的两端。黑客可以伪装成网站窃取信息。反之,他也可以冒充你,向网站发送支付、转账等消息。该网站无法确认您的身份,钱可能就这样被盗了。现在如何实现身份认证?在现实生活中,解决身份认证的手段就是签名和盖章。只要在纸上签名或盖章,就可以证明文件确实是自己签发的,不是别人签发的。非对称加密仍然可以解决这个问题,只是反过来用,用私钥加摘要算法实现“数字签名”,同时实现“身份认证”和“不可抵赖”。就是颠倒公钥和私钥的用法。以前是用公钥加密,用私钥解密。现在是用私钥加密,用公钥解密。但由于非对称加密的效率太低,私钥只是对原文的摘要进行加密,所以计算量要小很多,得到的数字签名也很小,便于存储和传输。关键是用非对称加密的“私钥”对原文摘要进行加密,对方用非对称加密的公钥对摘要进行解密,然后将解密后的原文与摘要算法进行比对计算摘要与解密后的摘要是否一致。这就像签署一份文件以证明该消息实际上是由您发送的。签名验证只要您与网站交换公钥,就可以使用“签名”和“签名验证”来确认消息的真实性。由于私钥是保密的,黑客无法伪造签名,可以保证通信双方的身份。CA这里好像是做的,可惜不是。综合使用对称加密、非对称加密和摘要算法,我们实现了安全的四大特性,是不是已经很完美了?不,还有一个“公钥信任”的问题。因为任何人都可以公开公钥,所以我们还缺乏防止黑客伪造公钥的手段。也就是说,如何判断公钥是你的还是张三丰的?这个“第三方”就是我们常说的CA(CertificateAuthority,证书认证机构)。就像网络世界里的公安局、教育部、公证中心。它具有极高的可信度。它对每一个公钥进行签名,并利用自己的信誉保证公钥不可伪造,是可信的。CA对公钥的签名认证也是有格式的。它不是简单地将公钥绑定到持有者的身份,而是完成了。它还包括序列号、用途、发行者、有效时间等。一个包被重新签名以完整地证明与公钥相关的各种信息,从而形成一个“数字证书”。OpenSSL是一个著名的开源密码学程序库和工具包,支持几乎所有的公共加密算法和协议,已经成为事实上的标准。很多应用软件都会将它作为底层库来实现TLS功能,包括常用的Web服务器Apache、Nginx等。由于OpenSSL是开源的,它也有一些代码分支,比如Google的BoringSSL和OpenBSD的LibreSSL。这些分支在OpenSSL的基础上,删除了一些旧的代码,增加了一些新的特性。master”,但远不能取代OpenSSL。总结一下:OpenSSL是一个知名的开源密码学工具包,是SSL/TLS的具体实现。迁移HTTPS的必要性如果你是做移动应用开发的,你必须知道苹果、安卓、魔心等开发平台在2017年发布通知,要求所有应用使用HTTPS连接,禁止不安全的HTTP。在台式机上,Chrome、Firefox等主流浏览器已经开始“强推”HTTPS,将HTTP站点标记为“不安全”,给用户施加“心理压力”。谷歌等搜索巨头也利用自身的“话语权”,降低HTTP站点的排名,赋予HTTPS更大的权重,试图让网民只访问HTTPS站点。这些方式逐渐“挤压”了纯明文HTTP的生存空间。“迁移到HTTPS”不再是“该不该做”的问题,而是“怎么做”的问题。HTTPS的浪潮无法阻挡。如果你还固守HTTP,无疑会被冲到互联网的角落。顾虑关于阻碍HTTPS实施的因素还有其他顾虑。我总结了三个流行的观点:“慢、贵、难”。而“慢”是惯性思维,用以前的数据来评价HTTPS的性能,认为HTTPS会增加服务器的成本,增加客户端的延迟,影响用户体验。实际上无论是服务端还是客户端的计算能力都得到了很大的提升。无需担心性能问题,可以应用许多优化方案。所谓“贵”,主要是指证书申请和维护成本高,网站难以承受。这也是惯性思维。早年确实是个问题。向CA申请证书的过程不仅繁琐,而且费用高昂,每年需要支付数千甚至数万元的费用。但现在不一样了。为了推广HTTPS,很多云服务厂商提供一键申请和低价证书,也有CA颁发免费证书,其中最著名的就是“Let'sEncrypt”。所谓“难”,就是HTTPS涉及的知识点太多太复杂,有一定的技术门槛,无法快速上手。小结从什么是安全出发,对HTTPS进行扩展,解释什么是HTTPS,以及与HTTP的区别。HTTPS主要通过SSL/TLS来实现安全,而为了安全,我们接触到了什么是对称加密和非对称加密。非对称加密的性能较弱,所以我们用非对称加密来加密对称加密的“会话密钥”。用会话密钥加密明文解决了性能问题。通过混合加密实现机密性,通过摘要算法实现完整性,通过数字签名用非对称加密的“私钥”对原文的摘要进行加密,对方使用非对称加密的公钥对摘要进行解密,然后比较解密将原文的输出与摘要算法计算出的摘要和解密后的摘要进行比较,实现身份认证和不可否认性。本文转载自微信公众号“码哥字节”,可通过以下二维码关注。转载本文请联系码哥字节公众号。