第3章密码学编程
密码学是信息安全的基础,可应用于数据加解密、数字签名、安全认证、电子投票等领域。在理解密码学基本概念的基础上,可应用经典密码算法解决实际系统中的安全问题。
3.1密码学基本概念
经典密码学是指秘密书写的科学。密码(cipher)是一种秘密书写的方法。把明文(plaintext)变换为密文(ciphertext)或密报(cryptography),这种变换叫加密(encipherment或encryption)。而将密文变换为明文的过程称为解密(decipherment或decryption)。
加密和解密都要通过密钥(Key)的控制。加密/解密示意图如图31所示。
图31加密/解密示意图
密码学的研究领域可分为密码编码学(Cryptography)和密码分析学(Cryptanalysis)两个分支,分别研究密码的编制和破译问题。密码编码学和密码分析学是密码学的两个方面,两者既相互对立,又互相促进和发展。
密码编码学研究密码编码(也称为加密)、译码(也称为解密)的理论和算法。密码分析也叫做破译,密码分析学的主要任务是研究加密信息的破译或认证信息的伪造。它主要是对密码信息的解析方法进行研究。只有密码分析者才能评判密码体制的安全性。
3.1.1对称密码
对称密码算法又称为传统密码算法,其主要特征是加密算法与解密算法所使用的密钥是相同的,或者从一个容易推出另一个。对称密码算法可用于保护数据的机密性和完整性,还可以扩展到身份识别等。对称密码算法在*近半个多世纪的研究中得到了迅猛发展,有很多成熟的算法可供选择。具有代表性意义的算法有两类: 一类是分组密码算法; 另一类是序列密码算法。分组密码算法是把明文、密文分成等长的组,然后对这些等长的组进行变换,把明文变为密文,把密文变为明文。而序列密码算法则是通过算法把密钥k扩展为与明文或密文相一致的子密钥序列,然后明文与密文通过与该子密钥序列按位模2相加,把明文变为密文,把密文变为明文。代表性分组密码算法有DES、AES。其他的对称分组密码算法包括IDEA,RC5,CAST128等。
3.1.2公钥密码
公钥密码算法又称为非对称密钥密码算法,其主要特征是加密密钥可以公开,而不会影响到解密密钥的机密性。它可用于保护数据的机密性、完整性和身份识别等。
公钥密码体制也称为双密钥密码体制或非对称密码体制,与此相对应,将序列密码和分组密码等称为单密钥密码体制或对称密钥密码体制。表31总结了单钥加密和公开密钥加密的重要特征。
……