5

私は、サードパーティの API (具体的には github) とやり取りしようとしているオープンソースの JavaScript アプリケーションに取り組んでいます。アプリケーション全体をクライアント側のみに保持しようとしているため、フォールバックしたり隠しファイルを保存したりするサーバーは実際にはありません。OAuth プロセスの一環として、API キー用に提供された秘密鍵を提供する必要があります。このキーを公開または共有することは想定されていません。

私は次の解決策を思いつきました:

  1. トリプル DES とパスフレーズを使用して秘密鍵を暗号化します。
  2. 暗号化されたバージョンをリポジトリのどこかに置いてください。
  3. Oauth 経由で認証する必要がある場合は、パスフレーズの入力を求め、秘密鍵を回復します。
  4. 既知の秘密はローカル ストレージに保存して、今後のプロンプトを回避します。

基本的に、秘密鍵の変換されたバージョンを保存しています。これが私を買うのは、完全なキーではなくユーザーからパスフレーズを取得する必要があることだけだと思います。ランダムなバイトよりも覚えやすいはずです。

これは十分に安全ですか?そんなに重要なアプリではありませんが、共有してはいけないと言われたものを守るために最善を尽くしたいと思います。キーを可逆的に暗号化する 3DES よりも優れた方法はありますか?

4

2 に答える 2

5

このソリューションの問題は、アプリケーションに復号化するためのコード(および場合によってはキー)が含まれている必要があることです。最善の解決策は、リポジトリにまったく入れないことです。

ほとんどのアプリケーションは、このタイプのデータを構成ファイルに保存しますが、バージョン管理ソフトウェアでは無視されます。次に、偽のキーを含む設定ファイルの例と、ファイルの名前を変更して独自のAPIキーを取得する方法の説明を含めます。

この良い例は、「Authentication UniqueKeysandSalts」のwordpressの構成ファイルにあります。セクション。

于 2012-05-15T15:13:06.783 に答える
2

それは何かを秘密にしておくのに十分すぎるように聞こえます。TripleDESは少し古いですが。

XラウンドのSHA-256を使用してパスフレーズをハッシュし、そのハッシュをAES-256キーとして使用します。

于 2012-05-15T14:57:18.993 に答える