Skip to content

加密与应用

什么是加密

数据加密是一种信息安全关键技术,通过使用特定的加密算法密钥将原始的、可读的明文数据转化为看似随机且不可读的密文数据,以确保数据在传输过程中或静止状态下不被未经授权的第三方获取或解读。

简单来讲加(解)密就是锁(算法)解锁(密钥)的过程。

为什么要加密

我们思考这样一个场景。小明想给小强发一封信,但是不想让其他人知道信的内容,如果不对信的内容进行加密,那么信的内容很容易被邮递员知道。

一个简单的加密

聪明的小明将信中的每一个字母在26个字母表中分别向后取一位,比如 node 会变成 opef,这样其他人就不知道信中的内容了。

这个故事中:

  • 向后偏移一个字母就是一种 加密算法
  • node 就是 明文
  • opef 就是 密文

这个加密方式就是著名的恺撒加密,是一种对称加密

遇到了问题

没过多久,小明发现这种事先与小强约定好的加密方式很快被邮递员发现。于是小明又想了一个新的办法,小明让小强制作了一个有2个锁的邮箱,一个口只能进,一个口只能出。每次自己写好信便打开盒子的进信口投进去,让邮递员把盒子给小强,小强拿到盒子后打开出信口便能够看到内容。

这个故事中:

  • 拥有两个锁的邮箱相当于 加密算法
  • 原始信件 就是 明文
  • 放到邮箱中的信件 就是 密文

其中公钥是公开的,而私钥只有小强一个人有,任何人都可以复制一份,这种加密方式叫 非对称加密

小强的回信

由于公钥是公开的,小强为了确保通知小明自己收到的是小明的信,而不是邮递员伪造的,决定采用数字签名的方式回信。

  1. 小强对很长的信先用Hash函数,生成信件的摘要(digest)。(这个过程可以简单的理解为压缩)
  2. 然后,小强使用私钥,对这个摘要(digest)加密,生成"数字签名"(signature)。
  3. 小强将这个签名,附在信件下面,一起发给小明。
  4. 小明收信后,取下数字签名,用小强的公钥解密,得到信件的摘要。
  5. 小明再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要(digest)进行对比。如果两者一致,就证明这封信未被修改过。由此证明,这封信确实是小强发出的。 小强对回信的认证过程就是数字签名,主要目的是确定内容的完整性内容的发送方是否是正确的。

新的问题

有一天邮递员潜入小强的家中,把小强的公钥私钥换成自己制作的公钥私钥了,并一直冒充小明与小强进行进行通信。时间久了小明发现小强一直没有真正收到自己的信,于是小明想到一个办法。小明让小强找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对小明的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

加密都有哪些方式

通过上面的故事我们了解到,加密主要分为两大类:对称加密非对称加密

对称加密

对称密钥加密使用共享的单个密钥进行加密和解密。在对称加密中,加密消息的发送者和接收者都可以访问相同的密钥。

特点

  • 加密速度快,适合大量数据的加密。
  • 密钥管理较为困难,因为双方必须安全地共享同一把密钥。
  • 安全性依赖于密钥的安全性,一旦密钥泄露,加密信息就可能被破解。

常见算法

  • AES(Advanced Encryption Standard)高级加密标准
  • DES(Data Encryption Standard)数据加密标准
  • 3DES(Triple Data Encryption Algorithm)三重数据加密算法
  • RC4(Rivest Cipher 4)

应用场景

  • 密码加解密
  • 文件加解密

对称加密过程

对称加密整个流程如下:

  1. 生成共享密钥,一份给加密方,一份给解密方
  2. 使用共享密钥明文进行加密
  3. 使用密文进行传输
  4. 使用共享密钥密文进行解密

共享密钥 + 加密算法 => 密文 密文 + 解密算法 => 明文

可以看到整个加密过程是非常简单的,其中共享密钥加密算法是公开的,所以为什么说对称加密是"不安全"的,其实指的是在网络传输过程,由于前端代码是暴露在客户端的,所以黑客很容易从前端代码网络拦截中获取到共享密钥加密算法从而对用户提交的敏感信息如:密码个人信息进行拦截收集。

非对称加密

非对称加密(也称为公钥加密)使用一个私钥和一个公钥。使用公钥和私钥加密的数据需要公钥和接收者的私钥才能解密。

特点

  • 加密速度较慢,不适合大量数据的直接加密。
  • 密钥管理相对容易,因为公钥可以公开发布,而私钥则保持私密。
  • 提供了更好的安全性,即使公钥被广泛传播,只要私钥不被泄露,信息就是安全的。

常见算法

  • RSA(Rivest-Shamir-Adleman)
  • ECC(Elliptic Curve Cryptography)椭圆曲线密码学
  • DSA(Digital Signature Algorithm)数字签名算法

应用场景

  • 密钥交换,例如在建立安全通信之前交换对称加密使用的密钥。
  • 数字签名,确保信息的完整性和来源的真实性。

对非称加密过程

非对称加密整个流程如下:

  1. 生成一对公私钥,公钥给加密方,私钥给解密方
  2. 使用公钥明文进行加密
  3. 使用密文进行传输
  4. 使用私钥密文进行解密

非对称加密也是一样的道理,其中公钥加密算法是公开的,私钥是不需要进行传输的,所以非对称加密过程中私钥的保密性安全的关键。

加密过程中的其他知识点

在复杂的加密过程中还涉及到Hash算法、密钥交换算法、加解密算法、编码

哈希(Hash)

哈希(Hash)是一种数据结构和算法,它能够将任意长度的输入(通常是字符串)通过特定的算法转换成固定长度的输出,这个输出被称为哈希值、散列值、哈希码或消息摘要。

特点

  • 固定长度输出: 不论输入数据的大小如何,哈希算法都会产生一个固定长度的输出。例如,SHA-256算法总是产生256位(32字节)的哈希值。

  • 不可逆性: 哈希算法是单向函数,从哈希值很难逆向推导出原始输入数据。这使得哈希在密码学中非常有用,特别是在存储密码时。

  • 唯一性: 理想情况下,不同的输入应该产生不同的哈希值。然而,由于输出空间有限,不同输入可能会产生相同的哈希值,这称为哈希碰撞。优秀的哈希算法应尽量减少碰撞的发生。

  • 高效性: 哈希算法能够在较短的时间内计算出哈希值,即使对于大量的数据也是如此。这使得哈希在实时应用中非常实用。

  • 敏感性: 即使输入数据的微小变化,也会导致哈希值发生显著的变化。这种特性使得哈希在数据完整性检查中非常有效。

常见算法

  • MD5 (Message-Digest Algorithm 5)
  • SHA-256 (Secure Hash Algorithm 256)
  • BLAKE2

应用场景

  • 生成摘要
  • 密码存储

编码

编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。

特点

  • 标准化: 许多编码标准已经被国际组织(如ISO、IEEE等)认可,确保了不同系统之间的兼容性和互操作性。

  • 安全性: 通过加密算法对数据进行编码,可以保护敏感信息不被未授权访问。

  • 效率: 适当的编码可以减少存储空间的需求或加快数据传输速度。

  • 可扩展性: 好的编码设计应该支持未来的发展和技术进步。

  • 易解析性: 编码后的数据应易于计算机处理和解析。

常见编码

  • ASCII(American Standard Code for Information Interchange)
  • Unicode
  • UTF-8 (8-bit UCS/Unicode Transformation Format)

应用场景

  • 数据交换和传输
  • 文本文件存储

总结

  1. 涉及到敏感信息的地方,都应该考虑使用加密技术来提高安全性
  2. 对称加密的密钥和非对称加密私钥保密性是保证加解密过程安全的关键。
  3. 非对称加密中
    • 加密场景,希望只有我才能解密,别人只能加密。即公钥加密,私钥解密
    • 签名场景,希望只能我才能签名,别人只能验证。即私钥签名,公钥验签
  4. 数字签名使用私钥对数据摘要进行签名,并附带和数据一起发送,可以起到防篡改、防伪装、防否认的作用。
  5. 哈希可以压缩信息长度且与原始数据产生唯一映射关系,起到减少信息提高性能和防止第三方使用公钥解开签名后,拿到原始数据的作用。
  6. 证书中心负责验证申请证书的个人、组织或网站的身份信息,确保这些信息的真实性和合法性,起到公证的作用。
  7. 编码可以统一不同系统、不同开发语言标准。