Javascript加密web请求

javascript encryption with web requests

本文关键字:请求 web 加密 Javascript      更新时间:2023-09-26

我们有一个有趣的问题。我们有客户,想要使用我们的基于web的应用程序(后端/数据库与我们在一起)。但是他们想加密病人的信息,这样我们公司的人就看不到了。会有某种javascript解决方案吗?或者在发送给我们之前使用他们的加密?

可以(尽管在安全社区中,这并不被视为可行的解决方案 1,2 )向他们发送javascript加密库,但这并不能解决问题。

注意:在这个答案中,我将假设您的连接使用SSL/TLS,因为没有它,您无法安全地与客户端通信。

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

通常,人们在这个时候开始提出一个恶意的中间人场景。这种担心是情绪:要么你的连接是正确的SSL/TLS保护,或者它不是。如果中间人场景是可能的,那么客户端从服务器下载的javascript加密库也是可疑的。换句话说,如果SSL/TLS层以某种方式被破坏,那么客户端加密也应该被认为被破坏了。

如果他们足够信任主机,相信他们不会篡改javascript并确实在客户端执行所有加密,那么他们也可能相信你不会在服务器端滥用他们的数据。这样就省去了很多(不必要的)复杂性。更少的复杂性导致更干净的设置,更容易审计。


免责声明:如果您使用医疗数据,可能需要遵守一些法律(取决于您所在的国家/州)。如果你对这个级别的问题感到不舒服,你可能应该聘请一些专家,或者接受这个请求比你能轻松构建的要复杂,并告诉你的客户,他们会找到一个在处理敏感数据方面有更多经验的公司。

有一个问题。在不知道如何发生的情况下,您希望如何实现en/解密?;)

一些简化的基本加密理论:(请记住,我也不是这方面的专家)

在今天的密码学中,我们主要使用两种不同类型的加密,它们要么是对称的,要么是不对称的(维基百科:Public-key_cryptography),我们专注于对称的。你不需要知道他们实际上是如何加密数据的,但你只需要知道它是基于给定的密钥/密码。它们之间的区别在于对称加密使用1个密钥,加密和解密使用2种密钥,但目前你不需要。

因此,有许多不同的算法可以以一种或另一种方式进行加密,只要使用的密钥足够强和随机,知道使用哪种算法应该不是问题,以便即使它的暴力也能持续多年。

根据使用的密钥,加密数据的输出将有所不同,因此具有密码"bar"的字符串"foo"与具有不同密码的同一文本(foo)不同。因此,如果不知道使用的是哪个键,就不可能获得值。

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

所以现在你只需要在提交表单上添加一个按钮,要求密码加密,然后在视图/任何页面上添加一个按钮,希望使用密码解密数据。发送时,您可以将加密的数据值发送到未加密的数据密钥(不是加密密钥!)旁边,这样您就知道哪个值是什么了。

这里是一个网站,你可以看到它的行动。请注意,只要稍微更改一下密码,加密的值就会完全不同。您还可以在那里找到一些代码。http://www.movable-type.co.uk/scripts/aes.html

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