密码学可以有效的保障信息的机密性、完整性、认证性和不可否认性,是数据安全和隐私保护的基础工具。
传统加密技术的主要目标就是保护数据的机密性。一个加密算法被定义为一对数据变换。其中一个变换应用于数据起源(明文),所产生的响应数据项被称为密文。而另一个变化应用于密文,恢复出明文。这两个变换分别称为加密变换和解密变换。加密和解密的操作通常都是在一组密钥控制下进行的,分别称为加密密钥和解密密钥。主要有两大加密技术:一类是对称加密,另一类是公钥加密。对称加密的特征是加密密钥和解密密钥一样或者相互容易推出;公钥加密(非对称加密)的特征是加密密钥和解密密钥不同,从一个难以推出另一个。
对称加密技术
对称加密技术分为两种:一种是将明文消息按照字符逐位地加密,称为序列密码(流密码)
另一种是将明文消息分组(每组含有多个字符),逐组地进行加密,称为分组密码。
公钥加密技术(非对称加密)
公钥密码采用两个不同的密钥将加密功能和解密功能分开。一个密钥称为私钥,需要秘密保存;另一个密钥称为公钥,不需要保密。
这造成了对密码的设计的困难。因为公钥为攻击算法提供了一定的信息,我们希望给定公钥,要确定出私钥是计算上不可行的事情。
目前有两个流行的解决方案:一种是基于大整数因子分解问题,如RSA;另一种是基于离散对数问题的,如椭圆曲线,SM2。
椭圆曲线密码能用更短的密钥来获得更高的安全性,而且加密速度比RSA快。
SM2椭圆曲线公钥密码算法是中国的一个公钥密码标准,包括公钥加密算法、数字签名算法、密钥交换协议。
数字签名技术
数字签名是一种以电子形式存储的消息签名。数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名者有一个公钥和一个私钥,其中私钥用于产生数字签名。验证者用签名者的公钥验证签名。
公钥密码可提供功能强大的数字签名方案,而无须接收者秘密保存验证密钥。
Hash和MAC
Hash函数可以将任意长的消息压缩为固定长度的Hash值。
消息认证码(Message Authentication Code)技术,MAC算法也是基于一个大尺寸数据生成一个小尺寸数据,在性能上也需要避免碰撞,但MAC算法有密钥参与,计算结果类似于一个加密的Hash函数值,攻击者难以在篡改内容后伪造它。
密钥交换技术
通信算法在公开的网络环境中传送数据,一般要确保数据的机密性和可认证性。要达到这个目的,必须对传送的数据进行加密和认证,这就需要使用会话密钥。密钥交换协议就是两个或多个参与方在公开的网络环境中建立秘密的会话密钥的过程,会话密钥是协议参与产生的输入的函数。