这是一系列文章中首次集中讨论关于从Windows Azure社区分享“现实世界”技术信息。该文章的作者是Walter Myers III,他是微软咨询服务的资深顾问。
问题
我浏览过各种Windows Azure相关的帖子,在这些帖子中开发人员选择了使用加密和解锁数据的对称密钥方案。一个重要的情形是,当开发者需要在SQL Azure中存储加密数据时,它将在一个Windows Azure应用程序中被解密,从而呈现给用户。另一种是数据同步的情形,非云端数据必须与SQL Azure里的数据保持同步,当部署到Windows Azure时这些数据就会被加密。
开发人员可能会将加密密钥作为一个blob存储在Windows Azure里,只要存储密钥所涉及的Windows Azure存储是安全的,这种方式就是安全的;但是这不是最佳的做法,因为开发人员必须访问对称密钥,这可能在非云端不知不觉地泄露了对称密钥。此外,如果Windows Azure 应用程序被泄露,那么有可能密钥就被泄露了。本文提供了Windows Azure应用程序的基于证书的数据加密和解密的模型和代码。
解决方案
首先,让我提供一些背景。使用一个基于证书(不对称的密钥)的方法,最好的做法是遵循用来保护私钥的“关注分离”协议。这样,它将通过Windows Azure应用程序负责任何带有私钥并被作为服务证书上传到Windows Azure Management Portal,以供使用(Windows Azure应用程序可用的服务证书必须被上传到相应的托管服务)。开发人员被提供一个公钥,这个公钥只能在应用程序部署时用在开发机器上。当在开发fabric里测试的时候,开发人员必须使用一个他们利用IIS7通过自我认证而创建的证书。在部署时,他们将做一个简单的替换,用上传到Windows
Azure的服务证书替换他们加密/解密代码中的thumbprint,并且利用他们的应用程序来部署服务证书的公钥。
开发人员必须在他们的应用程序上部署公钥,当Windows Azure调用角色示例,它将使服务定义里的thumbprint与上传的服务证书匹配并将私钥部署到角色示例。私钥是有意设成的不可导出的.pfx格式,所以你不能通过RDC连接到一个角色实例来获取私钥。
解决方案的实现
到目前为止,我们讨论了一些理论,现在让我们来看看这些概念具体是怎样表现的。注意此解决方案使用了Visual Studio中为证书管理提供的功能。
如果你尚未准备好,那就现在开始吧,将公钥证书安装到你的个人证书存储区。使用Local Computer而不是使用Current User存储区,因此你的代码应该与将要部署证书的Windows Azure的代码 一致。注意,为了看见证书,你不能只是启动certmgr.msc,因为它会带你来到Current User存储区。你还要启动mmc.exe 并选择File| Add/Remove Snap-In…菜单选项,添加证书,如下面的截图所示。

因此你的证书控制台应该和下图类似:

在部署应用程序之前,先让我们看一看它在Visual Studio 2010所展现的样子,然后看看在Windows Azure角色实例中证书控制台是什么样的。下面的截图来自于我的web角色里的Properties页,并让Certificates标签处在选择的状态。我在该截图上为Certificates添加了高亮文本并将其重新命名为EncryptDecrypt。注意存储单元是LocalMachine,存储名称是My,这就是我们想要的。

一旦你在这里添加了证书,你马上可以进入到ServiceDefinition.csdef文件,类似于下图。你在ServiceDefinition.csdef里还会发现与thumbprint 一起的一个entry。

部署应用程序之后,你可以为任意实例建立一个Remote Desktop Connection(RTC)(假设你在发布应用程序时已经配置了RDC)。以上面所示的相同的方式,启动mmc.exe 并为Local Computer 和 Current User添加 Certificates snap-ins。你的RDC窗口应类似于下图。

请注意证书已经安装到Local Computer个人证书存储区,但是没有一个已安装到Current User个人存储区。这是将上传服务证书到托管服务与配置角色(它是Windows Azure需要在证书存储区安装证书的原因)证书结合到一起。现在,如果你右击certificate并试图导出,就像上面所讨论的那样,你将会看到私钥是不可导出的,这是期望中的事情,如下图所示。

因此现在我们知道了即将用来加密/解密的证书是如何处理的。下一步,让我们看一看加密/解密的例程。
注意在上面的加密和解密例程中,我们需要为加密获取公钥但必须获取解密的私钥。这很重要,因为Public Key Infrastructure (PKI)使任何拥有公钥的人执行加密,但只有拥有私钥的人才有权限来解密加密字符串。一个显著的差异是,当我们获取密钥,我们可以将公钥导出到XML,如加密例程中所示的那样,但是我们在解密例程中不能将私钥导出到XML,因为证书是与私钥一起部署的,Windows Azure上私钥设为 non-exportable,这就是之前我们所讲到的。
让我们来看看我写的一段代码,使用上面的X509 encrypt/decrypt helper class来加密和解密一个字符串:
这样,在上面的代码中我装载了我的证书,使用个人存储区放在本地计算机上。X509 encrypt/decrypt class 的LoadCertificate方法的最后一个参数保存了角色的property页上Certificates标签里获取的thumbprint。作为练习,你可以编写一些代码从ServiceConfiguration.cscfg文件中检索此字符串。
参考文献:
http://www.josefcobonnin.com/post/2007/02/20/Encrypting-with-Certificates.aspx
本文翻译自:http://blogs.msdn.com/b/windowsazure/archive/2011/09/07/field-note-using-certificate-based-encryption-in-windows-azure-applications.aspx
分享到:
相关推荐
导线测量外业记录表.pdf ...在实际应用中,导线测量外业记录表可以用于各种测量场景,如建筑测量、地籍测量、道路测量等。这类表格可以帮助工程师和测量员快速记录和分析测量数据,提高工作效率和accuracy。
GPS外业记录表 GPS外业记录表.xls
在这个场景下,JS宏被用来批量应用样式,这意味着用户可以预设好表格的格式,如字体、颜色、行列布局等,然后由宏一次性应用到所有的外业记录表上,确保所有文档的视觉一致性,提高专业性和可读性。 此外,这个功能...
GPS外业观测记录手簿.xls GPS外业观测记录手簿.xls
水准外业记录软件使用手册.doc
基于Android的外业核查系统设计与应用 本文设计了一种基于Android操作系统的外业核查系统,旨在提高外业核查工作的自动化程度和工作效率。该系统通过移动设备的二次开发,实现了样本采集、路径数据的存储、地理信息...
GPS RTK 测量技术在公路外业测量中的应用 GPS RTK 测量技术是 GPS 定位技术的二次开发技术,其以定位的快捷、高精度而著称,在各行业中都有着广泛的应用,为社会带来巨大的经济效益。GPS RTK 测量技术在公路外业...
为了改善这一状况,本文提出了一种解决方案,即通过开发一个Android手机应用程序来实现导线外业观测数据的电子记录、自动检核和自动保存,从而提高导线外业观测的效率。 软件开发的主要技术是Java语言,采用结构化...
掌上水准是基于Pocket PC、手持设备和手机上的掌上水准测量程序,解决外业水准测量的记录问题,程序能根据观测等级、仪器类型按规范要求的观测顺序自动移动光标位置,自动完成计算并根据各限差要求对超限数据提醒;...
基于嵌入式系统如PDA、抄表机等,利用C语言编写,有广泛的扩展性。
在实际应用中,该系统已经证明能够有效地提高外业工作的效率。它不仅简化了外业信息采集的过程,还通过多媒体信息的采集,增强了数据的丰富性和准确性。同时,实时定位功能确保了作业的精准性,减少了内业转绘的工作...
手机GPS在公路前期外业勘察和内业阶段的应用 一、概述 本文主要介绍手机GPS在公路前期外业勘察和内业阶段的应用。手机GPS是一种基于GPS技术的移动设备,具有高精度、便携、方便充电等优点。通过手机GPS,可以实现...
标题和描述中提到的“1:500,1:1 000,1:2 000 外业数字测图技术规程”是中国国家标准(GB/T14912-2005)关于大比例尺地形图外业数字测图的技术规定。这一规程取代了1994年的版本,对地面数字测图的成果进行了...
在实际操作中,还涉及到标石的选取和安装,如A级到E级标石,以及各种类型天线墩的设计,确保接收机稳定并对中。此外,作业员在野外应记录详细的点位信息,包括日期、传感器序列号、天线高度等,以备后期数据处理和...
本文围绕森林资源信息外业采集问题,提出了一套系统的解决方案,即在移动平台上将GIS、GPS、Rs集成在平板电脑中,开发了一套支持林业信息采集的低成本、高效率、携带方便的APP软件。该软件利用GPS定位功能在野外快速...
### RTK外业操作步骤详解 #### 一、项目建立 RTK(Real-Time Kinematic)外业操作是一项精准的定位技术,广泛应用于测绘、工程、土地管理等领域。其首要步骤是项目建立,确保所有后续操作都有明确的参照体系。 1....
外业调查在测绘领域是确保数据质量的关键工作环节,其成果通常要求提交矢量数据形式的调查路线记录。由于移动端设备记录的轨迹数据多以文本文件形式存储,这些文件包含了经度、纬度、海拔及时间等信息,常见的格式有...
【描述】提到该软件是用VB(Visual Basic)编写的,VB是一种基于事件驱动的编程语言,常用于开发Windows应用程序。尽管代码没有完全完成,但作者表示愿意提供原始代码,这为其他从事林业改革工作的专业人士提供了...
- **目标二**:建立服务链,实现外业数据采集、传输、内业处理的一体化,并提供源码基础,便于在其他类似项目中应用。 2. **系统总体架构** - 系统分为外网和内网两部分,分别对应外业和内业工作。外网负责数据...
在实际操作中,用户通常需要先在莱卡GIS中加载和编辑观测数据,然后选择“导出”功能,指定输出格式和参数,最后生成适合外业使用的记录表。这个过程可能会涉及到一些专业术语和设置,比如数据筛选、字段映射、单位...