关闭

Lotus Domino/Notes 中的安全技术

1124人阅读 评论(0) 收藏 举报

1 引言
  Lotus Domino/Notes 是世界主流的企业级通讯、协同计算和Internet/Intranet平台,在办公自动化系统研究和建设以及企业信息系统集成方面处于领先地位。它之所以在商业办公领域占据如此重要的地位。除了本身具有完善的工作流控制、强大的数据库复制技术等因素之外,另一个重要的原因就是它提供了先进可靠的安全机制。在此着重讨论一下Lotus Domino/Notes 中所采用的几种安全技术。
2 基本的安全概念
  为了更好的说明Notes采用的安全技术的原理,这里先介绍一下基本的安全概念。
2.1 加密算法
  基本的加密算法有两种,对称密钥加密和非对称密钥加密。用于保证通信中数据的保密性、完整性、真实性和非抵赖服务。
  <1> 对称密钥加密 在对称密钥加密方法中,对信息的加密和解密都使用相同的密钥。也就是说,一把钥匙开一把锁。最著名的对称密钥加密算法是数据加密标准(DES)。DES是一种使用56个数据位的密钥来操作64位数据块的块加密算法,可同时对大量数据进行快速加密。
  <2> 非对称密钥加密 又叫作公开密钥加密算法。在非对称加密体系中,密钥被分解为一对(即一把公开密钥或加密密钥和一把私有密钥或解密密钥)。这对密钥中的任何一把都可作为公开密钥(加密密钥)通过非保密方式向他人公开,而另一把则作为私有密钥(解密密钥)加以保存。公开密钥用于对机密性信息的加密,私有密钥则用于对加密信息的解密。私有密钥只能由生成密钥对的用户掌握,公开密钥可广泛发布,但它只对应于生成该密钥的用户。公开密钥加密技术解决了密钥的发布和管理问题,是目前商业密码的核心。使用公开密钥技术,数据通信的双方可以安全的确认对方的身份和公开密钥。非对称密钥加密算法主要有RSA、PGP等。
2.2 报文摘要算法
  报文摘要算法(Message Digest Algorithms)即采用单向HASH算法将需要加密的明文进行摘要,而产生具有固定长度的单向散列(HASH)值,其中散列函数是将一个不同长度的报文转换成一个数字串(即报文摘要)的公式,该函数不需要密钥,公式决定了报文摘要的长度。报文摘要通常和非对称密钥加密一起,提供了数字签名的方法。MD5算法是一种常用的报文摘要算法,它采用单向Hash函数将需加密的明文"摘要"成一串128bit的密文,这一串密文亦称为数字指纹,它有固定的长度,且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。这样这个摘要便可成为验证明文是否是"真身"的"指纹"了。
2.3 数字签名
  通过采用数字签名,可以确认以下两点:a. 信息是由签名者发送的。b. 信息在传输过程中未曾作过任何修改。这样数字签名就可用来防止冒用别人名义发送信息;或发出信件后又加以否认等情况发生。
  它的使用方式是: 报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。发送方用自己的专用密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公开密钥来对报文附加的数字签名进行解密。如果两个散列值相同,那么接收方就能确认该数字签名是发送方的并且报文在传送的过程中没有被改动。通过数字签名能够实现对原始报文的鉴别和不可抵赖性。
2.4 数字证书
  数字证书作为网上通信双方真实身份证明的依据,是一个经证书授权中心(CA)数字签名的包含证书申请者(公开密钥的拥有者)个人信息及其公开密钥的文件。它类似于现实生活中的身份证。Notes中的验证字实际上就是一种Notes内部的数字证书。它包括:
  1) 提交验证字的验证者名称。
  2) 验证字被提交给的用户或服务器的名称。
  3) 同时存储在"Domino目录"和标识符文件中的公用密钥。Notes使用公用密钥加密发送给公用密钥所有者的消息,并且校验标识符所有者的数字签名。
  4) 验证者的数字签名。
  5) 验证字的过期日期。
2.5 验证中心
  验证中心又称作验证字权威(Certificate Authority)。它负责证书的颁发与管理。数字证书的基本目的是将个人的姓名与公钥绑定。 CA中心实现了类似于现实生活中的身份认证过程,是发放证书的权威机构,是被公众信任的对象。证书的登记、审批、发放、废止、查询、管理等,由安全要求非常高的CA系统承担。
3 Domino/Notes中具体的安全技术
  现在,具体讨论一下在Domino/Notes的安全体系中,所提供的四级安全措施:校验与验证、数字签名、存取控制、字段级加密。
3.1 校验与验证
  在Notes环境中每一个Domino服务器、Notes验证者和Notes用户都拥有标识符。当注册用户和服务器时,Domino自动创建他们的标识符。标识符文件包括:
  所有者的姓名。
  永久许可证号,此编号指明其所有者是合法的,并指定所有者是否具有运行Domino或Notes的北美或国际许可证。
  至少拥有一个来自验证者标识符的Notes验证字。
  私有密钥。Notes使用私有密钥来签名其所有者发送的消息、解密发送给它的所有者的消息并且(如果标识符属于  验证者)为验证字签名。
  Internet验证字(可选)。此验证字用于保护SSL连接,并且加密和签名S/MIME邮件消息。
  一个或多个加密密钥,由用户创建并分发,以允许其他用户加密和解密文档中的域(可选)。
  口令(可选)。口令将生成密钥加密ID中的私有数据。
  验证字
  当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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:38751次
    • 积分:550
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:10篇
    • 译文:4篇
    • 评论:11条
    最新评论