理论教育 S/MIME在信息安全基础中的应用

S/MIME在信息安全基础中的应用

时间:2023-11-24 理论教育 版权反馈
【摘要】:签名的数据消息只能由具有S/MIME功能的收件人查看。图7-5给出了使用S/MIME的一个典型例子。为了保护数据,S/MIME使用称为Radix-64或Base64的编码方案,将签名或签名加消息映射成可打印的ASCII字符。在S/MIME中,每个密钥仅使用一次。在接收端,S/MIME使用接收者的ElGamal私钥来恢复会话密钥,然后使用会话密钥和3DES算法来恢复明文消息。S/MIME使用符合国际标准X.509 v3的证书。

S/MIME在信息安全基础中的应用

S/MIME被定义为一组其他MIME内容类型(见表7-1),并提供了签名和/或加密电子邮件的功能。从本质上讲,这些内容类型支持4个新功能。

表7-1 S/MIME的内容类型

(1)封装数据(Enveloped Data):此功能包括任何类型的加密内容,以及一个或多个收件人的加密内容的加密密钥。

(2)签名数据(Signed Data):数字签名是通过用私钥加密内容的消息摘要形成的。然后使用Base64编码方法对内容加上签名进行编码。签名的数据消息只能由具有S/MIME功能的收件人查看。

(3)透明签名数据(Clear-Signed Data):与签名数据一样,对内容进行数字签名。不同的是,仅对数字签名进行Base64编码。因此,没有S/MIME功能的收件人可以查看邮件内容,但无法验证签名。

(4)签名并封装数据(Signed and Enveloped Data):仅签名和仅加密的实体可以嵌套,这样,加密数据可以被签名,签名数据或透明签名数据可以被加密。

图7-5给出了使用S/MIME的一个典型例子。

图7-5 创建S/MIME消息的典型过程(www.daowen.com)

1. 签名和透明签名数据

用于对S/MIME消息进行签名的默认算法是DSS和SHA-1。该过程工作如下:首先,使用SHA-1把要发送的消息映射成160 bit的消息摘要/散列码。根据前面学过的知识,我们可以把这个消息摘要看成是这个消息的唯一指纹,因为几乎不可能有人改变这个消息或者用另一个消息替换它之后,还能得到相同的消息摘要。然后,使用DSS算法和发送方的DSS私钥加密消息摘要,其结果就是消息的数字签名,将其附加到消息上。现在,获得此消息的任何人都可以重新计算消息摘要,然后使用DSS算法和发送方的DSS公钥解密签名。如果签名中的消息摘要与重新计算的消息摘要匹配,则签名有效。此操作仅涉及加密和解密一个160 bit的数据块,因此占用的时间很短。

作为一种替代方案,也可以用RSA算法代替DSS算法。也就是RSA算法与SHA-1或MD5消息摘要算法一起使用,来生成消息的签名。

数字签名是一个二进制串。以二进制串的形式在Internet电子邮件系统中发送邮件时,可能会导致邮件内容的意外更改。原因是某些电子邮件软件会尝试通过查找控制字符(如换行符)来解释消息的内容。为了保护数据,S/MIME使用称为Radix-64或Base64的编码方案,将签名或签名加消息映射成可打印的ASCII字符。Base64编码方案将3个字节的二进制数据映射为4个ASCII字符。

2. 封装数据

用于加密S/MIME消息的默认算法是3DES和称为ElGamal的公钥密码方案。ElGamal是一种基于Diffie-Hellman密钥交换算法的公钥密码算法。首先,S/MIME生成一个伪随机密钥,这个密钥用于使用3DES或一些其他的常规加密方案加密消息。在任何常规的加密应用中,必须解决密钥分发的问题。在S/MIME中,每个密钥仅使用一次。也就是说,对每个新消息加密时都需要产生一个新的伪随机密钥。这个会话密钥被绑定到消息上并和它一起传输。不过该会话密钥已经使用ElGamal算法并利用接收者的ElGamal公钥进行了加密。在接收端,S/MIME使用接收者的ElGamal私钥来恢复会话密钥,然后使用会话密钥和3DES算法来恢复明文消息。

与数字签名一样,加密后的消息和会话密钥是二进制串,需要使用Base64编码方案将其转换为ASCII格式。

从前面的讨论可以看出来,无论是签名还是封装数据,S/MIME的使用依赖于公钥证书。S/MIME使用符合国际标准X.509 v3的证书。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈