技术开发 频道

Lotus Domino/Notes 中的安全技术

验证字

    当Notes客户机试图与Domino服务器通讯来进行复制、邮件路由或数据库访问时,就有两个安全过程使用客户机标识符中的信息来检查客户机是否合法。校验是第一个过程,它建立对客户机公用密钥的信任。如果校验成功,就开始第二个过程:验证。它将核实用户的身份。验证在一个请求/响应的交互过程中使用客户机和服务器的公用和私用密钥。

    校验使用以下规则建立对公用密钥的信任。Domino对试图访问服务器的客户机和客户机要访问的服务器使用校验。

    1) 信任服务器或客户机在层次名称树中的任何祖先的公用密钥。这是因为祖先的公用密钥存储在服务器或客户机的标识符文件中。

    2) 信任任何从有效验证字(此验证字是由服务器或客户机在层次名称树中的任何祖先所提交的)中获取得公用密钥。

    3) 信任由任何可信任验证者验证的公用密钥以及属于该验证者某个后代的公用密钥。

    下面举例说明校验和验证如何共同工作来保证系统的安全性。在此例中,用户John/Marketing/Acme(客户机)希望访问Server/Acme(服务器)。

    1) Server从它的标识符文件中读取Acme的公用密钥。根据上述第一条规则,如果验证字有效,则Server信任指定给Acme的公用密钥。

    2) John将其用户标识符中的信息发送给Server。Server读取John的用户标识符以获取Acme提交给Marketing的验证字。Server使用现在信任的Acme公用密钥来校验Marketing的验证字是否有效。根据上述第二条规则,Server信任指定给Marketing的公用密钥。

    3) Server读取John的用户标识符以获取由Marketing/Acme提交给John的验证字。Server使用现在信任的Marketing/Acme的公用密钥来校验John的验证字是否有效。(根据上述第三条规则,如果验证字有效,则Server信任指定给John的公用密钥。)

    4) Server建立对John的公用密钥的信任之后,验证过程就开始了。Server向John发送一个随机数请求。

    5) John的工作站用它的私有密钥加密此请求,并将这个刚加密的数字发送回Server。

    6) Server使用John的公用密钥来解密此响应。如果得到的是最初的请求,则Server知道John是合法的。

    7) 然后,按相反方向执行这个过程。John的工作站通过处理Server的验证字来校验Server的公用密钥,并使用所描述的请求/响应过程来验证服务器。

    3.2 数字签名

    数字签名的工作原理在前面已经详细的说明过,在此省略。

    3.3 存取控制

    每一个数据库都有一个存取控制列表(Access Control List),它用来指定什么人可以以什么方式(例如,创建、读、写、删除等)对数据库进行访问。要控制Notes用户的存取权限,就要在ACL中为用户设定适当的存取级别、用户类型、角色等。

    ACL的存取级别共分以下7级。

    不能存取者 无法将数据库图标置于Notes的工作区。

    存放者 能创建文档,但在文档被存储和关闭后,存放者就不能再查看文档或数据库中的其他任何文档。

    读者 只能阅读数据库中的文档。

    作者 能创建文档,阅读文档。如果被列为文档作者,还能修改文档。除此之外,他们还能删除那些自己被列为作  者的文档以及运行仅能修改自己是作者的那些文档的代理程序。

    编辑者 能创建、阅读、修改并删除数据库中的任何文档,还能运行代理程序。

    设计者 能创建或修改数据库中的设计元素;创建和运行代理程序;创建、阅读、修改和删除数据库中的文档。

    管理者 可以执行其他数据库用户的全部功能。另外,管理者还可改变数据库的ACL,并可删除数据库。

    用户类型表明存取控制列表中的名称所属的类型(个人、服务器、或群组)。它为数据库提供了附加的安全性。例如:为名称指定"个人"用户类型,可以防止未经授权的用户以相同的个人名称创建"群组"文档、向群组中添加自己的姓名并通过群组的名称访问数据库。

    角色使分配与管理用户的权限变得更加方便。可以先创建一个角色并为角色分配好权限。以后当为用户授于与此角色相同的权限的时候,不需要重新设置,只须为用户指定此角色。

    3.4 字段级加密

    为防止对数据进行未经授权的访问,可以对数据进行加密。Notes提供的加密技术不但可以对数据库、文档进行加密,还可以对文档中的字段加密。这样对于同一份文档,经授权的用户可以看到加密的信息,而未经授权的用户就看不到这些机密的信息。以下分别讨论在数据库级、文档级、字段级的加密。

    <1> 数据库加密 数据库加密使用公用密钥算法。加密过程要随机生成一个密钥,使用与某个特定用户标识符相关的公用密钥加密该密钥,并将生成的密钥追加到指定数据库中。只有当用户的私有密钥能够解密该追加密钥时才能访问本地加密的数据库。选择除当前用户外的某个用户,并使用该用户的公用密钥对数据库进行加密,那么当前用户也不能再访问此数据库了。因此,在选择另外一个用户之前,一定要对该数据库进行备份。使用数据库加密使数据又多了一层安全性,因为存取控制列表(ACL)设置不能保护在本地存储的数据库。

    <2> 文档加密 数据库的设计者使用秘密密钥或公用密钥对文档加密。密钥必须在加密文档之前创建。可以通过下列几种方法使用秘密密钥对文档加密:

    使用表单属性 允许数据库设计者向表单添加一个或多个密钥。由该表单创建的每个文档都使用这些密钥进行加密。

    使用数据库/文档属性框 允许用户使用存储在其标识符文件中的密钥加密一个或多个文档。

    使用秘密密钥域 允许用户不必使用自己的密钥加密文档。秘密密钥域可能包含自动用于加密文档的密钥名称,或  者该域为空,允许用户指定密钥。

    还可以使用标识符中的公用密钥加密文档,这样,仅有具备这些标识符的用户才能读取文档。

    <3> 字段加密 数据库设计者可以使用秘密密钥加密字段。要解密这些字段,用户必须将特定密钥合并到其标识符文件中。如果用户不具有要求的密钥,则被加密的字段将显示为空。

    4 应用实例

    某大型企业使用Lotus Domino/Notes 作为网上办公自动化的平台。其中的财务数据库存储着企业的重要数据,需要有很强的安全保护功能。系统的要求是总经理能够查阅数据库中的所有财务报表并根据经营情况对有关部门发出指示。另外,一些部门经理也能够查阅数据库中的一部分财务数据。因为总经理以及部门经理只需要查看报表数据,所以可在数据库的ACL中授予他们读者的权限,这样可以防止由于误操作修改了数据,便于管理者管理。财务部的工作人员每个人负责一部分报表的生成,可以授予他们作者的权限,这样每个人只对自己生成的报表的负责,无权修改、删除别人生成的报表。如果要求工作人员生成报表后无权查看数据库中的数据,那么就授予他们存放者的权限。财务部经理需要对整个数据库进行管理,因此授予管理者权限。其他人无权访问数据库,就需要把ACL中的"Default"一栏设定为不能存取者。

    为了增强安全性,还要对一些机密的数据进行加密。通过加密,总经理和普通的部门经理虽然可以看到同一份文档,但是经过加密的某些机密的数据只有总经理才能看到。在加密的过程中,先随机生成一个对称密钥,并将此密钥追加到要加密的文档或字段中。然后使用总经理的公用密钥加密此对称密钥,通过邮件发给总经理。总经理在收到邮件后,使用自己的私有密钥解密,得到分发的对称密钥,并把它合并到自己的用户标识符中。从而可以访问加密后的文档或字段。

    总经理在看过财务数据后,可能要对财务部经理作一些工作上的指示,这时,他在写好后的邮件中加上自己的数字签名。然后使用财务部经理的公用密钥加密并发送出去。财务部经理在接到邮件后先用自己的私有密钥解密此邮件,当他看完邮件后,他还需要验证一下这封信是不是冒名顶替的或者真是总经理写的但在传送的过程中被人修改了。这时,他一方面取出总经理的公用密钥解密信中的数字签名,一方面对信件进行报文摘要。然后两者进行对比,如果完全符合,那么就确认这封信真是总经理发出的,并且没有被人修改。

    通过对以上实例的分析,可以看出Lotus Domino/Notes 强大的安全性。

    5 结束语

    除了上面讨论的Domino/Notes的安全机制,Domino R5还集成了对以下各种安全机制的支持,包括SSL v3、X.509验证,CDSA及S/MIME。在Domino R5中支持使用Notes验证或X.509验证注册新的用户。对S/MIME的支持确保所有类型客户端信息的完整性。SSL v3保证了IIOP和LDAP客户端的信息。通过可信任的第三方目录的验证,减少了信息的复杂性和重复性。

    对群件系统来说,既要求可靠的安全措施来保护机密的数据,同时又要求安全手段具有相当地灵活性。在这方面Notes拥有其他数据库平台无法比拟的优势,从而也确立了它在办公自动化领域的优势地位。
 

0