信息安全-密码学(一)
数据在传输过程中,主要会面临窃听、篡改、欺骗、抵赖四个问题。
·窃听:数据在传输过程中,敏感信息被中间人窃听
·篡改:中间人对用户之间的通信信息进行修改、删除或插入,再发送给接收者
·欺骗:攻击者将伪造的信息发送给接收者
·抵赖:信息发送方否认已发送过的信息
密码技术是保障数据安全可靠传输的关键技术,针对上述问题,人们提出了相应的应对措施和解决方案,包括加密解密、数字签名、消息认证码、数字证书等,我们将用三篇文章分别对密码技术的相关知识进行分享。第一篇文章,我们将介绍对称加密、非对称加密、散列函数、混合加密、消息认证码的相关知识。
数据在传输过程中,使用到的密码技术主要有以下三种:
1、对称加密
2、非对称加密
3、散列函数
一、对称加密
对称加密算法又称为私钥加密算法,该算法在对信息进行加密和解密时使用的是相同的密钥,所以又称为共享密钥加密算法。
在通信开始之前,发送方和接收方需要约定好所使用的密钥。在通信过程中,信息发送方先使用密钥对明文信息进行加密后再发送给接收方,接收方收到加密信息后,用相同的密钥将加密信息解密成明文信息,使用对称加密进行通信的过程如图1所示。
图1 对称加密通信过程
对称加密的优点:
·加密和解密的速度快,适合对大量的数据进行处理;
·算法易于实现,对硬件和软件资源的需求较低。
对称加密的缺点:
·存在密钥分发问题:在使用对称加密算法进行通信时,发送方加密和接收方解密使用的是同一个密钥,在不安全的通信环境下,密钥生成方将生成的密钥发送给另一方的时候,存在密钥被窃取的风险,一旦密钥被中间人窃取,中间人就可以进一步破解通信双方所传输的加密信息并可实现篡改和伪造等攻击,密钥分发问题的示意图如图2所示。
图2 密钥分发问题示意图
常见的对称加密算法:
(a)AES(Advanced Encryption Standard):高级加密标准,常用的包括AES-128、AES-192和AES-256。
(b)DES(Data Encryption Standard):数据加密标准,DES的密钥长度为64位,其中有8位用于校验,因此DES的有效密钥长度为56位。
由于DES的密钥长度较短,已经被认为是不安全的,容易被暴力破解,AES是目前最常用的对称加密算法。
二、非对称加密
非对称加密算法又称为公钥加密算法,所谓非对称,是指该算法在加密和解密时使用的是不同的密钥。加密时使用的是“公开密钥”,简称为“公钥”,解密时使用的是“私有密钥”,简称为“私钥”,由公钥进行加密的信息,只能使用对应的私钥才能成功解密。
在通信开始之前,接收方需要生成一对密钥(公钥加私钥),并需要将其中的公钥发送给接收方。在通信过程中,发送方先使用接收方的公钥将明文信息进行加密后发送给接收方,接收方收到加密信息后,使用自己的私钥对密文进行解密,得到明文信息,整个非对称加密通信过程如图3所示。
图3 非对称加密通信过程
非对称加密的优点:
·安全性高,解密所使用的私钥不对外分发,中间人窃取公钥无法破解加密信息
非对称加密的缺点:
·加密和解密的速度慢,花费时间长,只适合对少量的数据进行处理
此外,非对称加密不会存在密钥分发问题,但同样会存在中间人攻击的问题,攻击过程可根据以下几个步骤进行理解:
(1)信息接收方首先生成自己的一对密钥(公钥+私钥),并将生成的公钥(PU1)发送给信息发送方;
(2)调包公钥:中间人拦截了接收方发送的公钥(PU1),并向发送方发送中间人自己的公钥(PU2);
(3)发送方接收到中间人的公钥(PU2)却误以为是接收方的公钥(PU1),发送方使用错误的公钥(PU2)对信息进行加密并发送;
(4)中间人拦截发送方所发送的信息并使用自己的私钥(PR2)进行解密,即可获得明文信息;
(5)中间人再用拦截到的接收方公钥(PU1)加密自己篡改或伪造后的信息并发送给接收方;
(6)接收方接收到密文,因为能用自己的私钥(PR1)进行解密,便误以为该信息确实是由发送方所发送的。
由上述步骤可知,此次通信双方所传输的信息完全由中间人所控制,示意图如图4和图5所示。
图4 中间人调包公钥
图5 中间人攻击
常见的非对称加密算法:
(a)RSA:名称是由该算法的三个发明人姓氏的首字母组成,目前RSA-512、RSA-768已被破解,此外RSA-1024虽然未被破解,但已被认为存在安全风险,推荐使用至少2048位密钥长度的RSA算法。
(b)DSA(Digital Signature Algorithm):数字签名算法,一般推荐使用1024位或更高的密钥长度来确保DSA算法的安全性。
(c)ECC(Elliptic Curve Cryptography):椭圆曲线加密算法,较短的ECC密钥长度能提供与更长的RSA密钥长度相当的安全性,如256位的ECC密钥加密强度等同于3072位RSA密钥的水平。
三、散列函数
散列函数又称为哈希函数,用于将任意长度的输入信息通过散列算法变换成固定长度的输出,所输出的函数值称为散列值、哈希值或消息摘要。
散列函数有以下几个重要的特征:
1、输入信息的长度任意,输出长度固定;
2、整个散列函数的过程是单向的,意思是无法从变换后得到的散列值逆推出原始的输入信息,也即散列函数具有单向性,所以散列函数也被称为单向散列函数;
3、在使用相同的散列函数时,当输入信息相同,输出也必定相同;
4、输入信息发生任意微小变化,都会导致变换后输出的散列值不同,也即当使用相同的散列函数时,如果得到的两个散列值是不相同的,那么这两个散列值所对应的原始输入信息也一定是不相同的;
5、存在“散列冲突”的情况,指当输入的信息不同时,输出的散列值也可能相同,这种情况的概率非常小。
根据上述散列函数的特征,单向散列函数可用来检测传输信息是否被篡改,防篡改过程如图6所示。
图6 散列函数防篡改过程
常见的散列函数:
(a)MD5:输出128比特长的消息摘要。
(b)SHA-1(Secure Hash Algorithm1):安全哈希算法1,输出160比特长的消息摘要。
(c)SHA-2(Secure Hash Algorithm2):安全哈希算法2,是SHA-1的后继者,
SHA-2又可分为六个不同的算法标准,即SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256。
此外,MD5和SHA-1加密算法已经被破解,存在一定的安全隐患,目前多推荐使用SHA-256,即输出256位(32字节)长度的散列值。
四、混合加密
对称加密存在密钥分发的问题但对信息处理的速度快,而非对称加密没有密钥分发的问题,但对信息处理的速度慢,不适合应用于对大量数据进行加密和解密,为了结合这两种算法的优点,产生了混合加密的通信方式。
混合加密中的一个关键部分为数字信封,所谓数字信封是指发送方使用接收方的公钥来加密对称密钥并发送给接收方,该对称密钥用于之后通信信息的加密和解密。采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥,有效确保了对称密钥传输的安全性。
在一般的数据传输过程中,对密钥的传输次数较少,而对信息传输的次数较多,混合加密通信中只使用非对称加密来处理相对较少的对称密钥数据,而使用对称加密处理相对较多的信息数据,相对于单独使用非对称加密进行通信的情况,有效缩短了数据在加密和解密过程中所需要的时间。
五、消息认证码
消息认证码(Message Authentication Code,MAC)是指信息被一个密钥控制的公开函数作用后产生的一小段信息,用来校验某段信息的完整性,以及对身份进行验证,消息认证码可以被认为是一种与密钥相关联的单向散列函数,
通过哈希算法对信息进行处理时,只能判断信息是否被篡改,而消息认证码中集合了密钥机制,不仅能验证信息的完整性,还能确认信息的来源,对身份进行验证。在处理敏感数据或需要在不安全的通信环境中验证数据完整性和来源的情况下,MAC则更为适用。MAC的工作机制如图7所示。
图7 MAC工作机制
(1)发送方和接收方事先需要共享密钥;
(2)发送方使用对称密钥对明文信息进行加密,得到MAC值,之后将明文和MAC值一并发送给接收方;
(3)接收方收到明文和MAC值后,对明文使用对称密钥,计算出新的MAC值;
(4)接收方将自己计算出的MAC值和接收到的MAC值进行对比;
(5)如果两个MAC值相同,则可以说明消息是完整的,并且接收方可以判定接收到的信息来自于正确的发送方(只有密钥的拥有者才能加密和解密信息),也即认证成功,否则认证失败。
上一篇: 信息安全-密码学(二)
下一篇: 信息安全-TATR分析流程