隐藏在公共库密钥(Hide secret key in public repository)

2019-09-17 06:20发布

我工作的一个开源的JavaScript应用我试图与第三方API(github上专门)接口。 我试图让我的整个应用程序唯一的客户端,所以我真的不会有服务器回落到或隐藏文件存储上。 因为OAuth过程的一部分,我需要提供提供我的API密钥的密钥。 我不应该发布或共享此密钥。

我想出了以下解决方案:

  1. 使用加密三重DES和密码的密钥。
  2. 把加密的版本在我的仓库的某个地方。
  3. 当我需要通过OAuth认证,提示输入密码和恢复密钥。
  4. 一旦知道,存储秘密本地存储,以避免将来提示。

我基本上是个存储密钥的转换后的版本。 我想这一切给我买的,我必须从用户而不是全键获取密码。 它应该比随机字节轻松一点要记住。

这是足够安全? 它不是一个超临界的应用程序,但我要尽我所能保护的东西,我告诉不分享。 难道还有比3DES更好的方法来加密可逆道路上的关键?

Answer 1:

这种解决方案的问题是,应用程序必须包含代码(以及可能的密钥)来解密它。 最好的办法是不要放在仓库都没有。

大多数应用程序存储此类型多数民众赞成通过版本控制软件忽略了在配置文件中的数据。 然后,包括用假钥匙和说明如何重命名文件,并获得自己的API密钥的示例配置文件。

这方面的一个很好的例子是WordPress的的配置文件中的“身份验证唯一键和盐。” 部分。



Answer 2:

这听起来较充足,以保持秘密的东西多; 虽然三重DES是有点过时了。

我会用X轮SHA-256散列的口令,然后使用该哈希值作为AES-256密钥。



文章来源: Hide secret key in public repository