問題タブ [webcrypto-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
193 参照

javascript - WebCrypto AES で IV を送信する

AES-CBC を使用して、安全でないトランスポート境界を越えてメッセージを転送しようとしています。crypto.getRandomValues を使用して (送信側で) IV を生成しました。次に、crypto.subtle.encrypt を使用してメッセージを暗号化しています。メッセージの一部として、IV を追加して受信者に送信する予定です。IV を (AES-CBC を使用しながら) 暗号化せずに転送することは、セキュリティの観点から安全ですか?

0 投票する
2 に答える
11546 参照

javascript - 暗号化のために公開鍵を PEM 形式でロードする方法は?

これまでは、PEM 形式の文字列から公開鍵をロードできる JSEncrypt を使用していました。次に、文字列を暗号化するために RSA で使用します。例えば ​​:

その後:

WebCrypto でも同じことをしたいのですが、やり方がわかりません。次の手順を試しました。

  1. PEM ヘッダーを削除する
  2. PEM フッターを削除する
  3. CR/LFを削除
  4. トリムストリング
  5. Base64 文字列をデコードする
  6. 結果を ArrayBuffer に変換します

次に、キーをインポートしようとしました:

私は多くの方法を試しました (ASN/DER 形式を展開するなど)。しかし、さまざまなエラー (DOMException データなど) が発生します。PEM 形式がサポートされている形式として受け入れられるかどうか、またはキーを JSON Web Key 形式などに変換する必要があるかどうかはわかりません。

サードパーティの JS ライブラリを使わずに簡単な方法はありますか?

0 投票する
1 に答える
15125 参照

javascript - Javascript WebCrypto API を使用して PKCS#12 デジタル証明書をロードする方法

WebCrypto API を使用してデータに署名しようとしていますが、秘密/公開キーを作成して pkcs#1 または 8 にエクスポートする代わりに、ユーザーの PKCS#12 を使用してデータに署名したいと考えています。私は W3C 仕様を読みましたが、それをあまり理解できず、これを行う方法に関する適切な資料が見つかりません。今のところ、ActiveX と Java アプレットは脇に置きたいと思います。以下を微調整する方法はありますか?

ポインタはありますか?

更新 これが私が取り組んできたコードです

0 投票する
1 に答える
2613 参照

javascript - ブラウザ化されたノード暗号モジュールの代わりに WebCryptoAPI を介してブラウザで ECDH キーを生成する

公開鍵/秘密鍵を作成するための非常に小さなノード スクリプトがあります。ホール暗号モジュールをブラウザ化することなく、クライアント側でそれを行う方法はありますか?

私はこれまでにこれを試しました:

しかし、ログに記録すると、ノードのバージョンのようには見えません

0 投票する
1 に答える
244 参照

javascript - webcrypto API を使用して CMS 署名付きメッセージを検証できない

JavaScript webcrypto API を使用して、CMS 署名付きメッセージを検証したいと考えています。メッセージは、RFC 3161 によるタイムスタンプ応答の一部です。

Wireshark ディスプレイ

そこで、署名、コンテンツ (encapContentInfo から)、および公開鍵を取得し、鍵をインポートして署名を検証する次の関数に渡します。

出力は次のとおりです。

ご覧のとおり、検証は失敗しますが、このタイムスタンプ サーバーは多くの人が使用しているため、署名は有効であると確信しています。

私の実装に問題はありますか?

Firefox 拡張機能内でこれを実行しようとしています。

編集: signedAttrs フィールドの DER 値を使用し、それをハッシュしてから、証明書で検証する必要があるようです。

0 投票する
2 に答える
1252 参照

javascript - Javascript RSA-OAEP が任意の入力長で機能しない

SubtleCrypto を使用して、javascript (firefox) で文字列を暗号化しようとしています。問題は、暗号化が短い入力に対してのみ機能することです。文字列 (testdata) が 190 文字を超えると、OperationError で失敗します。SubtleCrypto がそのように動作するのはなぜですか?どうすれば解決できますか?

コード:

0 投票する
1 に答える
1243 参照

javascript - 秘密鍵を使用して Web Cryptography API でデータを暗号化する方法

チュートリアルに従って、公開鍵を使用してデータを暗号化し、秘密鍵を使用してブラウザーでデータを復号化しました。
しかし、秘密鍵を使用してデータを暗号化しようとすると、Uncaught (in promise) DOMException: key.usages does not permit this operation.
秘密鍵を使用して Web Cryptography API でデータを暗号化するには?
また、RSAキーペアを生成し、ブラウザでデータを暗号化および復号化できるjavascriptライブラリも探しています。いくつかの RSA JavaScript ライブラリを見つけましたが、それらはすべて open-ssl コマンドを使用して RSA キー ペアを生成する必要があります。