`

数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)

 
阅读更多

数字签名是什么?

1.

看图片 读故事:轻松理解数字签名和数字证书

鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2.

看图片 读故事:轻松理解数字签名和数字证书

鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

3.

看图片 读故事:轻松理解数字签名和数字证书

苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。

4.

看图片 读故事:轻松理解数字签名和数字证书

鲍勃收信后,用私钥解密,看到信件内容。

5.

看图片 读故事:轻松理解数字签名和数字证书

鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)。

6.

看图片 读故事:轻松理解数字签名和数字证书

然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

7.

看图片 读故事:轻松理解数字签名和数字证书

鲍勃将这个签名,附在信件下面,一起发给苏珊。

8.

看图片 读故事:轻松理解数字签名和数字证书

苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

9.

看图片 读故事:轻松理解数字签名和数字证书

苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

10.

看图片 读故事:轻松理解数字签名和数字证书

复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。因此,他就可以冒充鲍勃,写信给苏珊。

11.

看图片 读故事:轻松理解数字签名和数字证书

苏珊发现,自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

12.

看图片 读故事:轻松理解数字签名和数字证书

鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13.

看图片 读故事:轻松理解数字签名和数字证书

苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

14.

看图片 读故事:轻松理解数字签名和数字证书

下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。

15.

看图片 读故事:轻松理解数字签名和数字证书

首先,客户端向服务器发出加密请求。

16.

看图片 读故事:轻松理解数字签名和数字证书

服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

17.

看图片 读故事:轻松理解数字签名和数字证书

客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

18.

看图片 读故事:轻松理解数字签名和数字证书

如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

19.

看图片 读故事:轻松理解数字签名和数字证书

如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

20.

看图片 读故事:轻松理解数字签名和数字证书

数字证书如果是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

 

----------------------------

在签名的过程中,有一点很关键,收到数据的一方,需要自己保管好公钥,但是要知道每一个发送方都有一个公钥,那么接收数据的人需要保存非常多的公钥,这根本就管理不过来。并且本地保存的公钥有可能被篡改替换,无从发现。怎么解决这一问题了?由一个统一的证书管理机构来管理所有需要发送数据方的公钥,对公钥进行认证和加密。这个机构也就是我们常说的CA。认证加密后的公钥,即是证书,又称为CA证书,证书中包含了很多信息,最重要的是申请者的公钥。

CA机构在给公钥加密时,用的是一个统一的密钥对,在加密公钥时,用的是其中的私钥。这样,申请者拿到证书后,在发送数据时,用自己的私钥生成签名,将签名、证书和发送内容一起发给对方,对方拿到了证书后,需要对证书解密以获取到证书中的公钥,解密需要用到CA机构的”统一密钥对“中的公钥,这个公钥也就是我们常说的CA根证书,通常需要我们到证书颁发机构去下载并安装到相应的收取数据的客户端,如浏览器上面。这个公钥只需要安装一次。有了这个公钥之后,就可以解密证书,拿到发送方的公钥,然后解密发送方发过来的签名,获取摘要,重新计算摘要,作对比,以验证数据内容的完整性。

 

总结:

(1)信息 + HASH = 摘要    摘要 + 私钥 = 数字签名(给收方做对比用的,验证收发内容是否一致)

(2)公钥 + 相关信息 + CA私钥 = 数字证书(验证发送者是否正确,是可信任的公钥)

 

用于我发保密信息给你之前,你得让我相信真的是“你”让我“这么做”的。

 

(1)、对称加密算法

常用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

1、加密方和解密方使用同一个密钥。
2、加密解密的速度比较快,适合数据比较长时的使用。
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦。
4、加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持128、192、256、512位密钥的加密)、Blowfish。
5、加密工具:openssl、gpg(pgp工具)

 

(2)、非对称加密算法

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面:
抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。
计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。
存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。
带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。

1、每个用户拥用一对密钥加密:公钥和私钥。
2、公钥加密,私钥解密;私钥加密,公钥解密。
3、公钥传输的过程不安全,易被窃取和替换。
4、由于公钥使用的密钥长度非常长,所以公钥加密速度非常慢,一般不使用其去加密。
5、某一个用户用其私钥加密,其他用户用其公钥解密,实现数字签名的作用。
6、公钥加密的另一个作用是实现密钥交换。
7、加密和签名算法:RSA、ELGamal。
8、公钥签名算法:DSA。
9、加密工具:gpg、openssl

 

由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。
对称加密算法不能实现签名,因此签名只能非对称算法。
由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。
在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

 

(3)、单向加密(散列算法)

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。
单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
1、MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
2、SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;
SHA-1与MD5的比较
因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
1、对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
2、对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
3、速度:在相同的硬件上,SHA-1的运行速度比MD5慢。

1、特征:雪崩效应、定长输出和不可逆。
2、作用是:确保数据的完整性。
3、加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4、CRC-32
4、加密工具:md5sum、sha1sum、openssl dgst。
5、计算某个文件的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1

分享到:
评论

相关推荐

    Java加密技术介绍.docx

    Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密算法DES&AES Java加密技术(三)——PBE算法 Java加密技术(四)——非对称加密算法RSA Java加密技术(五)——非对称加密...

    GB:T 15843.2-2017 信息技术 安全技术 实体鉴别 第2部分:采用对称加密算法的机制1

    引言本部分等同采用ISO/IEC9798-2:2008及其勘误文件ISO/IEC9798-2:2008TECHNICALCOR-RIGENDUM3,它是由ISO

    Python3+PyCryptodome实现各种加密算法

    PyCryptodome是python一个强大的加密算法库,可以实现常见的单向加密、对称加密、非对称加密和流加密算法。包含以下内容: 1.Base64编码 2.base64编码实现代码 ...5.非对称加密算法 6.流加密算法实现(以RC4为例)

    Java加密与解密的艺术配书源代码

    对称加密网络应用242 7.8 小结254 第8章高等数据加密—非对称加密算法256 8.1 非对称加密算法简述256 8.2 密钥交换算法—DH 258 8.3 典型非对称加密算法—RSA 269 8.4 常用非对称加密算法—ElGamal277 8.5 实例:非...

    Java加密与解密的艺术

    对称加密网络应用2427.8 小结254第8章高等数据加密—非对称加密算法2568.1 非对称加密算法简述2568.2 密钥交换算法—DH 2588.3 典型非对称加密算法—RSA 2698.4 常用非对称加密算法—ElGamal2778.5 实例:非对称加密...

    Java常见加密技术全景展示_附Java代码实现

    复杂的对称加密(DES、PBE)、非对称加密算法: ● DES(Data Encryption Standard,数据加密算法) ● PBE(Password-based encryption,基于密码验证) ● RSA(算法的名字以发明者的名字命名:Ron Rivest, ...

    Java中常用的加密算法

    Java中常用的加密算法主要有MD5,DES(对称加密),RSA(非对称加密),每一种加密算法有着各自的加密特点。(注意:本文为kotlin编码) 一.MD5 MD5全称Message_Digest Algorithm-5,即信息-摘要算法5,消息摘要是采用任意...

    黄淮学院\考试题\2010-2011

    综合发挥两种加密算法的优点,既利用了对称加密算法速度快的优点,又利用了公钥加密算法的安全性高的特性。 自主访问控制和强制访问控制的区别是什么?基于角色的访问控制和前两者相比有何优点? 自主访问...

    论文研究-一种基于多模式加密算法的文件保护方案.pdf

    结合对称密码算法中的DES、IDEA、AES和单向散列算法中的MD5、SHA1、SHA256等算法,提出了一种在同一文件内部采用多模式加密的方案,该方案比传统的单一模式加密的方案能更好地保证数据的完整性和安全性。...

    非对称加密&&RAS算法学习经验

    非对称加密&&RAS算法 之前对非对称加密有很大的误解,可以说之前理解的非对称加密都是错误的,经过一位大牛的点拨 (碾压) 充分认识到了自己的错误~,现在重新对非对称加密做一个总结; 之前错误的想法 非对称加密 指的是...

    SFCipher(加解密工具)

    目前这个工具支持对称加密算法(AES、3DES)、非对称加密算法(RSA)、单向散列算法(MD5、SHA1、CRC32)、Base64算法等,后期还会不定时新增别的算法,在使用过程中如有问题欢迎邮件给我,我会及时优化和反馈。

    java加密技术

    java加密技术 与单向加密算法MD5&SHA;&MAC; 对称加密算法DES&AES; PBE 算法

    Linux网络服务与安全视频.zip

    目录网盘文件永久链接 01.NFS服务配置和测试 001.NFS服务资源的读与写控制 002.NFS服务资源网络地址控制 003.NFS用户映射 004.NFS相关端口以及端口的绑定 ...021.使用openssl 生成RSA非对称加密所用的密钥对......

    SoftLock加密控件

    SoftLock加密控件是一个用于保护软件产品的ActiveX控件。...加密算法采用 RSA-MD5,RSA-SHA1单向散列函数,128位加密。 公开密钥算法(也叫非对称算法)设计。 硬件指纹采用物理硬盘序列号以及CPU序列号和ID号。

    信息安全.zip

    答案:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有...

    Web服务安全(PGP、S/MIME、Secure Shell、SFTP)

    PGP是一个基于RSA公钥加密体系的邮件加密软件,可以用于邮件保密,防止非授权者阅读,还能对邮件加上数字签名,从而使收信人可以确信邮件是谁发来的。它让用户可以安全地和用户从未见过的人通信,事先并不需要任何...

    应用密码学,全文,doc被压缩无密码RAR

    15.7 级联多重加密算法 291 15.8 组合多重分组算法 292 第十六章 伪随机序列发生器和序列密码 293 16.1 伪随机序列发生器 293 16.2 线性反馈移位寄存器 297 16.3 序列密码的设计与分析 304 16.4 使用LFSR的序列密码 ...

    Java加密和数字签名编程

    本文主要谈一下密码学中的加密和数字签名,以及...主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java

    Python内置加密模块用法解析

    非对称加密(公匙加密):数据加密和解密使用的不同密钥,主要用于身份的验证(DSA,RSA) 单向加密:只能加密不能解密,主要用于解决数据的完整性(MD5,SHA系列算法) Python内置加密模块: hashlib 主要提供...

    [详细完整版]网络安全.docx

    网络安全全文共7页,当前为第1页。网络安全全文共7页,当前为第1页。... 常见的密码技术有 非对称密钥算法 、 对称密钥算法 和 单向散列函数 。 认证是对通信对象的验证;授权是验证用户在系统中的权限

Global site tag (gtag.js) - Google Analytics