問題タブ [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.
cryptography - ipsec で初期化ベクトルを認証する必要がありますか?
RFC4106 に従って、ガロア/カウンター モードで aes を使用して、トランスポート モードで ESP の形式で IPSEC を実装しようとしています。
変換されたパケットの暗号文の直前に初期化ベクトルを配置することになっています。
認証された(ただし暗号化されていない)データの一部であるべきですか?(暗号化しないと仮定しています...)
RFC でこれが指定されている場所がわかりません。それは明白であるべきですか?
encryption - GCM 乗算の実装
ブロックの乗算 (アルゴリズム 1) の C コードを GCM SP-800-38D のドキュメントに掲載しています。11-12ページ。
コードを完成させたので、コードをテストできる方法があるかどうかを確認したいと思います。私が提示したコードの下に添付されています。128 ビット ブロックの代わりに、テスト目的のためだけに 24 ビット ブロックを使用したことに注意してください。必要に応じて提案をいただければ幸いです。
c# - C#でのAESGCMの実装
私はC#のGCMモードでAES暗号を実装しています。私の質問は「追加の認証済みデータ」(AAD)に関するものです。次のコードでは
http://blogs.msdn.com/b/shawnfa/archive/2009/03/17/authenticated-symmetric-encryption-in-net.aspx
AADをどこから取得する必要があるのか、および復号化中にこの暗号化に固有のAADを取得する方法は不明です。
このAADの使用方法についての説明をいただければ幸いです。ありがとう
aes - GCM、CCM、またはCBC-MACモードのAES暗号?
私は素人の言葉でこれらのモードを説明している記事を探していましたが、まだ何も役に立ちませんでした。では、各モードの長所と短所は何ですか?ありがとう
GCM
CCM
CBC-MAC
c - EVPインターフェイスを使用したAES-GCMのOpenSSLCの例
AES-GCMの暗号化/復号化について、これを試しましたが、問題があります。
このコードは正常に機能しています(いくつかの変更があります)。メッセージの暗号化と復号化です。問題は、暗号化テキストが復号化の前に変更された場合でも、テキストを復号化することです(ただし、間違っています)。認証付き暗号化についての私の理解によれば、そのような場合、変更された暗号テキストを復号化するべきではありません。
私はどこが間違っていますか?OpenSSLのEVPインターフェイスを使用したAES-GCMの適切な例を入手できますか?
java - BouncyCastle GCM/CCM ArrayIndexOutOfBoundsException
BouncyCastle で AES を使用して GCM や CCM モードを使用する例を教えてください。
私のコードはこれです:
ただし、GCM モードで復号化すると、この例外がスローされます (70 行目はbOut.write(block, 0, i);
):
そして、CCM モードで暗号化するときのこの例外 (70 行目はbOut.write(block, 0, i);
):
java - JAVA で AES/GCM を使用して不正なキーを検出する
BouncyCastle を使用して、モードAES
でいくつかのファイルを暗号化/復号化するために使用しています。
復号化のキーが間違っていることを証明していますが、例外はありません。
キーが間違っていることを確認するにはどうすればよいですか?
私のコードはこれです: GCM
ありがとう
cryptography - OpenSSL GCM 復号化での遅延認証
OpenSSL の EVP インターフェイスを使用して、GCM モードを使用して AES 暗号化を実装しています。
現在、認証モードの 1 つである GCM は、暗号文の整合性を提供します。つまり、暗号文 (および提供されている場合は追加データ) にタグ (MAC - メッセージ認証コード) を生成します。このタグは、暗号化テキストが変更されていないことを確認するために、後で復号化する前にチェックできます。
このブログ投稿に従って暗号化を実装しました: http://incog-izick.blogspot.in/2011/08/using-openssl-aes-gcm.html
復号化中に、次の API 呼び出しを (この順序で) 使用しています。
問題は、暗号テキストまたは AAD を変更すると、暗号テキストがまだ復号化され、復号化プロセスの最終呼び出し、つまり EVP_DecryptFinal の呼び出しでエラーが検出されることです。エラーを示すゼロ値が返されます。
私の意見では、エラーは EVP_DecryptUpdate 呼び出し自体でスローされ、復号化は失敗するはずです。遅いエラー検出は、認証された暗号化の目的を無効にします。
ここで何が問題なのですか?
android - Android、AES-GCM、またはプレーンAESでのデータ暗号化?
byte[]
私のチームは、Javaで記述されたAndroidアプリケーションのコンテキストでバイナリデータ(として保存される)を暗号化するソリューションを開発する必要があります。暗号化されたデータはさまざまな方法で送信および保存されますが、その間、データの破損を排除することはできません。最終的には、別のAndroidアプリケーション(これもJavaで記述されています)がデータを復号化する必要があります。
暗号化アルゴリズムは、256ビットのキーを持つAESでなければならないことがすでに決定されています。ただし、どのAES実装および/または「モード」を使用するかについて、十分な情報に基づいて決定したいと思います。私はGCMモードと呼ばれるものについて読み、それを使っていくつかのテストを行いました(BouncyCastle / SpongyCastleを使用)が、AES-GCMが正確に何のためにあり、プレーンと比較して何を「購入」するのかは完全にはわかりません。 AES-考慮すべきトレードオフがあるかどうか。
これが私たちが持っている懸念/要件/質問のリストです:
パディング:暗号化する必要のあるデータは常に128ビットの倍数になるとは限らないため、AES実装/モードではパディングを追加する必要がありますが、必要な場合に限ります。によって提供されるような単純なAES実装で
javax.crypto.Cipher
はそれができないという印象を受けましたが、初期のテストではそうなることが示されました。したがって、パディング要件自体は、「プレーンな」AESではなくGCMのようなものに頼る理由にはならないのではないかと思います。あれは正しいですか?認証:データ破損が発生したかどうかを確実に検出する方法が必要です。ただし、理想的には、誤ったキーを使用して復号化が試行された場合も検出する必要があります。したがって、これらの両方のケースを区別できるようにする必要があります。私が最初にGCMを検討することになった理由は、このStackoverflowの質問によるものでした。回答者の一人は、詳細な説明(コードは言うまでもなく)を提供していませんが、AES-GCMを使用してこの区別を行うことが可能であると示唆しているようです。 。
オーバーヘッドの最小化:暗号化されたデータの保存と送信のオーバーヘッドを制限する必要があります。したがって、特定のAES実装/モードの選択がオーバーヘッドの量に影響を与えるかどうか、およびどの程度影響するかを知りたいと思います。
暗号化/復号化のパフォーマンス:主要な懸念事項ではありませんが、特定のAES実装/モードの選択が、CPU時間とメモリフットプリントの両方の観点から、暗号化と復号化のパフォーマンスにどの程度影響するか疑問に思っています。
アドバイス、説明、コード例を事前に感謝します。
編集: delnanは、「プレーンAES」のようなものは存在しないことを有益に指摘しました。つまり、明確にするために、Javaの組み込みAESサポートを使用することを意味しました。
そのようです:Cipher localCipher = Cipher.getInstance("AES");
openssl - openssl を使用した AES-GCM ファイルの復号化
現在、openssl を使用して特定のテキストを復号化しようとしています。そこにある例を使用して独自のコードを作成しようとしました: OpenSSL GCM復号化での認証が遅れ ましたが、最終的にはまだ悪い結果が得られます。私の復号化関数は次のとおりです。
AAD を除くすべてのデータは、以前にテキストファイルを読み取ることによって提供されます (暗号化されたデータ、使用されたキー/Ivs、MAC、および復号化後に予想される結果のリストがあります) いくつかの実験の後、次の問題が発生します: - 結果は次のとおりです。予想とは異なります - MAC を変更しても結果には影響しません (平文) - AAD を抑制しても結果には影響しません。
なぜうまくいかないのか、本当にわかりません。何かアイデアやコツ、具体例があれば大変助かります
よろしくお願いします