在静态的Angular网站上存储私钥

5
我有一个静态的AngularJS文件,它部署在Amazon S3上。 我正在访问一个具有哈希身份验证机制的API。
为了创建URL的哈希并将其发送到标头,我必须使用私钥。这很有效,但问题是我必须找到一种方法来使私钥不被黑客攻击。
我想知道是否有人知道如何保持密钥的安全性。
我考虑过在node.js服务器上运行我的站点。唯一的要求是我应该能够在Amazon Web Services上部署它。
这有意义吗?

1
那么,您有一个私钥,希望可以直接从客户端浏览器中使用? - Davin Tryon
在每个请求中,我都会在进行CORS请求之前加密URL,并将其发送到一个头部。要求是我需要在请求中发送一个加密的头部。目前我没有办法隐藏我用来生成加密头部的私钥。如果您知道更好的方法,请告诉我。 - Tony
2
向您的服务器请求标头。将私钥保留在服务器上。据我所知,在浏览器中没有安全存储私钥的方法。 - Davin Tryon
我现在没有服务器。我想我会有一个node.js服务器。这是正确的方式吗?即使我向服务器请求密钥,它也会在内存中可用,我该如何解决这个问题? - Tony
3
不,我没有说要向服务器请求密钥。我是说要向服务器请求头部(已由密钥加密)。再次强调,据我所知,这是保护密钥的唯一方法。 - Davin Tryon
如果您的node.js服务器正在EC2实例上运行,则可以使用IAM角色。它将自动查找凭据以根据需要进行服务调用,而无需您提供它们。凭据会经常轮换,以防止它们在服务器外部被使用。 - Charles Engelke
1个回答

1

客户端没有安全的方式来存储秘密信息。私钥应该始终保留在服务器上。

API的常见身份验证机制是在客户端对身份验证进行哈希(而不是加密)。

但如果您需要加密某些内容,则应在客户端使用具有公共密钥的非对称加密算法。

http://searchsecurity.techtarget.com/definition/asymmetric-cryptography


我想在客户端进行哈希。但是为了进行哈希,我需要一个私钥。我正在使用HMAC-SHA1。有什么帮助吗? - Tony
1
@Tony,你可以使用公钥或私钥进行加密。请查看Crypto-JS库 - Leonardo Zanivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接