如何实现/使用安全的“一次性读取”本地文件访问系统?

时间:2009-09-14 16:55:49

标签: security file-io filesystems device-driver drm

有人知道一个安全的“一次性读取”本地文件访问系统吗?或者如何创建一个?我意识到,如果要在系统上使用数据,那么它必须能够被读取,但我认为有可能严格限制数据的可用性并减少在其他地方复制和使用数据的可能性。 / p>

这些是我的要求:

我想在USB记忆棒上存储'安全/加密'数据文件(可以是只读CD / DVD,但如果读/写USB甚至是软盘则更好)并且可以读取此文件一旦(并且主要仅一次),一旦输入密码,在逐个块的解码基础上。文件内容可能是基本的text / xml(或文本编码数据),主要是作为顺序流读取。数据(理想情况下)可以通过普通的Windows文件访问方法读取,即:std文件,FSO对象(流和文本文件),所有BASIC PC(VB6 / VB.NET)文件处理方法,甚至Excel文本(导入) )。是的,我知道这可能会破坏对象(因为这样的文件可以打开/保存),但我仍然希望这种可能性。最后,一旦满足“访问”标准,设备将阻止进一步访问。

只能在本地PC系统上访问数据。没有LAN,不支持设备共享。设备上的数据不应通过常规方式复制。如果可能,将使用常规方法将数据写入设备,或者在必要时使用特殊应用程序。

为了简单起见,只需一个密码,一个文件,一个用户和一个用户就会很棒,但其他可能的改进包括:(作为锦上添花)......

  • 允许'n'打开
  • 拥有2个或更多用户的多个密码,单独行动
  • silo-passwords,有2个以上的用户一起签名访问(甚至 来自更多用户的至少n个签名一起获得访问权限)
  • 密码提示应在第一次访问时提供,独立于 应用程序调用第一个块
  • 密码可以嵌入/自动
  • 将访问权限绑定到指定的计算机/ mac / ip /磁盘序列号(或 其他机器代码)
  • 将访问权限与指定的程序/应用程序联系起来
  • 如果可能,请删除并安全覆盖数据文件

我做这个的第一个猜测表明它需要一个'伪设备'驱动程序,它可以作为std可移动设备驱动程序的扩展(或替换)。驱动程序将逐个扇区地处理每个文件块,并且如果未经授权则拒绝服务于进一步解码的块。设备不应该提供正常的目录列表,但可以向用户提供某种形式的内容摘要(可选)。

与DRM系统不同,我不想要任何形式的在线访问/身份验证(但会考虑它),我更喜欢一个独立的系统。

对于这样的设备/系统我看起来很长很难,但还没找到。大多数设备和系统工具(例如:Iomega / ironkey)似乎解锁了对文件的访问权限,但没有限制,即:read-many,一旦解锁。

性能不是问题。缓慢的软盘读取率是可以的。加密方法是不可知的,任何合理强大的40bit +(128bit)都可以。我无法告诉你数据是什么或它是什么,我只需要一种方法来向某人提供数据并尽可能地限制其使用以及它们可以用它做什么。这是保护机密数据的真正要求,而不是DRM或MP3 /视频或类似内容。

我是一名'办公室'开发人员,并不熟悉设备驱动程序或DRM - 现在我将从哪个项目开始?是否有任何可用于joe-public的东西?

谢谢 - 蒂姆。

PS:更新

我应该指出,我只想在我们自己和一个特定的指定服务提供商之间传递数据。我不希望他们复制我们提供的数据。它将被用于支持“单一”一次性过程,然后完成。由于数据是“流式传输/读取”,因此应该“消费”。如果流程失败,我们将重新向服务提供商发布数据。数据仍然是我们的财产,它没有被出售/许可。

我确实认识到没有任何解决方案是万无一失的,但风险/回报率应该能够劝阻打破系统的偶然尝试。数据没有明确的商业价值。

PPS:这是一个真正的要求......你会做什么?

根据对@eriksons深思熟虑的回答的评价,你们说'不可能/不打扰' - 但除了亲自监督数据是根据我们的意愿使用之外,你会做什么?

2 个答案:

答案 0 :(得分:4)

执行摘要:这不是一个现实的解决方案。重新考虑这个过程,以便不需要“一次性读取”。

一些公司(消失公司,他们至少有一个竞争对手)试图在90年代后期在通用硬件上制作“自毁”电子邮件。他们花费了数百万美元的dot.com来开发那些没有真正发挥作用的系统。

我所知道的唯一潜在解决方案是使用Trusted Platform Module.这些是相当普遍的,因为它们是美国政府购买的所有计算机都需要的。但是,他们的能力各不相同您需要一个支持远程证明的东西,它允许软件对自身执行完整性检查。使用此功能,您可以编写可以强制执行数据销毁策略的软件。但是,我不认为这个功能被广泛使用。我的笔记本电脑有一个TPM,但它不支持这个。

您还应该意识到对“可信计算”存在很多敌意,因为它可以用来限制机器的功能。这违反了您随意使用酒店的权利。 TPM可能对企业或政府机器有意义,但不适用于个人计算机。

您的问题的其他方面,例如授予多个用户访问数据,要求多个用户访问数据更容易。

为多个用户加密数据通常是通过生成密钥,使用“内容加密密钥”加密数据,然后使用“密钥加密密钥”(可能是密码)加密密钥(相对较小)来实现的。 )属于每个预期的接收者。

我可以使用Shamir Secret Sharing,安全地完成要求一定数量的用户输入密码,正如我在此处所了解的那样。


基于对该问题的评论,特别是“邮寄标签打印服务”的类比,我担心我的初步答案并不真正相关。

在这种情况下,我只能看到合法的解决方案。禁止在合同中存储您的数据。如果因违反合同而起诉他们,请这样做。

从密码学的角度来说,我能想到的最好的事情就是“水印”这样一个“邮件列表”,其中的信息可以帮助我证明某个供应商披露了该列表的副本。知道存在水印可能会阻止任何故意披露,并有助于在意外披露的情况下利用快速解决方案。这可以在记录中使用隐写技术以及集合中的虚假记录。

这样做的算法可能已经存在,但我不熟悉这个领域。研究“数字水印”可能很有用。即使它只显示受保护视频和音频的算法,也许这些算法可以适用于其他媒体。

答案 1 :(得分:1)

您的方法存在一些问题。

  1. 如果您可以从任何应用程序中读取数据,则可以在任何地方保护数据。我认为这会破坏任何“只有一次访问”政策的目的。
  2. 要获得设备驱动程序来处理您的场景,您需要深入了解文件系统编程,至少在Windows下并不容易。即使这样,也很难强制执行一次性访问先决条件。
  3. 程序具有不同的文件访问策略,这可能会破坏您的假设。例如。应用程序可以打开一次文件以获取其大小,然后关闭并重新打开它,以加载其数据。应该如何执行?你想限制'OpenFile'电话吗?你想限制'读字节'的电话吗?你想限制......在文件中跳来跳去吗?
  4. 当您的媒体被复制时,无论如何,您都无法知道。游戏行业试图将游戏与原始CD捆绑多年,但多年来一直惨遭失败。
  5. 我认为,可行的是容器格式,带编码器/解码器,或类似的东西。 (请参阅Windows7中的Bitlocker)这可以保证,您只能将数据解码一次到本地光盘然后删除介质上的容器(注意,首先检查介质是否可写,并将容器绑定到串行 - 介质的编号或名称,以便无法复制容器。)

    另一种可能性是单独的USB设备,您只能使用一次从中提取数据。然后,您只需要在用户模式下使用WinUSB编写一次驱动程序。加密的USB-Sticks使用这种方法。

    但我真的认为这是一个坏主意,因为当接收人员可以从媒体上读取所有数据并在其他任何地方安全时,您可以非常轻松地绕过任何计数器测量。