当前位置:首页 > 芯闻号 > 充电吧
[导读]HTTPS中的对称密钥加密,公开密钥加密,数字证书 密钥 我们将未加密的内容称为明文,加密之后的内容称为密文。 简单来说,要加密一段明文,可以将这段内容输入到一个加密函数中,输出密文。但这种

HTTPS中的对称密钥加密,公开密钥加密,数字证书 密钥

我们将未加密的内容称为明文,加密之后的内容称为密文。

简单来说,要加密一段明文,可以将这段内容输入到一个加密函数中,输出密文。但这种简单的加密方式存在被人盗取到加密函数从而破解明文的危险,且加密函数一般构成复杂,一旦被盗取更换成本较高。

于是人们想出了一个办法,在加密函数中再添加一个参数,这个参数只有通信双方知道,没有参数则无法正确解密出明文。这个参数被称为密钥。对于同一个加密函数而言,密钥值的不同则加密方式也不同,得出的密文也就不同。这样加密系统的安全性提高了,被盗取密钥之后更换密钥的成本也低了很多。常见的情景是加密函数都是使用公开的算法,用户需要保存的仅仅是自己的密钥。

对称密钥加密

对称密钥加密就是加密与解密使用相同的是密钥值。

流行的对称密钥加密包括:

DES TRiple-DES RC2 RC4

对称密钥需要通信双方共享密钥。对互联网通信而言,不同的通信双方需要不同的对称密钥,如果有N个用户需要相互通信,总共需要密钥数N*(N-1)。

公开密钥加密

对称密钥加密存在需要密钥数太多以及传递密钥不方便的缺点,于是人们研究出非对称的密钥加密技术,即加密和解密的密钥不需要一样。常见的一种称为公开密钥加密。

公开密钥加密将通信一端的加密和解密密钥分成两个,其中加密密钥可以公开发布,也就是随便谁都可以使用该加密密钥为明文加密,但要解密这段密文只能靠该端私有的解密密钥。这解决了对称密钥加密中的缺点。其中公开的加密密钥称为公开密钥,私有的解密密钥称为私有密钥。

要保证公开密钥加密的可用性必须确保以下情况无法计算出私有密钥:

有公开密钥; 一段密文; 一段明文和使用公开密钥加密过的密文;

流行的公开密钥加密包括:

RSA DH ECDHE ECDH DHE

公开密钥加密虽然更加简单安全但其加密算法运算比较慢,所以一般混合使用公开密钥加密和对称密钥加密的使用方式,即先通过公开密钥加密获取到对称密钥加密的密钥,再通过对称密钥加密传输数据。这种情况在后文说明。

数字签名

对称密钥加密和公开密钥加密都是将报文加密的技术。但加密能做的不止如此,还可以用加密算法来证明报文是谁编写的以及中途没有被篡改。数字签名就是这种技术。

数字签名是附加在报文上的特殊加密校验码。其使用了私有密钥加密生成校验码,除发送者外其他人都无法重新生成对应的校验码,这样就证明了报文的身份以及中途没有被人篡改过。

数字签名通常通过公开密钥技术产生,但使用方式相反。发送者首先为要签名内容生成报文摘要,使用签名函数并输入私有密钥作为参数,对报文摘要进行加密,生成签名并随报文一起发送出去。接收者通过附加了公开密钥参数的签名函数反函数将签名解密,并与生成的报文摘要进行对比,如果结果一致则代表报文无误。

常见的RSA加密系统可以同时用于公开密钥加密和数字签名。RSA加密系统将解码函数D作为签名函数使用,编码函数E作为解签名函数。

数字证书

单纯的公开密钥加密只适合对等的两端通信,对于常用的服务器-客户端通信模式仍存在一些问题。1是公开密钥加密只能证明报文确实是发送方发送的且没有篡改,但发送方本身是谁则无从得知,因为谁都可以生成公钥私钥对。如果把所有需要访问的网站的公钥都事先保存下来,数量巨大不说,如何发送这些公钥且如何证明保存的公钥确实是这个网站的公钥也是个问题。数字证书则可以解决这些问题。

数字证书是网络上的身份证明。一般包括如下内容:

证书格式版本号 证书序列号; 证书签名算法; 证书颁发者; 有效期; 对象名称; 对象公开密钥; 证书颁发者的数字签名;

其中颁发者的数字签名是通过数字证书的其余部分的报文摘要经证书签名算法及证书颁发者的私有密钥计算出的,用于验证数字证书的真实性。

任何人都能自行生成一个数字证书,但只有值得信任的组织(CA)生成的数字证书才会默认被浏览器信任。具体原因在下一节说明。

详解数字证书验证流程

关于浏览器验证网站数字证书的流程网上的资料一般讲的都不是很清楚。在查阅了不少资料后终于搞清楚这部分。

CA下发给网站的证书都是一个证书链,也就是一层一层的证书,从根证书开始,到下级CA,一层一层,最后一层就是网站证书。

浏览器收到服务器发送的证书后,需要验证其真实性。而证书的签名是通过签名算法和上级CA的私钥生成的,并非很多文章里简单说的靠CA私钥生成。浏览器需要用上级CA的公钥才能解密签名,并与生成的指纹对比,那么问题来了,这个上级CA的公钥从哪来呢?

答案是此公钥来自于证书链该层的上级CA的证书明文内。单个X509v3证书由以下部分组成:

X.509v3证书由三部分组成:

tbsCertificate (to be signed certificate),待签名证书。 SignatureAlgorithm,签名算法。 SignatureValue,签名值。

tbsCertificate又包含10项内容,在HTTPS握手过程中以明文方式传输:

Version Number,版本号。 Serial Number,序列号。 Signature Algorithm ID,签名算法ID。 Issuer Name,发行者。 Validity period,有效时间。 Subject name ,证书主体名称。 Subject Public Key Info ,证书主体公钥信息,包含公钥算法和公钥值。 Issuer Unique Identifier (optional),发行商唯一ID。 Subject Unique Identifier (optional),主体唯一ID。 Extensions (optional),扩展。

证书链由多个证书一层一层组成的,除了最底层的网站证书的公钥是给用户加密报文外,其他层证书中的公钥均用于解密底层的证书指纹签名。最高层的根证书是自签名的,也就是自己颁发给自己,所以它的公钥不仅用来解密下层的签名,也用来给自己的签名解密。

验证证书是否真实的任务完成了,那么证书是否可靠如何验证呢?一句话,只要根证书可靠,整个证书链就可靠,而根证书是否可靠要看这个根证书是否在操作系统或浏览器内置的可信根证书内,在的话就可信。

HTTPS

HTTPS是在HTTP报文发送给TCP之前对报文进行加密的安全协议。使用443端口进行通信。

普通的HTTP有如下四层:

应用层HTTP 传输层TCP 网络层IP 数据链路层

HTTPS多了一个安全层:

应用层HTTP 安全层SSL/TLS 传输层TCP 网络层IP 数据链路层

证书密钥验证都是在安全层验证。常用的SSL/TLS编程实现库是OPENSSL。

HTTPS实际验证过程

此部分内容主要参考《SSL/TLS协议运行机制的概述》http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

实际的HTTPS验证过程如下:

ClientHello阶段 支持的协议版本,比如TLS 1.0版; 一个客户端生成的随机数,稍后用于生成”对话密钥”; 支持的加密方法,比如RSA公钥加密; 支持的压缩方法; ServerHello阶段 确认使用的加密通信协议版本; 一个服务器生成的随机数,稍后用于生成”对话密钥”; 确认使用的加密方法,比如RSA公钥加密; 服务器证书;

对于需要验证用户证书的还会包含请求要求用户提供证书。

客户端回应

客户端收到回应后首先验证服务器证书:

是否由可信CA颁布; 证书中域名是否与实际域名一致; 是否在有效期内;

证书没问题的话客户端会回应以下内容:

一个随机数(pre-master key)。该随机数用服务器公钥加密,防止被窃听; 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送; 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验;

此时通信双方都有了这三个随机数。通过商定的加密方法根据三个随机数生成一个相同的会话密钥SessionSecret,用于之后的对称加密。

服务器回应

服务器收到回应后计算出SessionSecret,并发送以下内容给客户端:

编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送; 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验

这样HTTPS握手过程就结束了,之后就是通过HTTP发送经过对称加密的报文。

参考资料:

《HTTP权威指南》一书 《数字证书原理》http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html 《数字签名是什么?》http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html 《HTTPS通信中的身份认证机制》https://cnodejs.org/topic/56eb698ec95e8f992473c5a3 《SSL证书必知必会:数字证书及CA基础知识》http://liuqunying.blog.51cto.com/3984207/1664246 《SSL/TLS协议运行机制的概述》http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 《大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理》http://op.baidu.com/2015/04/https-s01a01/ 《理解 HTTPS 原理,SSL/TLS 协议》https://hacpai.com/article/1447920990604 《HTTPS证书生成原理和部署细节》http://www.barretlee.com/blog/2015/10/05/how-to-build-a-https-server/ 《HTTPS原理学习笔记》http://www.kevenwu.com/blogs/14/
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

研究机构Canalys公布2024年第一季度全球智能手机SoC芯片厂商数据,包括出货量以及手机总营收额。联发科保持出货量领先地位,市场份额达39%,而苹果在智能手机总营收方面占据41%的份额,位居第一名。

关键字: 智能手机 SoC 出货量 紫光展锐

中国香港立法会已批准拨款28.4亿港元(约3.64亿美元),资助政府设立专注于开发半导体技术的微电子研究中心,以在中美科技战不断升级的情况下促进经济的战略部分。但有议员警告,美国地缘政治制裁行动可能会影响计划,即美国制裁...

关键字: 半导体研究中心 半导体

5 月 20 日,英国政府下属人工智能安全研究所(AISI)发布了最新的 LLM 安全评估等三则公告。

关键字: 英国 人工智能安全研究所 LLM 安全评估 AI 人工智能

路透社上周消息,日本东芝表示该工业集团将在新东家的领导下加速重组,计划仅在日本裁员就高达4000人。数月来,日本不少公司相继宣布裁员,包括复印机制造商柯尼卡美能达和电子公司欧姆龙等。

关键字: 东芝 重组 裁员

业内消息,日前夏普总裁戴正吴(Robert Wu)在一份新闻稿中表示,该公司正在停止其位于大阪堺市的显示面板工厂的运营,该工厂将用作为人工智能(AI)提供动力的数据中心,同时夏普将缩小中小型显示面板的生产规模。

关键字: 夏普 富士康

完善的数据中心液冷解决方案采用最新高密度GPU服务器,并搭载高性能的CPU与GPU,加速实现AI工厂的搭建 2024年5月17日美国加州圣何塞和德国汉堡 /美通社/ --...

关键字: MICRO SUPER 加速器 高性能计算

上海2024年5月19日 /美通社/ -- 从紫外固化材料、半导体材料、屏幕显示材料到有机合成材料,成立20余年来,上海飞凯材料科技股份有限公司在高端材料领域持续耕耘,不断实现国产化突破。今年一季度,飞凯材料营业收入同比...

关键字: 光纤 PLAYER 半导体材料 ASIA

助力企业开拓商业空间筹建&运营采购市场 上海2024年5月20日 /美通社/ -- 为迎接酒旅市场的澎湃活力,优化和整合酒店及商业空间资源,促进旅宿行业健康发展,2025Hotel&ShopPlus上海...

关键字: 照明设计 微信 AN 大赛

上海2024年5月20日 /美通社/ -- 2024年5月16日,世界知名的生命科学公司 Eppendorf 集团于第二十三届生物制品年会上成功举办了"疫路超越 推流出新"的产品发布会,正式推出大规模...

关键字: RF PEN BSP IMAC

事实表明,AI无法替代开发者,但更适用于优秀的开发者。而识别大型语言模型(LLM)生成的代码什么时候会出错,需要开发人员具有丰富的知识和经验。

关键字: AI编程 软件开发 AI 大型语言模型 LLM
关闭
关闭