隐藏公共存储库中的密钥

时间:2012-05-15 14:17:54

标签: javascript security api encryption

我正在开发一个开源的javascript应用程序我试图与第三方API(特别是github)进行交互。我试图只保留我的整个应用程序客户端,所以我真的不会有服务器回退或存储隐藏的文件。作为OAuth流程的一部分,我需要提供为我的api密钥提供的密钥。我不应该发布或分享这个密钥。

我提出了以下解决方案:

  1. 使用三重DES和密码加密密钥。
  2. 将加密版本放在我的存储库中。
  3. 当我需要通过Oauth进行身份验证时,请提示输入密码并恢复密钥。
  4. 一旦知道,将秘密存储在本地存储中以避免将来出现提示。
  5. 我基本上存储了一个秘密密钥的转换版本。我猜这一切都是因为我必须从用户那里获取密码而不是完整密钥。它应该比随机字节更容易记住。

    这足够安全吗?它不是一个超级关键的应用程序,但我想尽我所能来保护我被告知不要分享的东西。是否有比3DES更好的方式以可逆的方式加密密钥?

2 个答案:

答案 0 :(得分:5)

此解决方案的问题是应用程序必须包含解密它的代码(可能还有密钥)。最好的解决方案是不要放入存储库。

大多数应用程序将此类数据存储在版本控制软件忽略的配置文件中。然后包含一个带有假密钥的示例配置文件,以及如何重命名文件并获取自己的api密钥的说明。

这方面的一个很好的例子是“身份验证唯一键和盐”中的wordpress's config file。部分。

答案 1 :(得分:2)

这听起来足以保守秘密;虽然Triple DES有点过时了。

我会使用X轮的SHA-256来对密码进行散列,然后将该散列用作AES-256密钥。