如何安全存储& JWT的进程密钥

时间:2016-06-22 15:23:07

标签: node.js security encryption jwt

阅读本文后:JWT: What's a good secret key, and how to store it in an Node.js/Express app?,关于如何存储"密钥"分配JWT令牌。我有安全问题。我的数据(消息,用户名等)将被加密(在数据库中),只有授权用户才能解密(基于他们的私钥)。由于JWT令牌是使用1"密钥"生成的。存储在服务器上的,以防攻击者获得"密钥"并且掌握了数据库 - 令牌可以伪造,因此可以绕过"密码"解密数据,这使得加密毫无意义。为了保护"密钥",我可以使用这些方法

  

方法1

存储"密钥"在单独的服务器(如HSM)上,将在登录期间接收,然后用于设置令牌

  

方法2

为每个用户加密某种盐并将其用作"密钥"

我想听听你的想法和想法。 facebook或twitter如何做到这一点?我是否真的需要HSM来存储用于加密的私钥或者有某种替代方法(例如:安全文件系统)?

1 个答案:

答案 0 :(得分:5)

取决于您的风险偏好。您使用JWT的事实表明您的系统不是一个高安全性系统(JWT不能很容易地在服务器端被撤销,因此不适合高度安全的应用程序)。

HSM是一个不错的选择,尽管除非您使用RSA算法,否则您需要将其缓存在内存中以验证每个后续页面请求。

文件系统可能足够安全"鉴于外部攻击者无法随意访问存储在您服务器上的文件。

拥有每个用户密钥有点违背了拥有客户端会话状态机制的目标,因为您必须在数据库中的每个请求上查找此密钥。

另见Are JWTs a secure option for user authentication?

还有this question