基于AD RMS的信息权限保护应用开发研究
2011-03-14邱刚
邱刚
中船重工第七二二研究所信息安全事业部 湖北 430079
0 前言
计算机与网络技术日益深入各种行业的业务应用,大量企业和机构部署了办公自动化和业务信息系统。在提高组织工作效率的同时,信息滥用和泄露的风险也随之增大。计算机网络中电子信息发布和访问的安全性的得到了广泛的关注和重视。AD RMS是一种在分布式网络环境中集中保护信息按要求方式使用的技术,为网络中信息的安全发布和使用提供了一个完整的解决方法和技术平台。AD RMS定义了细粒度的访问方式,可以为指定的用户或者组在一定时间范围内指定读取、修改、打印等操作权限的任意组合。确保信息文件有意无意的离开AD RMS安全域后无法被读取和使用。
AD RMS适合于各种组织机构控制文档在机构内部和外部的发布和使用方式与时间。为了使用AD RMS的权限管理功能,应用程序要使用AD RMS SDK提供的接口来实现对权限保护的支持。本文介绍AD RMS的原理,简述开发AD RMS应用的环境建立和程序实现方法。
1 原理
1.1 AD RMS应用系统
AD RMS应用系统包含AD RMS服务器、客户端计算机、用户认证服务器、证书服务器和用户,如图1所示。AD RMS 采用信息加密技术保护敏感信息内容及使用方式。
图1 AD RMS 环境示意图
1.2 信息加密
AD RMS采用对称与非对称密码结合数字证书的机制加密受保护的信息内容和使用权限信息。文档保护从用户在域中的安全标识开始,通过认证服务与证书管理机构获取用户证书,从随机数源生成随机的文档信息对称密钥,采用对称算法和对称密钥加密文档的内容和权限信息,使用接收者证书中的公钥加密保护文档的对称密钥。含有加密的对称密钥和信息的文档即可通过各种开放的介质如网络、U盘等发送给接收者。接收者持有自己证书对应的非对称私钥,能够解密出对称密钥,最后按照权限指定的方式解密使用文档内容。
ADRMS管理与内容加解密有关的证书,密钥,为终端用户提供一个简单易用的信息安全发布与使用设施。
2 建立开发环境
我们构建了如下配置的网络环境部署 AD RMS服务和开发平台。所有这些计算机位于一个局域网中,使用了192.168.0.X网段,如表1所示。
表1 基础网络设施构建表
安装和配置域控制器,在 HCLAB-DC安装 Windows Server 2008,添加域控制器、域名解析服务器和证书服务角色,域名使用hclab.local。所有其他计算机均加入hclab.local域,在域中创建开发测试用户。然后安装SQL数据库服务器,在 ADRMS-DB上安装 Microsoft SQL Server 2005。在ADRMS-SRV上使用 HCLAB-DC的证书服务申请主题为adrms-srv..hclab.local的服务器证书。
在ADRMS-SRV上安装和配置ADRMS服务。为了简化开发,ADRMS服务正在前期开发可以不必使用SSL加密注册AD RMS服务连接点完成ADRMS服务的安装和配置。将AD RMS集群的URL加入ADRMS-CLT的本地Intranet安全区域,这可以防止已经登录到域的用户在访问域中的 AD RMS服务时被提示输入用户凭据。
在ADRMS-CLT上安装Windows 7 SDK或者Visual Studio 2008/2010以支持应用程序的开发与调试。
3 AD RMS应用实现
3.1 激活用户终端
在计算机可以用来加解密 AD RMS保护的信息内容之前,必须将计算机签署进入目录中的AD RMS证书链中,这个过程称为机器激活。调用激活(DRMActivate)等 AD RMS函数需要一个客户端会话用来承载其他的证书存储会话。DRMCreateClientSession函数创建客户端会话并得到其句柄,这个句柄将在其他AD RMS函数调用中被引用。
创建客户端会话:
激活等AD RMS函数调用涉及到与活动目录服务、RMS服务的多项网络交互,这些函数会立即返回以便执行其他任务,调用者用异步的回调方式处理返回结果。在回调上下文参数结构中包含一个异步事件对象,可以使处理返回结果的线程在该对象上阻塞等待,从而提高处理器利用效率。
dwWaitResult = WaitForSingleObject( context.hEvent, DW_WAIT_TIME);
计算机激活后,必须激活当前登录的用户以获得权限账户证书(Right Account Cerification ),这个过程称为用户激活。激活完毕后,通过DRMIsActivatied函数检测机器和用户的激活状态。用户激活也是调用DRMActivate函数,将激活计算机时用的第二个参数的第一项 DRM_ACTIVATE_ MACHINE改为DRM_ACTIVATE_GROUPIDENTITY即可。处理用户激活结果的回调机制与激活计算机时完全相同。
3.2 加密信息
发布受 AD RMS保护的信息一般需要将加密的内容和相关的发行证书组合在一个格式文档中,使用信息的目标用户可以从文档中提取发行证书用来获取终端用户证书,使用终端用户证书解密信息。AD RMS SDK使用高级加密标准(Advanced Encryption Standard,AES)算法加密信息内容。密钥长度是128比特,密文数据分组长度为16字节。Windows Vista及其以前版本的操作系统采用分组算法的ECB模式;Windows 7则增加了采用分组链接机制的CBC模式的支持。为了加密信息内容,计算机和用户必须已被AD RMS激活,才能进行后续获取签署的发行证书进而加密信息的过程。
加密内容包括以下步骤:
(1)创建客户会话,这个过程与前面所述一致。
(2)从证书存储中获取加密过程中要使用的证书,包括计算机证书、权限账户证书等。使用 DRMEnumerateLicense指定不同的证书类型标志uFlags参数获取这些证书。
(3)获取应用程序清单。应用程序的清单包含有程序组件的数字签名信息,是下一步创建安全环境的条件之一,用来防止被篡改的应用程序窃取受保护的信息。
(4)创建安全环境。调用DRMGetSecurityProvider获得一个安全提供者,随后使用DRMInitEnvironment初始化处理受保护的信息必须的安全环境,这里如果检测到安全威胁则会返回失败。在应用程序被篡改、程序正在调试环境中运行等情况下用户进程都会无法创建安全环境。
(5)获取已签署的发行证书。这个证书中包含有详细的信息使用权限信息,如有效时间、许可用户、各用户的权限(读、写、拷贝、打印)等。首先使用 DRMCreateIssuance创建发行证书对象,然后创建使用SMTP邮件地址格式的用户名称创建DRM用户对象,创建用户所需的DRM权限对象,将用户对象和授予的权限对象关联到发行证书中,创建和设置发行证书中惟一内容 ID等元数据;最后,使用在线或者离线的方式签署发行许可证。
(6)加密内容。最后,创建一个加密对象,并使用这个加密对象加密信息,将加密的信息和已签署的发行证书保存到应用程序格式文档中,将文档拷贝到共享的介质中完成信息的加密发布。以下是加密信息的程序片段:
4 解密信息
使用受保护的信息需要先进行解密,解密操作的安全环境准备过程与加密信息时是一致的,获得了有效的安全环境句柄之后,解密信息的进程提取用户的权限账户证书(RAC),使用RAC和信息的发布许可证从AD RMS服务器获取信息的终端用户许可证。将期望的使用权限绑定到终端用户许可证,使用绑定的许可证创建解密对象,完成信息内容的解密使用。以下是解密信息的程序片段:
5 调试
调试AD RMS应用程序比其他应用程序要困难。这是因为为了信息内容的安全,受保护的内容是在锁盒中处理的。在使用AD RMS锁盒对受保护的信息处理时,AD RMS如果检测调试器的存在就会使安全函数的调用失败,从而防止攻击者通过调试器窥探信息,同时这也使得程序无法调试。为了调试AD RMS应用程序,Microsoft提供了一个称为锁盒通信代理(LCP)的工具,应用程序开发调试期间,使用 LCP调用安全函数模拟相关的功能,发布时再把这些函数连接到真正的锁盒。如果不使用LCP,可以使用类似与printf的函数输出跟踪信息协助调试,在应用发布时应该屏蔽这些跟踪信息的输出。
6 结语
基于 AD RMS构建的应用支持以细粒度可控的方式发布和使用信息,第三方软件开发者和安全解决方案提供者可以在AD RMS上构建强有力的安全应用和解决方案,有效的改善应用软件产生的电子文档在使用过程中存在的滥用和扩散问题。自Windows 7开始,AD RMS支持AES的CBC模式,对抗密码学分析与攻击的能力显著提升,但其对于定制密码设备的接入和支持仍显不足,限制了其在不同等级的安全要求环境下的更广泛使用,值得在进一步的研究中予以改善和解决。
[1]Microsoft Corporation.AD RMS Overview.http://msdn.microsoft. com.2010.
[2]Microsoft Corporation.Active Directory Rights Management Services SDK.http://msdn.microsoft.com .2008.
[3]Microsoft TechNet.AD RMS Deployment Step-by-step. http://technet.microsoft.com/en-us/library/cc725699.aspx.2008.
[4]Microsoft Corporation,Using the AD RMS SDK, http://msdn. microsoft.com.2010.
[5]William Stallings.密码编码学与网络安全.北京:电子工业出版社. 2010.