2012-10-06 141 views
7

我的情况:(!)基于浏览器的加密/从浏览器密钥存储私钥解密

  1. 医务人员希望为了将其存储到一些数据库进入患者的敏感数据到网络浏览器和稍后再次检索它。

  2. 除医务人员本人外,其他人不得看到这些数据。这意味着它必须在传输到服务器之前使用某个秘密令牌进行加密。这也意味着没有秘密令牌,IT人员(无法访问服务器/数据库)或任何其他人都无法解密它。 (如果令牌丢失,数据将永远无法访问)

  3. 在客户端机器上不应安装任何其他软件,除非某个令牌(例如,私钥)导出一次并将其导入进入所有的数据访问应该被授予的浏览器。

所以我的问题是:

有没有一种方法来加密/解密在客户端的数据(例如,使用JavaScript)使用,可以浏览器之间轻松地交换一些秘密浏览器令牌(即,导出/导入类似于X.509证书)?

如果不是,哪种替代解决方案将成为可能?由于条件1和条件2是强制性的,所以只有条件3可以被修改,如果需要的话。但是,客户端仍然需要尽可能少的安装工作。

编辑:SSL显然只是这个问题的答案的一部分!

+2

我有三封信给你:S,S和L. –

+1

不,请仔细阅读我的问题。 – Thomas

+0

我没有答案,但可能看看OAuth如何工作可能会给你带来幻想的想法。 –

回答

5

看看Web-browser encryption of personal health information,其“抽象”部分似乎描述了你的同样的问题。但是,他们的生成加密密钥的“密码”必须共享,这不会让您区分医疗人员。

我们描述了远程数据录入,允许数据 将确定在输入数据的 人的Web浏览器进行加密病人的系统。这些数据无法在数据中心的工作人员的服务器 上解密,但可以由人员 输入数据或其代表解密。我们开发了这个系统来解决 在临床研究中出现的一个问题,但它是 适用于敏感信息是 存储和更新在数据库中的一系列情况下,并且有必要确保它不可能是 除了那些故意给予访问权限以外的任何内容。

+0

感谢您的建议!原则上它是有效的。我们发现已经有一个类似的实现,它受到http://code.google.com/p/memwords的启发,它遵循相同的方法。 – Thomas

+0

@Thomas一种解决单个密钥需求的方法是我发现的一种方法,我认为boxcryptor就是用它。当创建一些数据时,会在用户端(在本例中为浏览器)创建一个对称密钥,然后使用该用户非对称公钥对该对称密钥进行加密并发送到服务器。如果该用户想共享该数据,则他们需要采用该对称密钥并使用任何员工的非对称公钥对其进行加密,并将该密钥存储在服务器上,以及对该密钥的自己(和任何其他)加密。 ...(接下页) –

+0

访问时,用户下载使用公钥加密的密钥,对其进行解密,然后使用对称密钥来解密主数据。这仍然要求对称密钥暴露给有权访问的每个人,但他们都可以使用不同的非对称密钥对。如果用户从访问中删除,则必须使用新密钥重新加密数据。 –

3

有一个AES加密的JavaScript实现加密浏览器中的明文。如果你围绕这些工具构建一些东西,服务器端将只存储加密文本,而不会使用密码。

http://www.fourmilab.ch/javascrypt/

应该不需要在客户端上的任何额外的安装,但可能会需要一些开发工作,以获得用户体验的权利。