加密技术解析(现代加密技术简介)(1)


对称加密算法 :

顾名思义,加密和解密过程的密钥是相同的。 该类算法优点是加解密效率(速度快,空间占用小)和加密强度都很高。 缺点是参与方需要提前持有密钥,一旦有人泄露则系统安全性被破坏; 另外如何在不安全通 道中提前分发密钥也是个问题,需要借助额外的 Diffie–Hellman 协商协议或非对称加密算法 来实现。 对称密码从实现原理上可以分为两种:分组密码和序列密码。前者将明文切分为定长数据块作为基本加密单位,应用最为广泛。后者则每次只对一个字节或字符进行加密处理,且密码不断变化,只用在一些特定领域(如数字媒介的加密)。 对称加密算法适用于大量数据的加解密过程;不能用于签名场景;并且需要提前安 全地分发密钥。


非对称加密算法 :

非对称加密是现代密码学的伟大发明,它有效解决了对称加密需要安全分发密钥的问题。 顾名思义,非对称加密中,加密密钥和解密密钥是不同的,分别被称为公钥(Public Key)和 私钥(Private Key)。私钥一般通过随机数算法生成,公钥可以根据私钥生成。 其中,公钥一般是公开的,他人可获取的;私钥则是个人持有并且要严密保护,不能被他人 获取。 非对称加密算法优点是公私钥分开,无需安全通道来分发密钥。缺点是处理速度(特别是生成密钥和解密过程)往往比较慢,一般比对称加解密算法慢 2~3 个数量级; 同时加密强度也往往不如对称加密。 非对称加密算法的安全性往往基于数学问题,包括大数质因子分解、离散对数、椭圆曲线等 经典数学难题。 非对称加密中公钥是公开的,因此任何人都可以利用它加密给定明文,获取对应的密文,这就带来选择明文攻击的风险。 为了规避这种风险,现代的非对称加密算法(如 RSA、ECC)都引入了一定的保护机制:对 同样的明文使用同样密钥进行多次加密,得到的结果完全不同,这就避免了选择明文攻击的 破坏。 在实现上可以有多种思路。一种是对明文先进行变形,添加随机的字符串或标记,再对添加 后结果进行处理。另外一种是先用随机生成的临时密钥对明文进行对称加密,然后再将对称 密钥进行加密,即利用多层加密机制。

混合加密机制 :

混合加密机制同时结合了对称加密和非对称加密的优点。 该机制的主要过程为: 先用非对称加密(计算复杂度较高)协商出一个临时的对称加密密钥 (或称会话密钥),然后双方再通过对称加密算法(计算复杂度较低)对所传递的大量数据进行快速的加密处理。 典型的应用案例是网站中使用越来越普遍的通信协议 -- 安全超文本传输协议(Hyper Text Transfer Protocol Secure,HTTPS)。 与以明文方式传输数据的 HTTP 协议不同,HTTPS 在传统的 HTTP 层和 TCP 层之间引入 Transport Layer Security/Secure Socket Layer(TLS/SSL)加密层来实现安全传输。 采用 HTTPS 建立安全连接(TLS 握手协商过程)的基本步骤如下:

为了保障前向安全性(Perfect Forward Secrecy),TLS对每个会话连接都可以生成不同的密钥,避免某个会话密钥泄露后对其它会话连接产生安全威胁。需要注意,选用合适的加密算法套件对于TLS的安全性十分重要。要合理选择安全强度高的算法组合,如 ECDHE-RSA 和 ECDHE- ECDSA 等,而不要使用安全性较差的 DES/3DES 等。


加密算法套件包括一组算法,包括交换、认证、加密、校验等:


Diffie–Hellman 密钥交换协议

Z = Z_A = A_B,因为在 mod p 的前提下,Y^x =(g^y)^x =g^(xy) = (g^x)^y=X^y。而信道监听者在已知 p,g,X,Y 的前提下,无法求得 Z。


消息认证码(Hash-based Message Authentication Code,HMAC)

利用对称加密算法的认证机制,典型的 HMAC生成算法包括 K,H,M三个参数。K 为提前共享的对称密钥,H为提前商定的 Hash 算法(如 SHA-256),M为要传输的消息内容。三个参数缺失了任何一个,都无法得到正确的 HMAC 值。


数字签名(Digital Signature)


消息摘要(Message Digest):

消息摘要可以通过Hash算法将消息映射到一个固定长度的字符串。值唯一的意思是不同的消息转换的摘要是不同的,并且能够确保唯一。该过程不可逆,即不能通过摘要反推明文。常用的消息摘要算法有MD5、SHA1、SHA256、SHA512等。


数字证书

数字证书可以分为加密数字证书(Encryption Certificate)和签名验 证数字证书(Signature Certificate)。前者往往用于保护用于加密用途的公钥; 后者则保护用于签名用途的公钥。两种类型的公钥也可以同时放在同一证书中。 一般情况下,证书需要由证书认证机构(Certification Authority,CA)来进行签发和背书。权 威的商业证书认证机构包括 DigiCert、GlobalSign、VeriSign 等。用户也可以自行搭建本地 CA 系统,在私有网络中进行使用。


PKI(Public Key Infrastructure)体系

解决证书生命周期相关的认证和管理问题。 一般情况下,PKI 至少包括如下核心组件:


证书的签发

CA 对用户签发证书实际上是对某个用户公钥,使用 CA 的私钥对其进行签名。 用户证书的签发可以有两种方式。可以由用户自己生成公钥和私钥,然后 CA 来对公钥内容进 行签名(只有用户持有私钥);也可以由 CA 直接来生成证书(内含公钥)和对应的私钥发给 用户(用户和 CA 均持有私钥)。 前者情况下,用户一般会首先自行生成一个私钥和证书申请文件(Certificate Signing Request,即 csr 文件),该文件中包括了用户对应的公钥和一些基本信息,CA 只需要对证书请求文件进行签名。例如用openssl 来生成csr文件和对应的私钥文件:openssl req -new -keyout private.key -out for_request.csr , 查看csr文件内容:$ openssl req -in for_request.csr -noout -text


默克尔树(又叫哈希树)

是一种典型的二叉树结构,由一个根节点、一组中间节点和一组叶节点组成,最下面的叶节点包含存储数据或其哈希值,非叶子节点(包括中间节点和根节点)都是它的两个孩子节点内容的哈希值。它具有:证明某个集合中存在或不存在某个元素 ,快速比较大量数据 ,快速定位修改 ,零知识证明等特点。


布隆过滤器(Bloom Filter)

是一种基于 Hash 的高效查找 结构,能够快速(常数时间内)回答“某个元素是否在一个集合内”的问题。


同态加密

具有同态性质的加密函数是指两个明文a、b满足Dec(En(a)⊙En(b))=a⊕b的加密函数,其中En是加密运算,Dec是解密运算,⊙、⊕分别对应明文和密文域上的运算。当⊕代表加法时,称该加密为加同态加密:当⊕代表乘法时,称该加密为乘同态加密。全同态加密是指同时满足加同态和乘同态性质,可以进行任意多次加和乘运算的加密函数。用数学公式来表达,即Dec(f(En(m1),En(m2),…,En(mk)))=f(m1,m2,…,mk),或写成:f(En(m1),En(m2),…,En(mk))=En(f(m1,m2,…,mk)),如果f是任意函数,称为全同态加密。


函数加密

同态加密保护的是数据本身,而函数加密顾名思义保护的是处理函数本身,即让第三方看不 到处理过程的前提下,对数据进行处理。 该问题已被证明不存在对多个通用函数的任意多密钥的方案,目前仅能做到对某个特定函数 的一个密钥的方案。

,