Cryptography
概述
参考:
Cryptography(密码学)。大多数现代密码可以通过多种方式进行分类
- 第一种分类方式:依据加密时对明文的分解方式
- 具有固定大小的块,称为 Block cipher
- 适用于连续的符号留,称为 Stream cipher
- 第二种分类方式:依据密钥的使用方式
密码学背景
在现代时代之前,密码学着眼于消息的机密性(即加密),即将消息从一种可理解的形式转换为一种难以理解的形式,然后又在另一端再次转换,从而使拦截器或窃听者在没有秘密知识(即所需的密钥)的情况下无法读取该消息。用于解密该消息)。加密试图确保保密的通信,如那些间谍,军事领导人和外交官。在最近的几十年中,该领域已经超出了对机密性的关注范围,包括消息完整性检查,发送者/接收者身份验证,数字签名,交互式证明和安全计算等。
经典密码学
现代密码学
现在我们谈论的密码学,都是现代密码学的范畴
Public-key cryptography(公开密钥加密、非对称密钥加密),以及根据公开密钥加密方式而衍生出的其他认证授权等基础设施,是当代最常见,也是最常用的方式.
现代加密方式
Symmetric Key Algorithm(对称密钥算法)
参考:
使用相同的密钥来加密明文和解密密文。Symmetric Key Algorithm 也称为 对称密钥加密
加密规范:
- DES # Data Encryption Standard 数据加密标准。已被破解
- 3DES # 3 倍的 DES。最常用
- AES # Advanced Encryption Standard(高级加密标准)。最常用
- Blowfish
- Twofish
- IDEA # 商业加密算法
SKA 特点
特性:
- 加密和解密使用同一个密钥,效率高
- 将原始数据分割成固定大小的块,逐个进行加密
缺点:
- 密钥过多
- 密钥分发(分发密钥过程无法保证),为了解决对称加密算法每个人需要保存密钥过多的问题,可以使用公钥加密
- 数据来源无法确认
Public Key Cryptography(公开密钥密码学)
参考:
Public Key Cryptography(公开密钥密码学) 也称为 Asymmetric Key Algorithm(非对称密钥算法) 或 公开密钥加密,它是计算机通信安全的基石,保证了加密数据不会被破解。1976 年以前,所有的加密方法都是同一种模式:
- 甲方选择某种加密规则,对信息进行加密
- 乙方使用同一种规则,对信息进行解密
加密规范:
- RSA
- DSA
- ELGamal
由于 Symmetric-key algorithm(对称密钥算法) 的加密和解密使用同样规则,导致这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。因为大多数情况下,其实两方之间的通信,只有一方是需要加密的,另一方只需要知道信息内容。
1976 年,两位美国计算机学家 Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman 密钥交换算法"。这个算法启发了其他科学家。人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。
这种新的加密模式就被称为"非对称密钥算法"。
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。 (2)甲方获取乙方的公钥,然后用它对信息加密。 (3)乙方得到加密后的信息,用私钥解密。
如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。
1977 年,三位数学家 Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做 RSA 算法。从那时直到现在,RSA 算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有 RSA 算法。
这种算法非常可靠,密钥越长,它就越难破解。根据已经披露的文献,目前被破解的最长 RSA 密钥是 768 个二进制位。也就是说,长度超过 768 位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024 位的 RSA 密钥基本安全,2048 位的密钥极其安全。
PKC 特点
- 这种加密方式,需要一对密钥。只有公钥可以加密,私钥不能用来加密数据。
- Public key(公钥) # 公开给所有人。用来加密数据、验证签名。使用公钥把明文加密后所得的密文,只能使用对应的私钥才能解密并得到原本的密文。反之不行。
- Secret key(私钥) # 自己留存,必须保证其私密性。用来解密数据、签名。使用私钥创建数字签名,只能使用公钥才能验证该数字签名的有效性。反之不行。
- 一般情况,密钥对是通过程序自动生成的。首先生成私钥后,公钥包含在私钥当中
- Digital signature(数字签名)。签名提供的是真实性,而不是保密性。
- 所谓的数字签名,就像人们日常生活中在文件上签字一样,都是签名的一种。
- 而所谓的验证签名,其实就像日常生活中,看看签名的人的笔记与签名是否一致,等等类似的行为
总结一下:既然是加密,那肯定是不希望别人知道发送给我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
- 这种加密方式由于是单向加密、单向解密,所以如果双方都想要加密,则需要两对密钥,双方各自用对方的公钥加密信息发送给对方,然后双方再用自己的私钥解密阅读信息。
缺点
- 公钥加密可能出现的问题:当两者需要通信的时候,需要把公钥发送给对方,但是公钥是谁都可以获取的,那么在二者通信过程中,公钥就有可能被劫持,当公钥被劫持,劫持者把自己的公钥再发送给对方,那么双发再收到的信息,就是被劫持者篡改过的信息了。
- Public Key Certificate(公钥证书) 可以解决以上问题
应用场景
- 如果 A 持有私钥,B 持有对应公钥。那么此时 B 用对方的公钥加密一个对称密钥并发送给 A,A 使用私钥解密,以获得 B 发送的对称密钥,这时再发送的数据可以使用对称加密。
- 在互联网的 C/S 架构场景中。Server 公开公钥,Client 使用公钥加密信息发送给 Server(发送密码等敏感信息),Server 使用私钥解密后响应时,使用私钥签名,以便 Client 可以用公钥验证 Server 的真实性(防止钓鱼网站)。
- 如图所示,Alice 在一条消息的末尾签了名,消息内容是
Hello Bob!,这段签署的内容一般是对消息内容进行 hash 计算后,使用 Alice 的私钥的出来的。鲍勃同时收到消息和签名。他使用 Alice 的公钥来验证消息的真实性,即,如果使用公钥计算得出来的消息与原始消息完全匹配,那就证明,这条消息确实是 Alice 发送的。

Cryptographic hash function(单向加密、加密散列函数)
只能加密,不能解密,提取数据特征码,用来保证数据的完成性,实现数据的完整性校验
通常用来做数字证书的数字签名,提取数据的特征码后进行加密并放到数据后端,用来校验证书的完整性,所以证书的内容是被认可的
特点:定长输出、雪崩效应(原始数据的微小改变会导致计算结果的完全不同)
算法:
- md5
- sha1
- sha256
- sha384
- sha512….等
MAC:Message Authentication Code(消息认证码),单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.