2016-10-10 30 views
1

我们有一个有趣的问题。我们有客户想要使用我们基于网络的应用程序(后端/数据库与我们)。但是他们想要加密患者信息,因此我们公司中没有人能够看到它。会有某种JavaScript解决方案吗?或者在发送给我们之前以某种方式使用它们的加密?与web请求的javascript加密

回答

-2

那么有一个问题。你怎么想在不知道如何发生的情况下实现en /解密? ;)

一些简化加密基础理论:(记住,即时通讯也没有专家这个主题中)

在今天的密码,我们主要使用2种不同其正在或者symmetric或不对称加密的(维基百科:Public-key_cryptography),我们正在关注对称。你不需要知道他们如何实际加密数据,但你需要知道的是它基于给定的密钥/密码。它们之间的区别在于对称加密对于两者都使用1个密钥,对于解密和非对称使用两种密钥,但是目前这不需要任何东西。

因此,有许多不同的算法用于以某种方式进行加密,并且只要使用的密钥足够强且足够随机,以至于即使它的brutefoce将会持续很多次,也知道正在使用哪种算法应该是个问题年份。

根据使用的密钥,加密数据的输出将不同,因此密码为“bar”的字符串“foo”与使用不同密码的同一文本(foo)不同。所以在不知道使用哪个密钥的情况下无法获得价值。

我从来没有在JS中使用加密库,所以我不能推荐你任何,但我确定有很多在那里可以用于几行。一个基于对称加密的非常好的算法是AES,它也有很多实现在那里准备使用;)

所以现在你只需要在提交表单上添加一个按钮,要求输入密码然后在视图/任何想要使用密码解密数据的页面上显示一个按钮。发送时,可以将加密的数据值发送到其未加密的数据密钥(而非加密密钥!)旁边,以便知道哪个值是什么。

这里是一个网站,你可以看到它的行动。注意加密值与密码的小改动完全不同。你也可以在那里找到一些代码。 http://www.movable-type.co.uk/scripts/aes.html

我希望你能理解它,它不太杂乱。我的英文不是很好,所以请原谅我糟糕语法X)

+0

感谢您的帮助。仍然有点困惑,但也不是顶级的加密明星。这是确切的情况。我们有一个Web应用程序(前端/后端)。他们想要使用这个应用程序,但是当他们填写病人表格并发送给我们时,我们会收到加密的患者信息。然后,我们将保存发送加密的表单值。当他们要求病人(例如进行编辑等)时,它必须被解密。前端属于我们,但我们不应该知道如何进行加密/解密。如果你有时间,你可以请一个详细的想法。 – Benno

+0

我更新了我的帖子,提供了更多信息。请记住,Jacco主要是在谈论你应该注意的连接本身的安全性!在我的文章中,你会发现许多可能的方法之一,以实际处理你的客户想要的。 – KoalaGangsta

+0

你的解释很完美。我知道了!!非常感谢你,我正在寻找什么! – Benno

5

可以(虽然在安全社区,这是不被视为一个可行的解决方案12)发送一个javascript加密库他们,但它不会解决问题。

注意:我会在这个答案中假设你的连接使用SSL/TLS,因为没有它,你不能安全地与客户进行通信。

问题是客户需要信任你。他们将从您的服务器下载JavaScript代码。所以,服务器的所有者将是总是能够改变javascript的行为。这是因为,即使您向客户端发送了一个完全有效且经过审核的完全javascript加密库,客户端也无法验证此情况。唯一的保证是他们从主机获得了一些东西,他们的他们的根据SSL/TLS证书选择信任。

通常情况下,人们开始提出恶意的中间人情景。但是,这种担忧是情绪:您的连接是否由SSL/TLS妥善保护,否则不是。如果一个中间人的情况是可能的,那么客户端从服务器上下载的javascript加密库也是可疑的。换句话说,如果SSL/TLS层会以某种方式被破坏,那么客户端加密也应该被认为是被破坏的。

如果他们信任足够的主机,相信他们不会篡改javascript并确实在客户端执行所有加密,那么他们可能会相信您不会在服务器端滥用其数据。这留下了很多(不需要的)复杂性。较低的复杂性导致更简洁的设置,更易于审计。


免责声明:如果您使用的医疗数据进行工作,有可能是很需要遵守(取决于您所在的国家/国家)的一些规律。如果您对这个级别的问题不满意,您应该聘请一些专家,或者接受这个请求比您可以轻松构建的要复杂得多,并且请告知您的客户,他们会更好地找到一家拥有更多经验的公司在操作敏感数据。

+1

完全同意这个答案,写得很好。 +1 –