3

安全な暗号化を提供するJavaScriptライブラリを探しています。クライアントはキーを生成する必要があり、サーバーにアップロードされたすべてのデータは暗号化され、ダウンロードされたすべてのデータは復号化されます。認証された暗号化スキームが必要です。CTRまたはCBCだけでは不十分です。

sjclについて聞いたのですが、sjclはデータ全体を一度にしか暗号化できないようです。データをブロック単位で暗号化する方法が見つかりませんでした。アップロードされたファイルは非常に大きくなる可能性があるため、このアプローチは実行可能ではありません。update()とfinal()の2つのメソッドを持つJava暗号インターフェースのようなものが必要です。

必要なことを実行しているように見えるnodeJS暗号化ライブラリを見つけましたが、ブラウザ側での使用方法がわかりません。

google crypto-jsを見つけましたが、このライブラリは認証された暗号化を提供していないようですが、標準モードのみを提供しています。

sjclを使用してデータをブロック単位で暗号化する方法はありますか?ブラウザ側でnodeJS暗号ライブラリを使用するには?crypto-jsで認証付き暗号化を使用するには?または、必要なものを提供する別の安全なjavascriptライブラリはありますか?

4

3 に答える 3

3

簡単な答え
これは不可能ではないのではないかと思います。

長い答え
Javascriptライブラリの整合性を保証することはできないため、期待どおりの動作をすることを信頼することはできません。その結果、セキュリティを保証することはできません。

この問題は広範囲にわたって議論されており、常に同じ結論で終わります。双方向認証と安全なチャネルがなければ、クライアントにはライブラリの正当性を検証する方法がありません。中間者が暗号ルーチンを変更した場合、クライアントは、あなたがこれまでに見つけたであろうことは言うまでもなく、知らないでしょう。

したがって、セキュリティを保証するには、SSLとクライアント証明書が必要になります。
(もちろん、保証されていないセキュリティは存在しません)

于 2012-06-29T10:32:46.990 に答える
2

SJCLによって展開されたCCMのAppartはストリーム暗号モードです。便利なラッパーだけでなく、注意深く見ていきます。それはオープンソースなので、とにかくどこかに生の暗号の実装があるはずです。

これは、最終的に信頼されるべきコードではないことに注意してください。Javaラッパーをプログラムしようとすると、認証に失敗したというエラーがすぐに見つかりました。コンビニエンスライブラリが関連する認証データをまったく認証しなかったようです。他のライブラリではテストされていないため、バグが残っていないことに注意することをお勧めします。

于 2012-06-30T00:01:30.383 に答える
0

クライアントから信頼できないサーバーにプッシュする必要がある理由はありますか?

Webサイトを配信しているサーバーが信頼できる場合は、データを信頼できるサーバーにポストバックし、信頼できるサーバーに暗号化させることができます。そうすれば、信頼できるサーバーはデータを信頼できないサーバーに送信して保存できます。

于 2012-06-29T17:46:17.787 に答える