快捷搜索:  汽车  科技

crypt函数的解密(Cryptography密码学基础)

crypt函数的解密(Cryptography密码学基础)Asymmetric Encryption在对称加密中还有其他一些知识点,感兴趣的朋友可以参考其他资料了解详细的内容:保密性是通过不同的 Encryption Algorithm 来实现的,这些 Encryption Algorithm 分为两大类 Symmetric 和 Asymmetric。Symmetric Encryption对称加密,“对称”的表现为加密和解密双方所掌握的 Key 是一模一样的。典型的对称加密算法有 DES,3DES,AES。AES 又有不同长度的 Key (128 192 or 256 bits)。目前应用最广泛的是 AES 算法。

Cryptography 是一个非常深奥的邻域,这里只是从网络工程的角度介绍一些最基础的知识。网络工程里面和 Cryptography 直接挂钩的就是 VPN 的部分,里面涉及到了各种算法的选择和配置。

Cryptography 主要是为了解决通信安全的几个问题:

  • Confidentiality 保密性
  • 确保只有通信双方才能看懂通信的数据
  • Integrity 完整性
  • 确保数据在传输过程中不会被篡改
  • authentication 认证
  • 在通信中证明自己的身份
  • Nonrepudiation 不可抵赖性
  • 对通信中执行的操作不可抵赖,比如明明发送了一个数据包就不可以抵赖说没有发送过

一些常用的词汇:

  • plaintext = 还为进行加密的数据
  • ciphertext = 加密后的数据
  • key = 加密用的密匙 (key 的长度越长就越安全)

crypt函数的解密(Cryptography密码学基础)(1)

Confidentiality

保密性是通过不同的 Encryption Algorithm 来实现的,这些 Encryption Algorithm 分为两大类 Symmetric 和 Asymmetric。

Symmetric Encryption

对称加密,“对称”的表现为加密和解密双方所掌握的 Key 是一模一样的。典型的对称加密算法有 DES,3DES,AES。AES 又有不同长度的 Key (128 192 or 256 bits)。目前应用最广泛的是 AES 算法。

crypt函数的解密(Cryptography密码学基础)(2)

在对称加密中还有其他一些知识点,感兴趣的朋友可以参考其他资料了解详细的内容:

  • 对称加密有两类 Stream Cipher 和 Block Cipher
  • Stream Cipher 的典型代表是 RC4,一种不安全的算法,WEP 就是应用了 RC4 导致很容易被破解
  • Block Cipher 的典型代表就是 DES,3DES,AES
  • Block Cipher 又有不同的 mode 例如 CBC,CTR,GCM,GMAC 等等

Asymmetric Encryption

非对称加密,“非对称”的表现为通信双方使用不同的 Key 来进行加密或者解密。

crypt函数的解密(Cryptography密码学基础)(3)

如图所示,A 和 B 都会产生自己的 key pair,包括一个 private key 和一个对应的 public key。加密和解密的过程将利用这一对 key pair 来完成。如果信息用 private key 进行加密,那么就可以用 public key 进行解密。反之,如果加密使用的是 public key,那么解密就使用 key pair 中对应的 private key。

在通信开始的时候双方将会进行 key exchange,在这个阶段双方将自己的 public key 传输给对方。传输数据时我们使用对方的 public key 对数据进行加密,接受数据时我们使用自己的 private key 进行解密。

常见的非对称加密算法有 RSA,ECC,DSA,DH 等。值得注意的是非对称加密算法不一定是用来对数据进行加密的。比如 DH 算法是用来解决 key exchange 的安全问题的,非对称加密算法也可以用来解决 authentication 的问题。

Symmetric vs Asymmetric

对称加密的优点是速度快,消耗资源少,适合对大量数据进行加密;缺点是需要通过其他方法来保证 key exchange 的安全性。

非对称加密的优点是利用 public key 对数据加密从而解决了在不安全的网络环境下进行 key exchange 的问题,public key 是公开给所有人的,但是 private key 不会在网络上进行传输;缺点是速度较慢,适合对少量数据进行加密。

在实际的部署中两种加密方式往往是结合在一起使用的。

Integrity

通过 hashing algorithm 我们可以知道数据在传输过程中是否被篡改,hash function 是一种单向不可逆的方程。

crypt函数的解密(Cryptography密码学基础)(4)

将任意长度的数据作为 input 放进一个 hash function 里面,可以得到一个唯一且长度固定的 output,这个 output 又称为 message digest。同样的 input 一定会得到同样的 output,通过 output 我们无法倒推出 input(因为 hash 单向不可逆),如果有人篡改了数据那么最终得到的 output 就一定会不同。

crypt函数的解密(Cryptography密码学基础)(5)

常见的 hash 算法有:

  • MD5
  • digest 128 bits,已不再安全
  • SHA-1
  • digest 160 bits,已不再安全
  • SHA-2
  • digest 有多种如 256 384 512 bits,是目前主流的算法

如果在传输的过程中有人同时对数据本身和附带的 digest 同时做了篡改,通过传统的 hash function 接收方是无法检测到的。通过使用 Hash-based Message Authentication Code (HMAC) 可以解决这种问题。常见的 HMAC 算法有 HMAC-MD5, HMAC-SHA1,HMAC-SHA256 等。

HMAC 的实现方法是在原有的 hash function 基础上多了一个 shared key,我们用这个 shared key 对 digest 进行加密。

crypt函数的解密(Cryptography密码学基础)(6)

只要攻击方无法得到 shared key 那么他一旦对数据和 digest 进行了篡改就会被接收放检测到。

crypt函数的解密(Cryptography密码学基础)(7)

HMAC 不仅仅实现了 integrity 同时也实现了 authentication,一旦接收方发现 MAC 不匹配也就意味着发送方的身份已经改变。

Authentication & Nonrepudiation

验证对方身份的方法有很多,最简单的就是用 PSK (pre-shared key),也就是两边同时配置好一样的 key,通信时只要 key 匹配就认为身份验证合格。使用这种 symmetric key 最大的问题是如何保证 key exchange 的安全性。

既然我们可以用 symmetric key 的方式来做认证那么我们也可以使用 asymmetric key。在非对称加密的时候发送方会用接收方的 public key 进行加密,在进行认证的时候我们就需要反过来做,发送方使用自己的 private key 进行加密,接收方用发送方的 public key 进行解密。因为 private key 和 public key 具有一对一的关系,所以只要能够用发送方的 public key 成功解密那么就可以认定发送方的身份是正确的。使用 private key 进行加密又被称为 “sign”。

在实际的应用中我们往往会使用 digital signature,这是一种将 hashing 和 asymmetric key cryptography 结合起来使用的方法。发送方对数据进行 hash 得到 digest,然后用自己的 private key 对这个 digest 进行加密,这个过程叫做 signing,得到的结果叫做 signature。发送方把数据和 signature 一起发送出去,接收放使用发送方的 public key 对 signature 进行解密得到一个 digest(解密成功就代表 authentication 和 Nonrepudiation 都成功),接收方同时使用相同的 hash function 对原始数据进行处理得到另一个 digest,只要这两个 digest 匹配就证明数据违背篡改(到这里也完成了 integrity 的检测)。所以 digital signature 是同时实现 authentication,integrity 和 nonrepudiation 的应用(注意这里不能实现 confidentiality,因为我们并未对原始数据进行加密)。

crypt函数的解密(Cryptography密码学基础)(8)

digital signature 在 digital certificate 中扮演了重要的角色,我们将在今天的 PKI (public key infrastructure) 章节中具体介绍 digital certificate。

猜您喜欢: