Security web应用安全中的签名过程

Security web应用安全中的签名过程,security,rest,Security,Rest,我试图了解安全的基本知识。为此,我开始开发一个项目,在该项目中我保护了一个RESTAPI 在这个项目中,我努力确保完整性和保密性;为此,我希望客户端对消息进行加密,然后签名 就我所阅读的内容而言,您在签名过程中使用私钥来确保不可否认性 我开发了一个加密和签名的Java客户机,它似乎工作正常。然而,现在我正在尝试开发一个Javascript客户端,这里我有一些问题,因为我不知道如何进行签名过程 我如何设法拥有一个密钥来签署邮件? 是否有一种正式/标准的方法来实现登录web客户端?如果您想从Java

我试图了解安全的基本知识。为此,我开始开发一个项目,在该项目中我保护了一个RESTAPI

在这个项目中,我努力确保完整性和保密性;为此,我希望客户端对消息进行加密,然后签名

就我所阅读的内容而言,您在签名过程中使用私钥来确保不可否认性

我开发了一个加密和签名的Java客户机,它似乎工作正常。然而,现在我正在尝试开发一个Javascript客户端,这里我有一些问题,因为我不知道如何进行签名过程

我如何设法拥有一个密钥来签署邮件?
是否有一种正式/标准的方法来实现登录web客户端?

如果您想从JavaScript进行加密,请查看此库:

计算SHA256哈希非常简单,如下所示:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script>
<script>
    var hash = CryptoJS.SHA256("Message");
</script>
要使用JavaScript中的数字签名,请查看以下内容:

您应该考虑使用SSL或其他传输层安全性,而不是在JS中实现/使用加密堆栈,并在应用程序级别上工作。这样做是有可能的,我是为了一个特殊需求的项目而做的,但在这条路上有疯狂和疯狂。我读了一篇关于端到端安全性的文章。据我所知,例如,在收到消息后,可能会出现一些消息不安全的情况。有什么方法可以避免这种情况吗?除非你有特定的安全需求特定的威胁模型,否则你不必像作者所说的那样担心端到端的安全问题-听起来你只是在JS浏览器中处理请求,这意味着这是唯一一个接触纯文本的应用程序。您必须信任浏览器,因为它是直接用户代理。与作者给出的企业体系结构消息队列示例相比……这是真的,但我尝试这样做只是为了学习如何在浏览器中管理加密,尽管我不需要它,但我想尝试一下,只是为了学习。据我所知,如果我想实现不可否认性,那么应该对消息进行散列,然后使用私钥进行加密。这就是我的问题所在,我仍然不知道如何在web客户端中使用私钥进行加密,我很确定我遗漏了什么。是的,为了不可否认性,你需要数字证书。我在我的答案中添加了另一个链接,显示了如何进行签名。我一直在阅读,我想我会尝试使用您建议的旧浏览器版本的签名。IE、FF和chrome的最新版本似乎已经实现了,所以我将检查它是如何工作的,并尝试使用它。