密码学包括两个分支:密码编码学和密码分析学。密码编码学主要研究安全的密码算法和协议,来实现信息加密保护或消息认证;密码分析学主要研究破译密文信息,进而获取对应的明文信息,这两个分支既相互对立又相互依存,正是这种对立统一的关系推动了密码学自身的发展。密码算法是密码学的核心 ,现代密码算法的研究可大致分为三类:对称密码算法(又称为私钥密码算法)、非对称密码算法(又称为公钥密码算法)和Hash算法。以下是对密码算法以及在公钥密码体制的数字签名技术的介绍。
1.对称算法
对称密码算法是指加密密钥和解密密钥相同的密码算法,又称单密钥算法。如图1所示(其中M-明文空间,C-密文空间,K-密钥空间,E-加密算法,D-解密算法,下同)。
图1 对称密码
对称密码体制中加密密钥和解密密钥必须同时保存,其特点为加密速度快,适用于大数据加密,但密钥管理困难。
对称密码算法又可以分为流密码算法和分组密码算法,常见的对流密码算法有RC4;常见的分组密码算法有DES、IDEA、RC2、AES、SM4等。
2.非对称算法
非对称密码体制和对称密码体制最大的区别在于非对称密码体制中加密密钥和解密密钥不同,从一个密钥很难推导出另外一个密钥,非对称密码算法又称公开密钥算法或公钥算法。该算法使用一个密钥进行加密,用另外一个密钥进行解密,公钥密码成对出现,其中一个密钥可以公开,称为公钥,另外一个必须保密,称为私钥。加解密过程如图2所示。
图2 非对称密码体制
非对称密码体制特点有密码易管理,不需要传送密钥,每个用户只需保存好自己的私钥,主要应用于数据加密、数字签名和身份认证。
常见的非对称密码算法有RSA、DH、DSA、ECDSA、ECC、SM2等。
3.摘要算法
摘要算法是指把任意长的输入消息数据转化为固定长度的数据的一种密码算法,又称哈希函数、单列函数、散列函数、杂凑函数。输出固定的值为称为Hash值、杂凑值或消息摘要。
设为一个Hash 函数, 该函数需满足以下几个条件:
1) 输入的长度任意,输出的长度固定;
2) 对于给定的输入,计算输出的Hash值容易;反过来,对于给定的Hash 值,找出输入,使得在计算上不可行;
3)两个不同的输入输出相同,使得在计算上不可行;
常见的摘要算法有MD5、SHA1、SM3等。
4.数字签名
数字签名又称电子签名,其思想来源于手写签名,可以理解为数字世界中的电子签名,数字签名具有和物理签名一样的法律效力。
数字签名的功能主要包括:接收方能够确认发送方的签名,并且不能仿造;发送方发出后的信息,不能再否认;接收方接收到的签名信息,不能否认;若发生争执,可有充分的证据进行审判。基于以上功能的要求,数字签名只能通过非对称密码体制来实现,数字签名制作和验证过程如图3所示。
图3 数字签名制作和验证过程
数字签名技术的流程如下:
Step1 发送方A使用Hash算法对消息M运算,生成摘要值;
Step2 发送方A使用自己的私钥对信息摘要进行签名(加密);
Step3 发送方A把信息本身和已经签名好的信息摘要一起发送给接收方B;
Step4 接收方B使用相同的Hash算法对接收的信息本身进行运算,生成新的信息摘要;
Step5 接收方B使用发送方A的公钥对已经签名的信息摘要进行验签(解密),获取发送方A的信息摘要;
Step6 接收方B比较两个信息摘要是否相同,如果相同则可以确认发送方A的身份,以及信息没有被修改过;否则,表明信息被修改过。