1.简述对称加密与不对称加密的特点及其原理
对称加密:
(1)加密和解密使用同一个密钥。
(2)私钥算法以块为单位加密数据,一次加密一个数据块,因此支持数据流。
对称加密的优点:保密强度高,加、解密速度快,适合加密大量数据。
对称加密的缺点:通信双方使用相同的密钥和iv加密,发送方需要先将密钥和iv传送给接收方。如果攻击者拦截了密钥和iv,也就等于知道了如何解密数据。
不对称加密:
(1)使用一个需要保密的私钥和一个可以对任何人公开的公钥。用公钥加密的数据只能用私钥解密,反之用私钥加密的数据只能用公钥解密。
(2)私钥加密算法使用长度可变的缓冲区,因此无法使用流。
不对称加密的优点:更不容易被攻击
缺点:由于无法使用流,因此不适合加密大量数据。
2.如果有两个内容相同的原始数据块,使用.NET提供的对称加密类得到的加密后的两个数据块内容相同吗?为什么?
【解答】
不相同。
原因:.NET类库中提供的块密码类使用密码块链(CBC,Cipher Block Chaining)的默认链模式。该模式下,通过使用一个密钥Key和一个初始化向量(IV,Initialization Vector)对数据执行加密转换。加密时先使用初始化向量IV加密第一个纯文本块,然后每个后续纯文本块都会在加密前与前一个密码文本块进行按位“异或”(XOR)运算。因此,每个密码文本块都依赖于它前面的块。这样一来,两个相同的明文块的输出就会不同,从而使数据的安全系数大大提高。
3.简述网络应用开发中的加密与解密的一般实现方案。
【解答】
一般实现方案为:
(1)传输双方均各自生成一个公钥/私钥对。
(2)通过TCP交换公钥。
(3)双方各自生成一个对称加密用的密钥,并使用对方的公钥加密新创建的密钥。
(4)双方将加密后的对称加密用的密钥发送给对方,以便对方利用此密钥解密。
(5)双方使用对称加密进行会话。
4.简述Hash算法的概念及其特点。
【解答】
Hash算法也叫散列算法,其功能是把任意长度的二进制值映射为较小的固定长度的二进制值,实现原理就是提供一种数据内容和数据存放地址之间的映射关系。利用Hash算法得到的这个固定长度的较小的二进制值叫Hash值。
Hash算法具有如下特点。
(1)散列效果好。即使原始数据只发生一个小小的改动,数据的散列也会发生非常大的变化。
(2)散列函数不可逆。即不可能从散列结果推导出原始数据。
(3)对不同的数据进行Hash运算不可能生成相同的Hash值。
(4)Hash算法的用途主要有两大类:一类是将Hash值作为消息身份验证代码(MAC,Message Authentication Code),用于和数字签名一起实现对消息数据进行身份验证;另一类是将Hash值作为消息检测代码(MDC,Message Detection Code),用于检测数据完整性。
(5)在应用程序中,可以利用数字签名实现数据身份验证和数据完整性验证。数据身份验证是为了验证数据是不是持有私钥的人发送的;数据完整性验证则用于验证数据在传输过程中是否被修改过。
5.数字签名有什么意义?简要回答如何实现数字签名。
【解答】
意义:为了验证接收者接收的文件是否和原始文件完全相同。
如何实现:数字签名是利用私钥加密必须用公钥解密这个原理来实现的。实现思路是,发送方先将发送的消息使用哈希函数创建消息摘要,然后用私钥对消息摘要进行加密,以创建发送方的个人签名。接收方收到消息和签名后,使用发送方的公钥解密该签名,以恢复消息摘要,并使用发送方所用的同一哈希算法对该消息进行哈希运算。如果接收方计算的消息摘要与收到的消息摘要完全匹配,则接收方可以确保消息在传输过程中没有修改。注意,因为公钥不是保密的,所以任何人都可以验证签名。