应用加密1;非对称加密算法揭秘

简介:

非对称加密算法

  使用过程:

  乙方生成两把密钥(公钥和私钥)

甲方获取乙方的公钥,然后用它对信息加密。

  乙方得到加密后的信息,用私钥解密,乙方也可用私钥加密字符串

  甲方获取乙方私钥加密数据,用公钥解密

  优点:

  更安全,密钥越长,它就越难破解

  缺点:

  加密速度慢

  常用算法:

  RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)

  非对称加密方法

  1公钥私钥的使用原则

  ①每一个公钥都对应一个私钥。

②密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

③如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

  ④如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

  非对称密钥密码的主要应用就是公钥加密和公钥认证。

  2公钥加密、解密

  加密的目的,是不希望第三者看到当前两个通讯用户的通讯内容。

  2.1加密

  A(客户)想给B(服务器)发送一段文字,但是不想让别人看到,因此想使用非对称加密方法来加密这段文字,当然,B需要有一对公钥和私钥:

  ① B将他的公钥发送给A

  ② A用B给他的公钥加密这段文字,然后传给B

  ③ B用他的私钥解密A发过来的消息,这里要强调的是,只要B的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

  通过这几步,B就能成功收到A发送的信息,同时又达到了保密的目的。

  2.2解密

  如果B想给A回信息,就简单的多了:

  ① B将要回复的信息通过自己的私钥加密,然后传送给A

  ② A用B之前给他的公钥解出这份信息。

  3、公钥认证

  在公钥加密、解密里面描述的通讯过程看似简单,但想想这个问题:在过程2中,A怎么B给他的回信在传递过程中,有没有被人修改?这就涉及到数字签名的概念。

  3.1数字签名(digital signature)

  微软官方给出的定义:“数字签名”是指可以添加到文件的电子安全标记。使用它可以验证文件的发行者以及帮助验证文件自被数字签名后是否发生更改。

  3.1.1数字签名原理

  要达到这个目的,一般是对信息做一个hash计算得到一个hash值,注意,这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值加密后做为一个签名和信息一起发出去。 接收方在收到信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改hash值,从而让它们可以相匹配,为了防止这种情况,hash值一般都会加密后(也就是签名)再和信息一起发送。

  3.1.2数字签名使用方式

  下面通过例子来说明这个过程:

  B给A回信时,采用了数字签名的方式

  1、B先用hash函数,生成信件的摘要(digest)

  2、B使用自己的私钥,对这个摘要加密,这样就生成了数字签名(signature)

  3、B将这个签名附在要回复的信息后面,一起发给A

  4、A收到B的信息后,取下数字签名,并通过B的公钥解密,得到信件的摘要信息

  5、A在对B发送的信息本身使用B指定的hash函数,将得到的结果同上一步解密得到的摘要进行对比,如果两者一致,就说明B发过来的信息未被修改过。

3.2数字证书(Digital CerTIficate)

  问题就这样结束了吗?远没有,试想,虽然A确定了B回给他的信息是未修改过的,但是怎么确定给他回信息的就是B?如果有不怀好意的C把A保存的B的公钥偷偷换成自己的,并冒用B的名义给A发信息呢?

  要解决这个问题,A只要能确定自己持有的公钥到底是不是B的就行了,这就需要用到数字证书。

  数字证书是用来验证公钥所属的用户身份。在日常生活中,如果我们要验证一个人的身份,通常的做法是查看他的身份证。我们信任身份证颁发机构即政府机构的公信力,因此只要验证一个人的身份证不是伪造的,我们就相信这个人的身份和身份证上所描述的是一致的。

数字证书就是一个人或者组织在网络世界中的身份证,其发证机关是证书管理机构(cerTIficate authority,CA)。CA用自己的私钥对用户的身份信息(主要是用户名和该用户的公钥)进行签名,该签名和用户的身份信息一起就形成了证书。

  3.2.1数字证书的构成

  证书的发布机构(Issuer)

指出是什么机构发布的这个证书,也就是指明这个证书是哪个证书中心(cerTIficate authority,简称CA)发布的的(只是创建证书,不是指证书的使用者)。

  证书的有效期(Valid from , Valid to)

  也就是证书的有效时间,或者说证书的使用期限。 过了有效期限,证书就会作废,不能使用了。

  公钥 (Public key)

  这个我们在前面介绍公钥密码体制时介绍过,公钥是用来对消息进行加密解密的,是很长的一串数字。

  证书所有者(Subject)

  这个证书是发布给谁的,或者说证书的所有者,一般是某个人或者某个公司名称、机构的名称、公司网站的网址等。

  签名所使用的算法 (Signature algorithm)

  指的这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。指纹的加密结果就是数字签名

  指纹以及指纹算法 (Thumbprint, Thumbprint algorithm)

  这个是用来保证证书的完整性的,也就是说确保证书没有被修改过。 其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起,使用者在打开证书时,自己也根据指纹算法计算一下证书的hash值(指纹),如果和刚开始的值对得上,就说明证书没有被修改过,因为证书的内容被修改后,根据证书的内容计算的出的hash值(指纹)是会变化的。

相关文章
|
3天前
|
算法 数据安全/隐私保护
对称密钥加密算法和公开密钥加密算法有什么区别
【4月更文挑战第19天】对称密钥和公开密钥加密算法各有特点:对称密钥加密速度快,适用于大量数据,但密钥管理困难;公开密钥加密安全性高,密钥管理方便,但速度慢,常用于数字签名和身份验证。两者在不同场景下有不同优势。
19 6
|
26天前
|
机器学习/深度学习 存储 算法
sklearn应用线性回归算法
sklearn应用线性回归算法
24 0
|
1月前
|
存储 算法 测试技术
ArrayList集合的两个实例应用,有趣的洗牌算法与杨辉三角
ArrayList集合的两个实例应用,有趣的洗牌算法与杨辉三角
23 1
|
1月前
|
存储 安全 算法
Go语言在数据加密与保护中的应用
【2月更文挑战第24天】Go语言以其高效的性能、简洁的语法和强大的标准库,在数据加密与保护领域获得了广泛的应用。本文详细探讨了Go语言在数据加密、数据脱敏、访问控制以及安全通信等方面的应用,并分析了Go语言在数据加密与保护方面的优势与未来趋势。
213 49
|
1月前
|
机器学习/深度学习 算法 数据库
KNN和SVM实现对LFW人像图像数据集的分类应用
KNN和SVM实现对LFW人像图像数据集的分类应用
34 0
|
6天前
|
存储 监控 安全
网络安全与信息安全:防范漏洞、应用加密、提升意识
【4月更文挑战第18天】 在数字化时代,网络安全与信息安全保障已成为维护国家安全、企业利益和个人隐私的关键。本文深入探讨网络安全的多面性,包括识别和防御网络漏洞、应用加密技术保护数据以及提升全民网络安全意识的重要性。通过对这些关键领域的分析,文章旨在为读者提供实用的策略和建议,以增强其网络环境的安全防护能力。
10 0
|
8天前
|
数据采集 算法 数据可视化
R语言聚类算法的应用实例
R语言聚类算法的应用实例
85 18
R语言聚类算法的应用实例
|
8天前
|
算法 数据可视化 数据挖掘
R语言社区主题检测算法应用案例
R语言社区主题检测算法应用案例
11 0
|
30天前
|
存储 安全 网络安全
网络安全与信息安全:防范漏洞、应用加密技术与提升安全意识
在数字化时代,网络安全与信息安全已成为维护网络空间稳定的重要基石。本文将深入探讨网络安全中的关键问题——漏洞挖掘与利用,分析加密技术在信息保护中的核心作用,并强调提升个人与企业的安全意识的重要性。文章将提供对当前网络威胁的全面剖析,介绍前沿的防御策略,并分享如何构建一个多层次、全方位的安全防线。
|
1月前
|
安全 Java 数据安全/隐私保护
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用

热门文章

最新文章