如何“双重locking”一个文件,以便多人必须批准其访问

我有一个稍微奇怪的情况。 我帮助运行一个聊天networking,允许人们在公共团体和私人信息中聊天。

人们对login公共聊天感到满意,但感觉logging私人聊天会是一个巨大的隐私侵犯。 这个networking专门针对年轻人,所以我们中的一些人真的想logging私人聊天,因为我们认为如果提出指控,这将是一个不好的位置,我们说,我们没有任何私人logging,因为我们志愿者担心他们的隐私。

所以,我想知道是否可以实现某种机制,至less有两个人必须批准读取日志文件。

我知道原则上我们可以做到这一点,例如使用两个人的密钥对文件进行encryption,但是这不会扩展到让6个人访问日志文件位置。

我们还需要说明访问消失或死亡的一个人 – 我们需要来自这个六人组的其他两个可信人员能够访问该文件。

另外,还有其他一些关于如何让人们放松自己的想法,而不是花费你的空闲时间(这是什么?)窥探人们的谈话? 访问警报等?

对于@ Sven的评论稍微扩展一下,虽然有一些工具可以使这成为可能,但是这些工具在操作系统级别是不可用的。

所以答案有两个部分:

  • build立一个关于访问这样的日志文件的官方政策,正如@Svenbuild议的那样,确保你有强有力的审计控制来检测对这些文件的访问。 确保这个政策澄清,任何未经授权的访问这些文件将有后果。
  • 为跟踪这些文件的访问请求定义一个可行的解决scheme:它可以像通用的变更pipe理系统一样简单,其中两个批准必须“给”(即logging)以允许这样的访问,或者可以考虑具有前端处理整个stream程:收集访问请求,处理它们和任何批准,如果批准,则提供审查数据的方法。

任何技术措施都可能是一个有足够特权的用户可以解决的问题,因此需要制定一个关于这些规则的政策,以及不遵守这些规则的后果。

这个问题可以使用秘密共享和阈值RSA来解决。

您可以创build一个秘密共享的RSA密钥,可以从您决定的密钥的任何部分中恢复。 一个可以从6股中的2个中恢复的关键只是无限的可能性之一。

然后你使用公钥来encryption日志。 这将遵循公钥encryption的标准惯例,在每次启动encryption日志时,服务器select一个随机对称密钥进行encryption(例如使用AES)。 对称密钥本身然后使用RSA公钥进行encryption。 对称密钥在解密期间保留在内存中,但永远不会保存。 这种encryption可以使用标准软件完成。

当需要解密时,许多密钥持有者同意某个日志需要被解密,并将其RSA密钥的份额应用到encryption的对称密钥。 这导致了对称密钥的秘密共享。 这些对称密钥的份额然后可以在各方之间交换,然后可以重build对称密钥并解密select的日志文件。