前言:
Lotus Notes/Domino是业界群件系统的事实标准。尤其是作为大中型企业和事业机关的办公自动化应用平台享誉全球。新出的R5已经屡次出现在美国各个计算机杂志的调查中最受欢迎软件的行列。Notes的一个重要特性就是其强大可靠的安全机制。我曾经用Notes4.6和Notes R5开发过一些Notes/Domino平台上的一些应用程序。现就自己的体会和有关资料从数据加密,身份认证和访问控制两个方面简单谈一些Notes的安全特性。
1 Notes/Domino结构和基本概念简介
Notes一般用来泛指整个Lotus Notes/Domino平台,而特指Notes是指Notes工作站客
户平台,我们在指后者时一般会特意指出来。以R5为例,Notes由DominoR5,DesignerR5,NotesR5和AdministratorR5四个部分组成。前者是服务器端应用,后三者是客户端。DesignerR5是Notes平台上的应用程序开发环境,NotesR5就是工作站应用环境,Administrator R5是用来对服务器进行管理的客户端,只有对服务器有管理员权限的用户才可以用之对服务器进行管理工作。总的来说,Notes是典型的服务器/客户端结构,当然,用Domino作Web服务器,用浏览器作客户端时也可以称为所谓的B/S结构。值得一提的是,由于Notes服务器和Web服务器在Domino中的统一,用Domino作Web服务器具有安全,开发简单,动态维护等非常其他Web服务器难以比拟的优势。
Notes逻辑结构中最高层是整个单位机构。通常对应系统中的第一台Domino服务器,也是主服务器,主服务器产生整个机构的通讯录,机构验证者ID。机构验证者ID用来对个人和附属服务器进行注册,这个ID包含在以后整个机构中所有ID文件中,它是整个机构所有服务器和用户之间进行协同工作时进行相互验证的信任根。也是本机构用户在外机构进行交叉认证的信任根。机构验证者ID也可以注册子机构验证者ID,子机构验证者ID也可以注册用户和服务器,由于子机构验证者ID包含机构验证者ID,所以,机构验证者ID自然继承下来。这样,系统的用户和服务器的标识形成一个层次结构:用户名/子层机构验证者名称/上一层子机构验证者名称/更上一层子机构验证者名称/……../机构验证者名称。
Notes上的应用程序的基本单位是一个个的文档数据库。一个应用可以由一个或多个文档数据库组成。数据库中的数据以文档为单位,可以看成是关系数据库中的记录(但是,Notes的文档数据库在概念上和关系数据库有非常大的区别,二者也几乎没有什么关联。这里只是为了说明文档和Notes数据库的结构关系),文档中有各种类型的数据项(称为域)可以是文本,数字,时间,也可以是图像,声音甚至可执行的嵌入对象。因此,也有人称Notes是非结构化数据库或对象数据库,这是相对于关系数据库只能存储结构化的数据信息而言的。
2 Notes中的数据加密
Notes中的加密主要可以对以下内容进行加密:
ü 发送给其他用户的消息。在消息传输过程中,未被授权的用户不能读取它。也可以加密已保存的消息和外来消息。
ü 网络端口。加密信息在 Notes 工作站和 Domino 服务器间或在两台 Domino 服务器间传送时,未授权的用户在消息传输过程中无法读取数据。
ü SSL 事务。使用 SSL 对在 Internet 客户机和 Domino 服务器间或在 Notes 工作站和 Internet 服务器间传送的信息进行加密时,未授权的用户在消息传输过程中无法读取数据。
ü 域、文档和数据库。应用程序开发者可以对文档中的域、整个文档以及本地数据库进行加密。这样,只有指定的用户才能读取这些信息。
Notes对每个用户和服务器都要进行注册并分发ID,ID中含有该用户或服务器的身份
信息以及注册服务器为之生成的唯一的公用密钥/私有密钥对。公用密钥存储在服务器上的“Domino 通讯录”数据库中,凡是对服务器有访问权限的的用户都可以对该数据库读取信息,但只有用户本人和该数据库管理员(通常是机构管理员)可以修改个人文档。这就有效防止了用假的公用密钥来冒充某个用户。Notes中对数据的加密除了对网络端口的加密,都是使用公用/私有密钥对。Domino 使用两套公用和私有密钥:Notes 和 Internet。Notes 公用和私有密钥用于加密域、文档、数据库以及发送给其他 Notes 用户的消息。Internet 公用和私有密钥用于发送和接收加密的 S/MIME 消息,还用于加密 Notes 工作站和 Internet 服务器之间的 SSL 会话。
2.1 对发送给其他用户的消息进行加密
主要是对邮件进行加密。邮件加密保护消息不受到未授权访问。只有邮件正文能被加密,标头信息(例如:“收件人”、“发件人”和“主题”域)不会被加密。
Notes 用户可以加密发送给其他 Notes 用户的邮件,也可以加密发送给使用支持 S/MIME 的邮件应用程序(例如:Outlook Express 和 Netscape Communicator)用户的邮件。用户可以加密发送给其他 Notes 用户的邮件或其他 Notes 用户收到的邮件,也可以加密“邮件”数据库中保存的所有文档。Notes 使用收件人的公用密钥来加密外出邮件和保存的邮件,此密钥存储在收件人的个人通讯录或“Domino 目录”中。通常情况下,发送给外部网络域用户的邮件不能被加密。不过,如果邮件的收件人也使用 Notes,并且发件人可以访问收件人的公用密钥,那么发件人就可以加密此邮件消息。收件人的公用密钥保存在发件人可以访问的“Domino 目录”中,或者保存在发件人的个人通讯录中。Notes 用户在向使用支持 S/MIME 的邮件程序的用户发送邮件时,可以使用 S/MIME 来加密消息。为了加密消息,发件人必须拥有收件人的公用密钥。收件人的公用密钥存储在发件人个人通讯录或“Domino 目录”的 x.509 验证字中。
Notes在发送邮件之前生成一个随机加密密钥。然后用收件人的公用密钥对该随机密钥进行加密。并将加密后的密钥附加在用该随即密钥加密的消息后。收件人用其私有密钥解密随即密钥并用该密钥将消息解密。
Notes的邮件加密是典型的点对点加密。而网络端口的加密则是典型的面向连结的加
密。
2.2 对网络端口的加密
在指定端口加密网络数据可以防止可能使用网络协议分析器进行的网络窃听。网络加密在选定协议的网络传输层上进行,并且独立于其他加密形式。网络数据仅在传输时才能被加密。一旦数据被接收和存储,网络加密就不再有效
只要在网络连接的任一端启用网络数据加密,就可以进行网络数据加密。例如:如果在某个服务器的 TCP/IP 端口启用加密,就不必在与此服务器相连的工作站或服务器的 TCP/IP 端口启用加密。
2.3 SSL事务中的加密
SSL加密主要是在服务器和客户端通过SSL身份认证后,用Internet公用密钥对对数据进行数据的加密和解密,以防止传输过程中被非授权用户对数据进行访问。
2.4 对数据库和文档加密
对数据库加密的目的有两种:在具有数据库所有者用户标识符的工作站对本地数据库进行加密以防止其他用户使用各自的标识符访问工作站上的本地数据库;具有服务器标识符的服务器。这样如果 Domino 管理员要访问数据库,必须具有对用来加密数据库的服务器标识符的存取权限。对数据库加密可以选择加密强度:普通加密,中等加密,强度加密。
对文档和域加密可以用有权限的用户的公用密钥加密,也可以首先生成秘密密钥,再通过Notes的密钥邮寄,或将密钥引出文件分发给用户,用户必须将收到的密钥合成到自己的ID文件中去,才能够对加密的文档和域进行加密。而没有的用户看不到被加密的文档和文档中被加密的域。
3 Notes的身份认证和访问控制
在第一部分我们曾经提到过,Domino使用两套公用/私有密钥:Notes和Internet。对
应身份认证也有notes工作站与Domino的认证和Internet客户端与Domino的认证。Notes工作站中与Domino的身份认证都是双向的,服务器要验证用户是合法用户,用户也要验证向他提供服务的服务器不是冒充的。它们的信任基础就是我们前面提过的验证者ID。验证过程,双方还要进行一系列数据加密解密的认证。比如,一方用对方的公用密钥加密一条信息要求对方用自己的私有密钥解密并用认证方的公用密钥将消息加密送回。Internet与Domino的 SSL认证中,客户端一定要对服务器端进行认证,而服务器端不一定要求验证客户身份,因为服务器有时允许Internet上的匿名访问。SSL认证的信任基础,可以是第三方的CA机构,也可以是企业内独立的Domino权威验证字服务器。Notes提供了可以作为认证权威机构的应用数据库模板,负责用于分发SSL认证的验证字。
Notes的访问资源可以划分为7个层次:服务器,数据库,文件夹,视图,文档,区段,域。用户可以属于群组,可以拥有访问某个数据库的角色。对服务器的访问控制包括对服务器是否可访问,是否可以在服务器创建数据库和复本,是否可以运行代理,是否可以运行受限制的Lotuscript和Java代理,是否可以运行无限制的Lotusscrip和Java代理。对数据库的访问取决于数据库的访问控制列表(ACL),对数据库的访问权限可以划分为:管理者,设计者,编辑者,作者,读者,存放者,不可访问者。不可访问者是最低权限;读者对数据库中的文档可读(但如果文档本身带有读者域,且域中不含有该用户,他还是对文档不可读);存放者之可以创建文档,但不能读到任何数据库中的文档,包括自己创建的并且已保存的文档;作者拥有读者的全部权限,并可以在数据库中创建文档,但没有编辑文档的权限;编辑者拥有作者的全部权限,并且可以编辑已有文档,但是如果文档中设有读者域和作者域,并且两个域中都不包含该用户(即该文档对他不可读),则还是不能对该文档进行编辑;管理者拥有对数据库的最高权限,可以编辑修改数据库的存取控制列表,可以对数据库进行加密。可以编辑,删除任何对他可读的文档,如果文档有读者域和作者域,并且不包括拥有管理者权限的用户,则该用户对文档还是不可读,但是只要两个域中任一域中包括该管理者用户,则管理者就可以进行编辑,删除。对每个文件夹和视图均可设置对其进行读取的用户,群组和拥有某角色的用户。对文档可以通过对表单设置创建,读取某种文档的用户,群组和拥有某角色的用户。每个文档中还可以包括作者,读者域用以设置对该文档的存取权限。文档中可以包括存取控制区段,区段可以折叠展开,而且可以控制区段中的内容的编辑权限。文档中的域也可以通过用用户的公用密钥进行加密(从而只有这些用户才可以看到该域内容),实现对该域的访问控制。
4 总结
Notes的安全机制复杂,安全功能强大,它为用户的协同工作提供非常高效而又安全的
平台,同时也为企业发布信息,企业之间的必要的信息交换提供了安全保证。当然,任何安全系统或机制都不是绝对安全的,任何安全系统都是首先在物理安全的基础上实现的,比如,Notes服务器Domino的物理安全以及用户ID的存放安全性都是至关重要。如果这些安全不能保证,上述的安全特性都全无用处。
References: Online Help for Administrator of Domino R5;Online Help for Designer R5;
Relative Red Books of Notes/Domino R5. ,