2006年2月28日提出这个问题:因为不使用S/MIME建立安全关联,如果接收方不支持发送方使用的消息摘要算法会怎么样?
答:安全关联是指两个或多个实体之间的关系,它解释了它们如何使用安全服务进行安全通信。例如,在联系期间的SSL会话期间建立安全关联。当用户想要建立SSL通信时,用户应该发送一个“客户问候”消息,其中包含他想要使用或支持的加密系统。服务器还会用“客户问候”来回答,并且还包含关于它所支持的加密系统的信息。然后,这个客户端负责选择它将与服务器共享的加密系统,以建立安全关联。当你对一封邮件进行数字签名时,你肯定不知道收件人使用的是什么邮件客户端软件,以及这个软件支持的加密系统,所以你无法建立安全关联。如您的问题所示,这可能会导致收件人的电子邮件客户端软件不支持创建此电子邮件的算法或哈希值。
一般来说,当收到数字签名的邮件时,电子邮件客户端软件将计算自己的邮件哈希值,使用公钥解密邮件中包含的哈希值,并比较这两个值。如果这两个值匹配,则签名信息的接收者可以保证该信息没有被篡改,并且是由私钥的所有者签名的。如果收件人的邮件客户端软件因为不支持发件人的算法而无法计算邮件摘要,则收件人的邮件客户端软件无法验证发件人的身份或此邮件的完整性。
S/MIME协议解决了这个问题。大多数电子邮件客户端软件支持的S/MIME协议的第三个版本由几个RFC组成。RFC 3370可以识别S/MIME第三版软件必须支持的算法。这些算法包括:用于计算哈希值的安全哈希算法-1(SHA-1)和消息摘要-5(MD5);数字签名算法和RSA签名加密算法;用于消息加密的RC2和三重数据加密标准(3DES)。这样可以保证所有采用S/MIME协议的软件基本兼容。但是,如果电子邮件客户端软件正确识别了特定电子邮件使用的算法,它还可以添加其他算法。实际上,消息摘要算法用于对消息进行签名,该算法存储在包含“SignerInfo digestAlgorithms”字段的“SignedData”值中。根据该RFC,如果电子邮件客户端软件不能识别或支持该算法,它必须通知用户客户端软件不能正确验证电子邮件。
然而,如果发送者已经从先前的消息中获得了接收者的公钥和数字证书,则X.509数字证书可以使用签名算法标识符,以便发送者的电子邮件客户端软件可以使用该信息来选择适当的算法。这意味着可以在发送和接收电子邮件之前建立安全关联。* * *,请记住,电子邮件交换中使用的加密功能也可以根据外部信息包括隐私协议、用户偏好和法律限制来建立。