問題タブ [aes-gcm]

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 に答える
352 参照

c - Linux カーネルで AES-NI 命令を使用しない rfc3686(ctr(aes)) による復号化

AES-NI が AES 暗号化操作にもたらす違いを理解しようとしています。Intelが述べているように、AES-CBCで試した後、何も作成されないようです。ただし、AES-CTR および AES-GCM モードでは、Intel は大幅なパフォーマンスの向上を約束しています。rfc3686(ctr(aes)) 暗号アルゴリズムを使用して ESP パケットを復号化しようとしていますが、成功しません。暗号 API のコード スニペットは次のとおりです。

// ここに、decrypt_callback があります

現在、パケット処理中に、crypto_ablkcipher_decryptが 0 を返していることがわかりますが、decrypt_callbackは呼び出されません。

また、AES-NI rfc3686(ctr(aes))復号化ルーティングにいくつかのプリントを入れました。これは、AES-CBC 復号化に入れ、AES-CBC アルゴリズムを使用すると表示されます。

何が間違っているのかアドバイスしてください。

ありがとう

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

java - Java で BouncyCastle を使用して AES/GCM でエンコードされたデータをチャンクで読み取る

AES/GCM/NoPadding でエンコードされたデータを読み取る方法を見つけようとしています。私が扱っているデータは任意に大きくなり、チャンクで読み取ることを望んでいますが、それがどのように達成されるかを理解するのに苦労しています. 私が今いる場所の例を次に示します。

最初の assert を問題なく通過したので、データを一度にデコードできることに注意してください。また、次の 2 セットのアサート (最初の 32 バイトを 16 バイトのチャンクにデコード) は「正しく」動作しますが、試行錯誤の末にこの式にたどり着きました。それらについて、私が理解できないことがいくつかあります。

  • 16 バイトのチャンクで読み取っていますが、数値はすべて 32 の倍数である必要があるようです。次のコードに変更すると、cipher.update() の最初の呼び出しが失敗し、戻り値 0 が返されます。

    /li>
  • 入力側を 32 に戻し、16 バイトの出力バッファーを使用すると、最初の呼び出しは成功し、期待されるデータが返されますが、cipher.update() の 2 回目の呼び出しで ArrayIndexOutOfBoundsException がスローされます。

    /li>
  • したがって、コードを元の例 (decryptedChunk のサイズは 32 バイト) に戻すと、3 回目の cipher.update() の呼び出しで 16 の値が返され (どういう意味ですか?)、decryptedChunk にはガベージ データが含まれます。

  • また、最後の cipher.update() の呼び出しを cipher.doFinal() の呼び出しに置き換えてみました。

    /li>

しかし、これは BadPaddingException で失敗します (GCM での mac チェックに失敗しました)。

助言がありますか?


ソリューションで更新

Ebbe M. Pedersen から提案されたコードでいくつか遊んだ後、次の解決策をまとめることができました。

これは、選択した任意の値に対して適切に機能しますchunkSize。その回答を承認済みとしてマークしました。助けてくれてありがとう。

0 投票する
3 に答える
4014 参照

php - PHP で GCM モード暗号化を使用するにはどうすればよいですか?

私はGCMとその素晴らしさについてよく読んでおり、 PHPを使用してAES-GCM認証暗号化を使用する方法を知りたいと思っています。でサポートされていますか? Codeigniter フレームワークのドキュメントでGCMへの参照をいくつか見つけたので、 Codeigniterで使用できると思いました。mcrypt()

また、 Zendに関するドキュメントで何かに出くわしました。フレームワークを使用しておらず、現在のプロジェクトで使用するつもりもないため、 Codeigniterドライバーを使用するつもりはありません。しかし、Codeigniterでそれができるのであれば、フレームワークなしでもできるはずです。

GCMは、パフォーマンスだけでなくセキュリティの面でも優れているようです (非常に印象的なパフォーマンスの数値を見ました)。これが必要だと感じていますが、例が見つかりません。誰かがこれを達成する方法を知っている必要があります。OpenSSLでサポートされていることは知っています。

どんな助けでも大歓迎です。

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

ruby - Ruby - サポートされていない暗号アルゴリズム (AES-256-GCM)

エラーが発生します:

サポートされていない暗号アルゴリズム (AES-256-GCM) (RuntimeError)

しかし、私はすべての要件を持っているようです:

ルビーのバージョン:

$ ruby​​ --バージョン

ルビー 2.1.2p95

OpenSSL は gcm をリストします:

$ openssl enc -help 2>&1 | grep gcm

-aes-128-ecb -aes-128-gcm -aes-128-ofb
-aes-192-ecb -aes-192-gcm -aes-192-ofb
-aes-256-ecb -aes-256-gcm -aes -256-ofb

Ruby インタープリター:

$ irb

2.1.2 :001 > 'openssl' が必要です。puts OpenSSL::VERSION

1.1.0

=>なし

2.1.2 :002 > OpenSSL::Cipher.ciphers.include? 「aes-128-gcm」

=>真

それでも、このコードを実行するとエラーが発生します:

RubyでGCMを動作させるにはどうすればよいですか?

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

c - Openssl AES GCM-256 Htables

学期のプロジェクトで s-box の研究論文を再実装したいのですが、今は時間がありません。私の役割は、さまざまな sbox でさまざまなモードの aes (cbc、ecb、ctr、gcm など) をテストすることです。目的のためにopensslライブラリ1.0.1iを使用しています。明らかに、ルックアップ テーブルを生成する必要があるため、この投稿は役に立ちました。

AES (AES-256) ルックアップ テーブルの生成

次に、これらのテーブルを埋め込む必要があります。openssl ライブラリを調べたところ、すべてのルックアップ テーブルと crypto_cbc128_encrypt() で使用される便利な関数を含む aes_core.c と、aes/ 内の他のモード ソース ファイルが見つかりました... aes_cbc、aes_ctr などの GCM_aes_256 ソース ファイルを見つけることができません。別の方法で実装されていますか?? aes はすべてのモードで使用されるため、最終的には aes_core ファイルから同じルックアップ テーブルを使用する必要があります。そうではありませんか?opensslでは実装が異なりますか??

Openssl ファイルの追加として、gcm_128 で Htables を見てきました。これらのテーブルは何をしますか? それらは aescore と同じルックアップ テーブルを指していますか?

0 投票する
3 に答える
14219 参照

cryptography - Java 8u20 での AES GCM 暗号化と復号化が遅い

AES/GCM/NoPadding を使用してデータを暗号化および復号化しようとしています。JCE Unlimited Strength Policy Files をインストールし、以下の (単純な) ベンチマークを実行しました。OpenSSL を使用して同じことを行い、PC で1 GB/秒を超える暗号化と復号化を実現できました。

以下のベンチマークでは、同じ PC で Java 8 を使用して3 MB/秒の暗号化と復号化しか取得できません。私が間違っていることは何ですか?

編集: この単純なベンチマークを改善するための楽しい演習として残します。

ServerVM を使用してさらにテストし、nanoTime 呼び出しを削除し、ウォームアップを導入しましたが、予想どおり、ベンチマークの結果が改善されることはありませんでした。1 秒あたり 3メガバイトで横ばいです。