原文引用自China-pub电子书《Domino安全技术》中“D o m i n o / N o t e s公钥加密体系”一章,为了能方便有需要的朋友引用和转载,所以才将原来的PDF格式转化为网上比较方便的模式。

 Notes认证
        在这一部分,我们将讨论 Lotus Notes和D o m i n o是如何利用 Notes Remote ProcedureC a l l s ( N R P C )进行认证的。正如前面我们所说的, N o t e s认证是基于验证字的,而且使用了基于密码技术的公共密钥。
        请注意这种认证技术跟 X . 5 0 9认证很相似,请参考本书其他部分关于 X . 5 0 9的相关技术的介绍。

校验和认证
        在D o m i n o中有两个安全性过程使用客户机标识符中的信息来校验客户机是否合法。校验下载是第一个过程,它建立对客户机公用密钥的信任。如果校验成功,那么就开始第二个过程:认证,它将核实用户的身份。认证在一个请求 / 响应的交互过程中使用客户机和服务器的公用和私有密钥。
        建立对公用密钥信任的规则是:
        1) 信任服务器或客户机在层次名称树中的任何祖先的公用密钥。 (祖先的公用密钥存储在服务器或客户机的标识符文件中)
        2) 信任任何从有效验证字(此验证字是由服务器或客户机在层次名称树中的任何祖先所提交的)中获取的公用密钥。
        3) 信任由任何可信验证者验证的公用密钥以及属于该验证者某个后代的公用密钥。
1. 校验
        现在让我们来看一看上述规则如何应用在校验过程中。 Bob Smith的标识符文件包含了所有用于确认他自己以及建立凭证所需的内容。当 B o b向服务器发出请求时, N o t e s工作站会把B o b标识符文件中的验证字发送给服务器。图3 - 1 8描述了校验的全过程。
  
 
        图中的步骤描述如下:
        1)  服务器A读取Bob Smith从标识符文件中发送的验证字 E a s t ,是Wi d g i t C o所签名的验证字。因为E a s t是B o b的验证字的验证者,所以服务器A对其感兴趣。
        2) 服务器A从它自己的标识符文件中读取Wi d g i t C o的公共密钥。
        3) 服务器A使用Wi d g i t C o的公共密钥校验验证字E a s t / Wi d g i t C o的有效性。
        4) 服务器A读取Bob Smith标识符文件发送的B o b的验证字,是E a s t签名的。
        5) 服务器A使用E a s t / Wi d g i t C o现在已被信任的的公共密钥来校验验证字 Bob Smith/ E a s t / Wi d g i t C o的有效性。
        6) 现在服务器A可靠地验证了Bob Smith的公共密钥的有效性。
        同样的过程也在相反方向进行,使B o b能可靠地验证服务器A。
2. 认证
        在校验过程完成后,认证过程开始。认证就是身份识别,上面描述的验证过程并没有完全证明谁是这一部分的伙伴,因为他们所提供的仅仅是一个验证字。验证字把公共密钥和用户联系起来,而且告诉接收者公共密钥可以信任。为了证明这个用户是否真的就是其宣称的那一个,用户还应该显示他们与验证字中的公共密钥配合的私有密钥。当在运行复制或邮件路由时,认证过程在工作站和服务器之间或两个服务器之间用“提问 /应答”对话框来获得用户私有密钥。
        我们继续上面Bob Smith访问服务器A的例子。图3 - 1 9,是实际认证过程的简化,用一种容易理解的方式描述了整个认证过程。
        1) 服务器A产生一个随机数和一个区段密钥,而且用B o b的公共密钥加密。
        2) 服务器A发送已被加密的随机数给Bob Smith。
        3) Bob接收“提问”然后用其私有密钥解密随机数。
        4) Bob Smith发回经解密的随机数给服务器A
        5) 服务器A将B o b所应答的数与随机数进行比较。
        6) 如果结果与原来随机数一致,服务器A就可以完全信任Bob Smith。
        与验证一样,认证也是一个双向的过程。B o b也用相应的提问/应答过程来认证A。

关闭基于验证字的认证
        当服务器设置为允许匿名访问后,Notes 用户和 Domino 服务器不需要有效的验证字即可访问服务器。服务器将不对他们进行校验或验证。使用匿名访问可以使公司之外的用户和服务器无需事先获得公司验证字就能够访问服务器。
        1) 在 Domino Administrator 中,单击“C o n f i g u r a t i o n”附签,然后打开“S e r v e r”文档。
        2) 单击“s e c u r i t y”附签。
        3) 在“Allow anonymous Notes connections”域中,选择“Ye s” 。
        4) 如果“s e r v e r”文档的“Server Access” “Who can”区段中的“Access Server”域中已有输入项,则在此域中输入A n o n y m o u s。
        5) 保存文档。
        6) 在希望允许匿名访问的所有数据库的存取控制列表中创建名为nonymous 的项目。指定适当的存取级别(一般为“R e a d e r s”存取级别) 。如果不将 Anonymous 作为一项添加到存取控制列表中,则匿名用户和服务器将获得” D e f a u l t”存取级别。
        7) 关闭并重新启动服务器以使更改生效,如图 3 - 2 0所示。
 
数据完整性工具
        数据库被复制或邮件信息在网络中路由传递时,有可能会被人篡改,为此我们必须能够告诉别人他所收到的数据是否跟所发出来的数据一致。
        为了知道数据是否被改变,我们使用数字签名技术进行处理。数据完整显示出数据的当前条件等于原来的“纯”条件,保证数据在传输过程中不被篡改。数字签名可以证明数据是作者所发出的,没有人修改过数据。原作者可以对邮件信息或域签名,也可以对 N o t e s文档签名。数据库设计者可以控制是否能在数据库的域或区段中签名;用户可以选择是否对邮件消息进行签名。D o m i n o使用N o t e s公用密钥和私有密钥进行电子签名(与加密使用的密钥相同) 。
        图3 - 2 1描述了N o t e s是如何进行电子签名的。
        对消息进行签名时, N o t e s产生散列数据(即:代表此数据的一个数字) ,然后使用数据作者的私有密钥来加密散列数据,形成签名。 N o t e s将把签名、签名者的公用密钥和签名者的验证字附加到数据中。当有人访问此签名数据时,校验签名者是否拥有来自读者信任的验证者的公用验证字或公用验证字祖先,如果是, N o t e s将使用与签名数据使用的私有密钥相对应的公用密钥对签名进行解密。如果解密成功, N o t e s将可以指出此消息的签名者;否则,N o t e s将指出不能验证此签名。消息未成功解密可能表明:此数据被篡改和(或)发件人没有读者信任的验证字。

数据可靠性工具
        当我们通过网络发送数据和邮件信息等时,任何能够利用跟踪或电子监听等技术截取网络包裹的人,原理上都可以在没有通过认证的情况下阅读您的数据。信息泄露将是一个严重的问题。为了解决这个问题,您将不得不劝告用户认真对待安全性问题,把所有外出邮件都加密。经验表明,更新计算机系统比改变人类本性更容易,因而我们经常应用下面的方法来解决数据安全问题。
        N o t e s提供了解决的方法:敏感数据在传输之前可以被加密成为不可阅读的格式;到达目的地后,数据才被解密。上述方法可以防止未授权人访问数据。 N o t e s使用基于加密密钥的加密机制,用于加密和解密数据以确保所接收的数据没有被其他人阅读过。
        完成身份认证后,客户机开始与服务器交换数据,大量数据将会经过网络。因此,使用有效的运算法则非常重要,N o t e s使用R S A的R C 2和R C 4法则为重要数据加密。
        下面我们简单介绍一下用户的许可证类型。 Notes 的许可证类型有三种:北美许可证、国际许可证和法国许可证。北美许可证和国际许可证几乎在各方面都是相同的:验证、认证、电子签名、服务器与用户之间的通信都是一样的。但两者之间存在一个重要的区别,美国政府对加密技术采取了限制措施,将北美许可证或用户标识符文件带出北美的行为是非法的。即使是美国公民在北美以外的地方旅行时,也必须使用国际许可证。北美许可证比国际许可证使用了更为安全的加密密钥。 N o t e s会自动指出信息的发送者或任一个接收者是使用安全性较少的国际许可证的。
        图3 - 2 2描述了北美许可证、国际许可证和法国许可证之间的区别。
        北美和国际版本的N o t e s都使用6 4位密钥,但是,国际版中2 4位使用了美国政府所拥有的公共密钥进行加密,只有美国政府才有解密的私有密钥。上述处理的结果是,一般袭击者必须破解6 4位加密,足以超出当前解密技术和硬件的实际条件;另一方面,对美国政府来说,只需要破解4 0位就可以得到它感兴趣的信息,这明显容易多了。
        独一无二的N o t e s加密技术允许国际版的N o t e s在北美版中使用长度等于6 4位的密钥,这大大提供了国际用户信息的安全性。由于法国政府的法律限制,法国版本的 N o t e s只能使用4 0位长的密钥。实际上三种版本的N o t e s都是相互可操作的。
        请记住两件事,如果用户不能再使用其标识符文件,或者是因为他们忘记了口令,或者是物理意义上丢失文件了。如果是这样,任何用他们公共密钥加密的邮件将永远丢失了,因为私有密钥在标识符文件中;另一方面,任何拥有您的私有密钥的拷贝的人都可以阅读您的加密邮件。所以您应该小心保护好自己的私有密钥。
1. 加密邮件信息
        图3 - 2 3显示N o t e s如何使用密钥加密和解密邮件信息:
        1) 在发送者加密信息时,N o t e s产生随机加密密钥来加密信息,随机加密密钥本身用接收者的公共密钥加密,然后附在信息上。N o t e s使用R C 2法则加密和解密数据。
        2) 当带有加密密钥的邮件到达时,接收者使用其私有密钥来解密。加密是有保证的,因为只有接收者的私有密钥可以解密信息。
        3) 当邮件发送时,不同的邮件产生不同的随机密钥。
2. Notes其他加密特性
        上面我们主要描述了 N o t e s加密邮件特性,但 Notes 也提供了其他一些加密信息的方法。
        • 数据库、文档、域、和网络中的数据传输可以使用不同的加密方法来进行保护 :
        • 数据库可以在本地安全性选项中使用用户和服务器标识符进行加密 ,这防止了未授权用户在本地工作站访问数据库,也可以防止用户使用操作系统制作一个数据库拷贝来获得访问数据库。
        • 域加密特性使用数据库设计者创建和分发的加密密钥来加密数据 ,从而限制未授权用户存取域数据。
        • 文档可以使用私有或公共密钥进行加密 ,密钥可以加到表单上,使得每一个用这个表单创建的文档都可以被加密,或者让用户可以利用他们自己的密钥进行文档加密。
        • 网络端口加密允许没有加密的数据进行端口级水平加密 ,使数据可以通过网络安全传输。网络端口加密可以在用户工作站设置 ,也可以在服务器选择: F i l e s - P r e f e r e n c e s - P o r t s ,修改端口定义来加密网络数据。