数据安全实践:能力体系、产品实现与解决方案
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 加密算法

密码算法是一组规则,规定了加密和解密的方式。大多数算法是复杂的数学公式,以特定的顺序应用于明文。现今计算机系统中使用的许多密码算法是公开的,并不是加解密过程中需要保密的内容。

提供加密和解密的系统或产品称为密码系统,密码系统既可以是硬件组件形态的,也可以是程序代码形态的。密码系统使用加密算法(决定加密过程的复杂程度)、密钥以及必要的软件组件和协议。大多数加密方法需要使用密钥,这通常是一长串的位(bit),密钥与算法一起对文本进行加密和解密。在整个加解密过程中,密钥需要严格保密。

在加密中,密钥(密码变量)是一个包含大量随机位序列的值。这些位序列并非随意拼凑在一起的。一个算法包含一个密钥空间,密钥空间是一个可用于构造密钥的取值范围。当算法需要生成新密钥时,它会使用来自密钥空间的随机值。密钥空间越大,可用于表示不同密钥的值越多,密钥的随机性越强,就越难被发现。例如,如果一个算法允许密钥长度为2位,则该算法的密钥空间大小将为4(22=4),这也代表了可能的不同密钥的总数。较大的密钥空间允许更多可能的密钥。(随着硬件算力的提升,密钥的大小也需要不断增长,通常使用256位、512位甚至1024位或更大的密钥。)512位的密钥大小将提供2512种可能的组合(密钥空间)。加密算法应该使用整个密钥空间,并尽可能随机地选择组成密钥的值。

密码学上有一个柯克霍夫原则(Kerckhoffs's Principle):即使密码系统的所有细节已为人悉知,只要密钥未泄露,它就应当是安全的。

密码算法的分类基于算法和密钥两个因素,目前主要有两种类型,分别是对称加密和非对称加密。对称加密算法在加密过程和解密过程中使用同一个密钥,非对称加密算法则需要使用两个不同的密钥(称为公钥和私钥),分别用于加密过程和解密过程。

根据加密所用到的算法,对称加密还可以分为两种基本类型:替换和换位(置换)。替换密码用不同的位、字符或字符块替换位、字符或字符块。换位密码不会用不同的文本替换原始文本,而是移动原始值。它对位、字符或字符块的位置重新调整,以隐藏原始含义。