私は、サードパーティの API (具体的には github) とやり取りしようとしているオープンソースの JavaScript アプリケーションに取り組んでいます。アプリケーション全体をクライアント側のみに保持しようとしているため、フォールバックしたり隠しファイルを保存したりするサーバーは実際にはありません。OAuth プロセスの一環として、API キー用に提供された秘密鍵を提供する必要があります。このキーを公開または共有することは想定されていません。
私は次の解決策を思いつきました:
- トリプル DES とパスフレーズを使用して秘密鍵を暗号化します。
- 暗号化されたバージョンをリポジトリのどこかに置いてください。
- Oauth 経由で認証する必要がある場合は、パスフレーズの入力を求め、秘密鍵を回復します。
- 既知の秘密はローカル ストレージに保存して、今後のプロンプトを回避します。
基本的に、秘密鍵の変換されたバージョンを保存しています。これが私を買うのは、完全なキーではなくユーザーからパスフレーズを取得する必要があることだけだと思います。ランダムなバイトよりも覚えやすいはずです。
これは十分に安全ですか?そんなに重要なアプリではありませんが、共有してはいけないと言われたものを守るために最善を尽くしたいと思います。キーを可逆的に暗号化する 3DES よりも優れた方法はありますか?