zoukankan      html  css  js  c++  java
  • AD RMS总结

    AD RMS 认识篇

    AD RMSActive Directory Right Mangement Servic)活动目录权限服务。

    首先我通过了解AD RMS的用途去深入学习AD RMS。在过去用户只要对文件有了读取权限就能过对文件进行copy,并可以随时带出公司,任何人都能够读取,这对于机密资料的保护是十分不利的。AD RMS就是为了解决这样的问题而产生的,它提供了与应用程序协作(office2007 exchange2007  sharepoint等)的对机密数据进行保护的安全技术,可以严格的控制哪些用户可以打开,读取,修改,和复制,打印等权限。它的最大特点是,权限是内置在文件的内部,一直伴随着文件。

     

    在了解了AD RMS的主要用途之后,我开始深入到它的工作过程,简单的描述一下:

    首先创建受权限保护的文档,创建者向RMS服务器请求发布许可,服务器验证之后返回发布许可证给创建者,创建者使用的应用程序会将发布许可整合到文件的内部对文件进行保护,接着当有用户使用该文件的时候,使用者会向RMS服务器请求使用许可,当服务器验证之后返回使用许可即可对文件进行定义好的访问。

     

    这其中涉及了比较多的组件,总结成了一个表:

    组件

    包含信息

    存放点

    用途

    服务器许可方证书(SLC

    RMS服务器的公钥

     

    RMS服务器

    加密发布许可中的内容加密密钥

    颁发:CLCRAC,发布许可证,使用许可证等权限

    客户端许可方证书(CLC

    RMS服务器的公钥

    客户端许可方公钥和私钥

    (私钥由请求者的公钥加密)

    客户端

    加密发布许可中的内容加密密钥(未连接网络时)

    计算机证书

    激活的计算机的公钥和私钥

    客户端

    标识RMS系统信任的计算机设备.

    权限帐户证书(RAC

    用户的公钥和私钥

    (用户的私钥被其使用的计算机的公钥加密)

    RMS服务器

     

    标识特定计算机或设备上下文中的用户

    发布许可证

    使用RMS服务器公钥加密的内容加密密钥

    客户端

    指定应用于受 RMS保护的内容的权限。

     

    使用许可证

    使用用户公钥加密的内容加密密钥

    客户端

    在通过身份验证的特定用户的上下文中,指定应用于受RMS 保护的内容的权限。

     

    密码箱

    已激活计算机的私钥

    客户端

    生成对称密钥(内容加密密钥)

    标识计算机

    在了解了各个证书的用途和信息之后,就可以更加清楚的去深入了解AD RMS各个环节的工作过程了。

    第一个环节:受权限保护文档的创建

    分两种情况,

    1、在线能连上RMS服务器

    ①由密码箱生成对称密钥作为内容密钥 (在客户端上完成)

    ②内容密钥被授权服务器的公钥加密(在客户端上完成)

    ③加密后的内容密钥和权限被发送到请求发布许可的授权服务器(在RMS服务器上完成)

    ④授权服务器使用它的私钥解开密的内容密钥(在RMS服务器上完成)

    ⑤授权服务器使用它的公钥加密内容密钥和使用权限(在RMS服务器上完成)

    ⑥加密后内容和使用权限被添加到发布许可(在RMS服务器上完成)

    ⑦授权服务器使用它的私钥签署发布许可(在RMS服务器上完成)

    ⑧发布许可返回到申请的客户端

    ⑨支持RMS的应用程序将发布许可合并到受保护的文档(在客户端上完成)

    一句话表述:现在客户端的密码箱上生成内容密钥(对称密钥),然后用RMS服务器的公钥加密内容密钥和权限再发给RMS服务器,接着RMS服务器用自己的私钥解密出内容密钥和权限,然后再用授权服务器的公钥加密内容密钥和使用权限(为什么要重复?猜测:RMS服务器与授权服务器是分离的)并添加到发布许可当中,用授权服务器的私钥签名发布许可后返回给客户端。

    疑问:授权服务器=RMS服务器?猜测,应该是可以同在一台服务器(用同一张计算机证书?),也可以分开。

     

     

    2、离线情况下。(全程在客户端上完成)

    ①由密码箱生成对称密钥作为内容密钥

    ②客户端从CLC中取出授权服务器的公钥

    ③客户端使用授权服务器的公钥加密内容密钥和使用权限

    ④客户端使用CLC公钥对内容密钥和使用权限进行加密

    ⑤加密后的内容密钥和使用权限放在发布许可中

    ⑥客户端使用RAC中的用户私钥解密CLC中的私钥

    ⑦客户使用CLC的私钥签署发布许可

    ⑧支持RMS的应用程序将发布许可合并到受保护的文档

    一句话表述:在客户端的密码箱上生成内容密钥,然后用CLC中的授权服务器公钥加密内容密钥和使用权限,同时也用CLC的公钥加密内容密钥和使用权限,再将加密后的内容密钥和使用权限放在发布许可中,客户端用RAC中的用户私钥解密CLC中的私钥,并用CLC私钥签名发布许可,最后发布许可合并到受保护的文档。

    疑问:在离线状态下,由于CLC的私钥是由请求该证书的用户的公钥加密的所以说当要其它(有适当权限的)用户要使用该文档将会是个怎样的工作过程(通过实验求解)。

     

    第二个环节:受权限保护文档的使用

    ①客户端将RAC和文档的发布许可发送到颁发发布许可的授权服务器

    ②授权服务器使用它的私钥解密发布许可中的内容密码

    ③授权服务器使用RAC中用户公钥加密内容密钥

    ④加密后的内容和用户的使用权限密钥被添加到使用使用许可

    ⑤授权服务器使用它的私钥签署使用许可

    ⑥使用许可被发送到客户端

    ⑦密码箱使用计算机的私钥解密保存在RAC中的用户私钥

    ⑧密码箱使用用户私钥解密内容密钥

    ⑨密码箱使用内容密钥解密受保护的文档

    一句话表述:客户端将RAC和发布许可发送到授权服务器,然后授权服务器解密发布许可中的内容密钥和使用权限,再用RAC中的用户公钥加密内容密钥和使用权限并添加到使用许可当中,接着授权服务器用私钥签名使用许可返回给客户端,客户端使用密码箱中计算机证书的私钥解密RAC中的用户私钥再用用户私钥解密使用许可中的内容密钥和使用权限,最后使用内容密钥解密受保护的文档。

  • 相关阅读:
    常见保护方式简介
    各种保护机制绕过手法
    ShellCode框架(Win32ASM编写)
    单例模式
    HTTP1.0、HTTP1.1、HTTP2.0的关系和区别
    java集合提供的排序算法
    Dubbox以及微服务
    进程栈帧
    java线程池
    Java多态的实现
  • 原文地址:https://www.cnblogs.com/liangwang/p/5520128.html
Copyright © 2011-2022 走看看