Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中是否可以进行端到端加密?_Javascript_Node.js_Encryption_P2p_End To End - Fatal编程技术网

Javascript中是否可以进行端到端加密?

Javascript中是否可以进行端到端加密?,javascript,node.js,encryption,p2p,end-to-end,Javascript,Node.js,Encryption,P2p,End To End,我目前正在研究在加密和安全方面创建(对等)消息传递客户端的可能性。此应用程序将基于web技术(如果可能) 我的问题是:仅使用javascript(client&node.js/peer.js)就可以进行端到端加密吗?如果是:研究HMAC(RSA)加密技术是否正确?我已经试着了解一下这些库是如何工作的,但到目前为止我没有运气:) 我觉得lib很有趣,但我(完全)不理解并不知道如何实现(在这个用例中): 如果需要,我可以试着详细说明 更新: 该应用程序将是一个移动应用程序。web技术的使用

我目前正在研究在加密和安全方面创建(对等)消息传递客户端的可能性。此应用程序将基于web技术(如果可能)

我的问题是:仅使用javascript(client&node.js/peer.js)就可以进行端到端加密吗?如果是:研究HMAC(RSA)加密技术是否正确?我已经试着了解一下这些库是如何工作的,但到目前为止我没有运气:)

我觉得lib很有趣,但我(完全)不理解并不知道如何实现(在这个用例中):

如果需要,我可以试着详细说明

更新:
该应用程序将是一个移动应用程序。web技术的使用是一种概念证明。

您目前正在研究安全实现。如果您不了解这些库背后的安全模型和加密技术,那么您的解决方案将-非常确定-不安全

Artjom正确地指出,对于对等加密,您很可能需要双方的身份验证。这不是由正常的SSL/TLS提供的,您将需要客户端身份验证。但是对于客户端和服务器身份验证,您需要建立信任。在普通浏览器上,这是由内部证书存储提供的。然而,信任客户要复杂得多

所有其他内容(比如RSA如何不是HMAC)都是实现细节。但是,您现在不应该实现任何与安全性相关的内容。首先关注您的用例、威胁场景和协议设计。

最多,您可以在web浏览器中使用Javascript进行“新颖”的端到端加密。也就是说,它看起来和感觉上都像是端到端加密,但它的实现很可能会受到密码学家的嘲笑

主要原因是,无论您在前端对数据进行加密时使用了哪一块拼图,您的客户端最终都取决于服务器发送的数据

要求阅读:


    • 端到端加密的目标是,即使中央服务器作弊,用户也可以确定通信的安全性。需要解决的主要挑战有两个:

      (1) 用户需要100%确定他们正在与他们认为正在与之交流的人进行交流。这是为了防止中间人(MITM)攻击,中间人可以是任何人,包括服务器本身(例如:)

      (2) 您需要100%确保客户端代码没有作弊。例如,它是否真的使用他人的公钥加密数据,或者只是将数据以明文形式发送到其他地方,然后从那里加密。考虑到任何访问服务器的人都可以随时交换JavaScript,这是一个巨大的挑战

      这两个问题似乎都可以解决

      对于(1),用户可以在带外验证公钥,如(不幸的是,许多人跳过了这一步,但为了真正的端到端安全性,您需要它)或

      对于(2),麻省理工学院的一个小组声称在他们的设计中解决了这个问题。见第6节。应该指出的是,研究人员发现了Mylar的安全问题,但据我所知,他们对客户端代码完整性的解决方案并未受到影响


      因此,从理论上讲,端到端加密完全可以在JavaScript中完成(所使用的服务器语言与此无关)。实际上。。。这并不容易。

      为什么不像其他人一样购买ssl证书呢?在我构建(P2P WebRTC)聊天应用程序时,通过实现ssl证书是否解决了这个问题?也许我必须补充一点,这将是一个未来的移动(web)应用程序。我相信您可以使用
      window.crypto.getRandomValues(uintarr)实现某种RSA
      ,问题更多的是“加密是否良好?”和“是否安全?”以及“开销是否可以接受?”@Dominique否,仅使用SSL/TLS无法解决此问题,因为它只能保护客户端到服务器到客户端的通信。但需要SSL/TLS来确保攻击者无法动态更改JavaScript以破坏加密。SSL涵盖客户机-服务器通信,如前所述,re:WebRCT有一句话,“所有WebRTC组件都必须加密。使用RTCDataChannel,所有数据都由数据报传输层安全性(DTLS)保护。”.DTLS是SSL的衍生产品,这意味着您的数据将与使用任何基于SSL的标准连接一样安全。“因此,您是说,如果我不知道具体操作方法,请不要自己操作?我知道客户端身份验证是一个难点,因为我们都不能信任客户端。不过,你是推荐一些我可以读的东西,还是觉得我想得太多了P当然谢谢你的2美分。你首先需要确定你在每个地点都可以信任什么。对于大多数情况下,你不想要机密性,你也需要完整性和认证,因为通常中间人攻击是可能的。对于传输协议,TLS/DTL将是最符合逻辑的选择,但在大多数实现中需要可信证书(还有基于密码的证书等)。javascript不一定意味着在浏览器中进行加密。他在技术堆栈中列出了node.js。