---- 安全MIME(S/MIME)是Internet上信息安全方面事实上的标准。许多组织以S/MIME作为他们内部的公共密钥结构(PKI)的基础。前面部分介绍了S/MIME在信息安全方面的特点和能力,以及微软Exchange 2000密钥管理服务器(KMS)上的S/MIME的一些新特性。现在我们转到客户端来,深入研究S/MIME和客户端有关的部分,以及怎样在X.509和MIME的基础之上构建S/MIME系统。
MIME和S/MIME
---- Internet电子邮件由一个邮件头部和一个可选的邮件主体组成,其中邮件头部含有邮件的发送方和接收方的有关信息。对于邮件主体来说,特别重要的是,IETF在RFC 2045~RFC 2049中定义的MIME规定,邮件主体除了ASCII字符类型之外,还可以包含各种数据类型。用户可以使用MIME增加非文本对象,比如把图像、音频、格式化的文本或微软的Word文件加到邮件主体中去。MIME中的数据类型一般是复合型的,也称为复合数据。由于允许复合数据,用户可以把不同类型的数据嵌入到同一个邮件主体中。在包含复合数据的邮件主体中,设有边界标志,它标明每种类型数据的开始和结束。
---- S/MIME在安全方面的功能又进行了扩展,它可以把MIME实体(比如数字签名和加密信息等)封装成安全对象。RFC 2634定义了增强的安全服务,例如具有接收方确认签收的功能,这样就可以确保接收者不能否认已经收到过的邮件。微软将在未来的Office 2000新版本中包含这些服务。S/MIME增加了新的MIME数据类型,用于提供数据保密、完整性保护、认证和鉴定服务等功能,这些数据类型包括“应用/pkcs7-MIME”(application/pkcs7-MIME)、“复合/已签名”(multipart/signed)和“应用/pkcs7-签名”(application/pkcs7-signature)等。如果邮件包含了上述MIME复合数据,邮件中将带有有关的MIME附件。在邮件的客户端,接收者在阅读邮件之前,S/MIME应用处理这些附件。如表1所示,附件的扩展名因复合数据类型所提供的S/MIME服务的不同而异。在MIME的头部,标识了MIME附件的名字。一些邮件客户端,如果没有安装具有S/MIME能力的系统,或安装的是早期S/MIME的版本,也需要通过这些附件来识别邮件中和S/MIME有关的内容。其他邮件客户端则更是完全依靠复合数据信息识别MIME实体。
---- S/MIME只保护邮件的邮件主体,对头部信息则不进行加密,以便让邮件成功地在发送者和接收者的网关之间传递。
透明和不透明的签名
---- 如表1所示,用户可以使用application/pkcs7-MIME数据类型或multipart/signed和 application/pkcs7- signature等复合数据类型标记邮件的邮件主体。每个应用执行不同的签名类型:透明的(clear)和不透明的(opaque)。这两种签名类型可以在S/MIME和非S/MIME邮件客户端之间交换已签名的邮件。透明签名的邮件把数字签名同已签名的数据区分开来,不透明的签名邮件将签名和信息绑定在同一个二进制文件中。图1显示了透明签名的邮件格式,图2显示了不透明签名的邮件格式。
表1 S/MIME和MISE的内容类型扩展 | ||||
MISE内容类型 | MISE子类型 | S/MIME类型 | S/MIME服务 | 附件扩展名 |
应用 | Pkcs7-MIMS | 签名数据 | 保证数据的完整性、认证和无法否认接收; 使用不透明签名 | .p7m |
封装数据 | 保证数据的真实性 | .p7m | ||
复合 | signed | NA | 保证数据的完整性、认证和无法否认接收; 使用透明签名 | NA |
应用 | Pkcs7- signature | NA | 保证数据的完整性、认证和无法否认接收; 使用透明签名 | .p7s |
---- 通过Outlook 2000或Outlook Web Aclearcase/" target="_blank" >ccess(OWA),系统管理员可以看出透明和不透明签名邮件的区别。浏览透明签名邮件的明文不需要S/MIME处理。Outlook 2000的预览窗口如图3所示,透明签名邮件的内容可以直接显示出来。但对于不透明签名邮件,系统管理员必须双击它,以便让S/MIME对邮件进行处理,才能看到内容。OWA不支持S/MIME,所以只能通过OWA的接口阅读透明签名的邮件;不透明签名的和加密的邮件则显示一个smime.p7m附件。
---- 因为邮件的信息交换隐含了一个一步完成的协议,即在邮件传输完成之前,邮件的发送方和接收方之间没有交互,发送方可能不知道接收方的S/MIME能力。不管邮件客户端是否具有S/MIME能力,都可以阅读透明签名的邮件。然而,不透明签名邮件和透明签名邮件比较起来,有一个重要的优点,因为发送方和接收方之间的网关不能改变不透明签名邮件中MIME数据的隐藏明文部分。当用户从一个邮件API(MAPI)邮件客户,比如团体/工作组(Corparate/Workgroup)方式的Outlook 2000发送一条透明签名邮件给一个SMTP-MIME邮件客户(例如Outlook Express 5.0),发送客户使用MAPI规则格式化邮件。SMTP网关将把邮件转换成MIME格式。在转换过程中,同时也改变了邮件的明文部分,这将造成接收方的签名检查返回无效的结果,好像出现了非法入侵。这种无效错误在Exchange 2000中不像在Exchange Server 5.5中出现得那么频繁。Exchange 2000的流数据库(Streaming Database)存储本地的MIME邮件,这样Exchange 2000只有在绝对必须时才把MIME邮件转换成MAPI邮件,例如,当MAPI客户想要阅读MIME格式的邮件时。
---- 不成文的规矩是,当用户不知道接收方是否具有S/MIME能力时,一般发送透明签名邮件; 向具有S/MIME能力的客户端发送不透明签名的邮件。如果从一个本地的MAPI客户端经过SMTP或X.400网关发送邮件,例如,在两个通过SMTP连接的MAPI客户端之间,或者从MAPI客户端向SMTP客户端发送邮件时,也发送不透明签名的邮件。在Outlook 2000 和Outlook Express 5.0上,用户可以选择任何一种签名方式。在Outlook 2000上,通过邮件选项设置签名方式;在Outlook Express 5.0上,通过邮件客户的“高级安全”选项设置签名方式。
Outlook和S/MIME
---- Outlook 2000是微软公司发布的、比较成熟的邮件客户端的最新版本。微软还提供Outlook Express 5.0,它是微软随Internet Explorer 5.0一起发行的基于Internet的邮件客户系统,相对来说比较简单。系统管理员可以通过POP3或IMAP4把Outlook Express 5.0与Exchange 2000或Exchange Server 5.5相连接。另外,也可以把一个邮件客户端通过轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)连接到一个目录上。表2显示了这些客户端的主要S/MIME特性的概况。
表2 微软S/MIME客户端特性的比较 | |||
Outlook 2000 | Outlook 2000 Internet Mail | Outlook 2000 Express 5.0 | |
密钥恢复 | 是 | 否 | 否 |
支持CDP | 是 | 是 | 是 |
密钥存储 | 保护存储,选择系统密钥保护 | 保护存储,选择系统密钥保护 | 保护存储,选择系统密钥保护 |
支持透明和不透明签名 | 是 | 是 | 是 |
S/MIME登录 | KMS,内部CA,商业CA | 内部CA,商业CA | 内部CA,商业CA |
S/MIME登录发起者 | KMS管理员,用户 | 用户 | 用户 |
重新认证 | 自动 | 警告(取消和过期) | 警告(取消和过期) |
支持LDAP | 是 | 是 | 是 |
支持PKCS#2 | 是 | 是 | 是 |
---- 系统管理员可以选择以下两种电子邮件方式安装Outlook 2000:“团体/工作组”或“Internet惟一邮件”(Internet Mail Only)方式,或选择“无电子邮件方式”(No E-Mail Mode)。前两种电子邮件方式支持不同的协议:“团体/工作组”方式提供一个具备全部功能的MAPI邮件客户端,它支持SMTP和POP协议,并有LDAP支持选项(通过LDAP目录服务实现)。“Internet惟一邮件”方式提供一个基于ISP的邮件客户端,它支持SMTP、IMAP、POP和LDAP等协议。系统管理员可以在Outlook 2000的邮件服务选项对话框中使用“重新配置邮件支持”按钮选择方式,Outlook 2000在机器级为每个在本机上注册的用户重新配置电子邮件方式。
---- 从S/MIME的观点看,这两种方式之间存在着根本的区别。当系统管理员希望为企业的邮件客户提供密钥恢复功能时,应该采用“团体/工作组”方式安装Outlook 2000客户。因为这种方式使用户能够在Exchange 2000的高级安全中登录客户,从而在邮件客户端可以充分利用Exchange 2000存储在动态目录(AD)中的S/MIME加密参数选择的优势。
验证登录和重新登录
---- 系统管理员负责Exchange 2000高级安全登录的初始化,产生并分发客户可以用来登录S/MIME验证和密钥的登录令牌。如表2所示,每个邮件客户都可以使用一个内部的或商用的CA来进行认证登录。对于由Exchange 2000特有的证书模板加载的KMS-CA,则可以生成可以产生高级安全证书。当系统管理员使用Windows 2000企业版CA时,企业客户可以使用一个基于Web(http://servername/certsrv)的或基于GUI(即微软管理控制台的证书接口)的界面登录。如果一个用户从CA收到一个证书后,仍然不能发送S/MIME签名的邮件,那么就要在Outlook 2000上检查他的S/MIME设置,或通过Outlook Express 5.0检查用户的邮件账号和S/MIME证书之间是如何绑定的,如图4所示。
---- 证书重新登录与登录同样重要。本文所提到的每个微软邮件客户终端,都会警告用户什么时候其证书将过期,或者CA和KMS管理员在什么时候将废除证书。与Exchange Server KMS结合的Outlook 2000的“团体/工作组”方式提供最高级的自动操作:出现一个对话框提示用户登录新证书,当用户接受提示后,CA立即产生证书。Outlook 2000的“Internet惟一邮件”方式或Outlook Express 5.0上的用户则必须重做登录,替换掉过期的或被废除的证书。
---- 在Outlook 2000或Outlook Express 5.0上阅读签名邮件时,系统管理员系统不必安装个人的S/MIME证书,或采用高级安全登录。如果Outlook Express 5.0的用户要发送加密邮件,甚至不需要个人的S/MIME证书。当客户端收到一个有效签名的邮件时,软件会自动地把发送方加到Outlook Express的通信列表中。通信列表条目中包含有发送方的账户证书。Outlook 2000要求用户手工地把发送方加到用户的通信列表或个人地址薄(Personal Address Book,PAB)中,而且要求用户在发送加密邮件时,需要具备个人的S/MIME证书。
,