实现HTTPS系列第二弹之【非对称加密,公钥私钥,数字签名,OpenSSL及HTTPS等概念简介】

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

博文说明【前言】:   

     本文将通过个人口吻介绍有关非对称加密,公钥私钥,数字签名,OpenSSL及HTTPS等简单概念,在目前时间点【2017年5月8号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。


    关于http以及web等概念,欢迎看我的上一篇博文:

实现HTTPS系列第一弹之【http,https,www,web等的区别含义】

博文链接地址:http://watchmen.blog.51cto.com/6091957/1922919


本文参考文献引用链接:

1、https://www.zhihu.com/question/23341334

2、https://zh.m.wikipedia.org/zh-hans/%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86

3、http://baike.baidu.com/link?url=ida6z7jFkozSq--Z4EWORisdZAZRorbUd5PbTFRoTZug-oDdLzTq4nlzf1yM3AoaSSwiw_PBSpc7jgGse4Gd_IJ1B7cUDz7J-ddBIn4vfwo6ROUznaBPQ-2fvOLzlzYu

4、https://www.zhihu.com/question/25912483


  正文:


    HTTPS是一种网络协议,等于HTTP+TLS(由于历史原因,SSL3.0之后就被TLS1.0替代了)。

    而OpenSSL是一套用于实现TLS/SSL协议的开源工具集,主要有两个特性:

    1、实现了ssl2,ssl3,TLSv1,TLSv1.1,TLSv1.2协议。

    2、实现目前常用的加密算法。


    没有一个非常精准的方法来判断HTTPS是否使用openssl,保守估计至少70%以上的网站是使用openssl的。而windows系列的服务器包括IIS,windows server等都是使用其他方式实现,没有使用openssl


    原创案例-实战分析1:

    接着拿我们宫保鸡丁的例子来说,在这里,宫保鸡丁这道菜不放盐的情况下就是HTTP(肯定能吃,但是不好吃),放盐的情况下就是HTTPS,那么这个多出来的S也就是盐也就是我们的TLS协议,我们知道我们去超市买盐,这个盐的分类就多了,有便宜的有贵的,有海盐有矿盐等等等等。那么这个openssl就是我们最经常买的销量最大的中盐集团(反正我是吃他家的海盐),TLS协议就是中盐集团生产的某款食盐。

    总结:也即OpenSSL 是 SSL /TLS的一个开源实现,跟 HTTP 没有关系。你说不加盐的宫保鸡丁和盐有什么关系?


    转载案例-实战分析2:

    我看到有人举下面这个例子,觉得也是甚好,大家参考下:

    1、HTTPS与SSL的关系就像HTTP与TCP的关系

    2、SSL/TLS与OpenSSL的关系就像操作系统与Windows的关系


问题1:那么为什么现在不用SSL,要使用TLS协议了呢?

    SSL协议由美国 NetScape公司开发, 1996年发布了V3.0版本(最新也是最后版本)。SSL 3.0 已经存在超过 15 年之久,目前绝大多数浏览器都支持该版本。通常用户的浏览器都使用新版本的安全协议与服务器进行连接,为了保持兼容性,当浏览器安全协议连接失败的时候,就会转而尝试老版本的安全协议进行连接,其中就包括SSL 3.0。但是在SSL协议级别,会出现Poodle攻击,原理就是黑客故意制造安全协议连接失败的情况,触发浏览器从TLS往下降级使用 SSL 3.0,然后使用特殊的手段,从 SSL 3.0 覆盖的安全连接下提取到一定字节长度的隐私信息。因此,在谷歌40版本之后,谷歌就取消对了SSL的向下支持。因此现在主流的加密协议使用的都是TLS

    以上内容简单介绍了HTTPS及OpenSSL之间的关系,接下来我们讲解加密相关知识


---------------------------------------------【分割线】------------------------------------------------


    那么什么非对称机密,什么是公钥私钥?


    非对称加密:(asymmetric cryptography)也称为公开密钥加密(public-key cryptography)

这是一种密码学算法类型,在这种类型中,需要一对密钥,一个是私人密钥,一个是公开密钥。这两个密钥是数学相关,用某个用户的密钥加密后的信息,只能使用该用户的解密密钥才能进行解密查看。

   根据这种公钥公开,私钥隐藏的机制,出现了著名的RSA算法。这是我们在实际应用中最常见的一种公钥加密算法(原理是两个大质数(p,q)乘积(n)难以逆向求解),也就是说公钥使用这种算法对数据进行加密,私钥也用这种算法对数据进行解密。

    注意1:只是知道其中一个的密钥(密钥在这里泛指公钥和私钥,如没有特殊说明,公钥和私钥均可以被称为密钥),不能计算出另一个密钥,因此,对外公布一个密钥的内容,不会影响另一个密钥的安全性,也就是说即使公钥在网上被截获,如果没有与之匹配的私钥,也无法解密。在这里,我们将对外公布的密钥称之为公钥,不公开的对内保留的密钥称之为私钥。

    注意2:我们也可以使用私钥进行加密,然后用公钥进行解密,没有明确说只能使用公钥加密数据。这种特殊情况我们下面会说到。

    

    对称加密:在这种加密类型中,加密解密都是同一个密钥,也即用户加密数据使用密钥A,其他用户也是使用该密钥A解密该加密数据。其中比较著名对称加密算法是AES算法。

    公钥加密系统也就是非对称加密的提出是为了解决对称加密中密钥传递的问题。例如我们现在使用对称加密,只有一个密钥K,加密解密都用它。A要给B发送一段保密信息,A可以用K进行加密,把密文发送给B,B再用K解密,得到信息。

    在这里有一个存在风险的地方:B要解密只能用K,而K开始只有A知道,因此A要告诉B密钥K只能是通过明文形式,既然是明文传递,就存在被人截取的风险。

    而公钥加密系统里面就不存在这个问题了。它的思路是加密与解密用不同的密钥,这样就不用传递解密的密钥了。关键是不用传递解密时所用的密钥

    注意3:我们在实际对数据进行加密传输的时候,真正使用方式的是是对称加密,为什么不使用非对称加密方式来加密数据呢,主要是因为非对称加密算法的时间成本太大(时间耗费为对称加密方式1000倍以上),因此实际情况是:我们使用非对称加密方式加密传输的数据实际上是对称密钥所用的密钥,而且只是在刚开始交互的时候使用,后续一直使用对称加密方式对数据进行加密。


    数字签名:但是如果我们使用私钥进行加密数据(私钥永远不对外发布),也可以使用公钥对其进行解密,这用于客户验证拥有私钥的一方发布的数据或者是文件是否是准确完整的,拥有公钥的接收者可以判断这段数据,由此得知发布这段数据的真实身份是否确实是拥有私钥的某人,详细介绍将在下一篇博文阐述,这里只是引入概念。

    总结1:数字签名=使用私钥加密的自身数据。目的是供其他验证我的身份合法性


全文总结1:

    使用公钥加密数据,使用私钥解密数据的这种操作就叫做非对称加密

    加密:既然是加密,那么肯定是不希望别人知道我的消息,所以只有我能解密,那么可以得出是使用公钥负责加密,私钥负责解密。

    签名:既然是签名,那肯定是不希望有人冒充我发消息,因此只有我才能发布这个签名,所以可以得出私钥负责签名,公钥负责验证。


全文总结2:

    数字签名是将发送信息的摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥(数字证书,所有人都可以获取)才能解密被加密的摘要信息(数字签名)。然后接受者用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比,如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性与正确性。整个过程也即使用数字证书去验证数字签名




结尾:

    下一篇:实现HTTPS系列第三弹之【数字签名,数字证书,CA认证等概念理解】

    博文地址:http://watchmen.blog.51cto.com/6091957/1924747


     感谢阅读,祝有收获的一天,谢谢!




      本文转自1清风揽月1  51CTO博客,原文链接:http://blog.51cto.com/watchmen/1923426,如需转载请自行联系原作者



相关文章
|
1月前
|
安全 网络安全 数据安全/隐私保护
内网IP地址实现HTTPS加密访问教程
在内网环境中,为确保数据传输的安全性,绑定SSL证书搭建HTTPS服务器至关重要。本文介绍了内网IP地址的前期准备、申请SSL证书的步骤以及客户端配置方法。具体包括选择合适的CA、注册账号、提交申请、下载证书,并在客户端导入根证书,确保通信数据的安全加密。推荐使用JoySSL提供的技术解决方案,确保内网设备通信安全。
内网IP地址实现HTTPS加密访问教程
|
1月前
|
域名解析 算法 安全
免费申请https加密全攻略
访问JoySSL官网注册账号,申请免费SSL证书。选择证书类型,填写域名信息,生成CSR文件,验证域名所有权。下载并部署证书至服务器,测试HTTPS连接。注意定期续期,确保兼容性和安全性。如有问题,可联系JoySSL客服。
|
3月前
|
安全 网络安全 数据安全/隐私保护
HTTPS中的加密算法
HTTPS中的加密算法
|
3月前
|
算法 Java 数据安全/隐私保护
国密加密算法简介
国密指国家密码局认定的国产密码算法,主要包括SM1、SM2、SM3、SM4等,并持续完善。SM1是对称加密算法,加密强度与AES相当,需加密芯片支持;SM2是非对称加密,基于ECC算法,签名和密钥生成速度优于RSA;SM3为杂凑算法,安全性高于MD5;SM4为对称加密算法,用于无线局域网标准。本文提供使用Java和SpringBoot实现SM2和SM4加密的示例代码及依赖配置。更多国密算法标准可参考国家密码局官网。
313 1
|
4月前
|
安全 算法 数据安全/隐私保护
加密与安全:公开密钥加密、加密过程、数字签名等
这篇文章详细解释了非对称加密算法,包括公开密钥加密的原理、加密过程、数字签名的功能,以及它与对称加密的比较和实际应用场景。
加密与安全:公开密钥加密、加密过程、数字签名等
|
2月前
|
安全 网络协议 网络安全
【HTTPS】对称加密和非对称加密
【HTTPS】对称加密和非对称加密
40 0
|
3月前
|
算法 安全 网络安全
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
概念区分:对称加密、非对称加密、公钥、私钥、签名、证书
164 0
|
5月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
106 10
|
4月前
|
JSON 算法 API
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
|
4月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
416 0
下一篇
DataWorks