問題タブ [block-cipher]
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.
security - IVを暗号化して送信するかどうか?
CBCモードを使用しています。「プレーン」なIVを送信する代わりに、ECBモードで暗号化されたIVを送信することを考えています(ブロックのみであるため)。セキュリティは確保できますか?
java - Java 暗号 AES 関数
演習として、独自の CBC および CTR モードを実装しています。(例: CBC の最初のブロックの場合E(k, IV xor message[0]
)。
たとえば、それを自分のE
関数として使用できると考えて、次のように考えてみました (BouncyCastle を使用)。
ただし、「NONE」はオプションではありません。
私の質問は、私の目的のために Java AES 関数を使用する方法です。どうすればいいE(k, ...)
ですか?
java - この AES 暗号化は安全ですか?
http://www.ravenblast.com/index.php/blog/android-password-text-encryption/からこのコードを取得しました。機能しますが、十分に安全ではないという疑いが高まっています。他の情報源によると必要と思われる初期化ベクトルはありません。
algorithm - ブロック暗号アルゴリズム
誰かが例を挙げて私に良いブロック暗号アルゴリズムを提供できますか?これは、文字列のデータマスキングに必要です。アルゴリズムは高速で、簡単に元に戻せないようにする必要があります。これは、何百万ものレコードに適用されるためです。
どちらの場合も、高速で簡単に元に戻せない固定長データマスキングアルゴリズム用の他のアルゴリズムを提案することもできます。
mysql - ブロック暗号、salt、AES、MySQL、および認証情報ストレージに関するベスト プラクティス
別のシステムに接続するためのシステムを構築しているため、パスワードを保存しなければならない状況があります。この別のシステムでは、単一のユーザー アカウントしか許可されておらず、それに接続する唯一の方法はパスワードを使用することです。ここではハッシュは適切ではありません。パスワードを取得できる方法で保存する必要があります。
現在、これが完璧なシステムではないことを知っているので、誰かが何らかの方法でデータベースにアクセスした場合の被害を最小限に抑えようとしています. このデータベースはさまざまなプラットフォームで使用する必要があるため、MySQL 独自の組み込み暗号化機能を使用することにしました。このように、さまざまな言語やシステムで互換性のある暗号化/復号化アルゴリズムの実装を見つけることを心配する必要はありません。クエリで MySQL の関数を使用するだけです。
パスワードを保存するときは、 を使用しますAES_ENCRYPT("password", "encryption key")
。それから、彼らが 1 つのパスワードを取得できたとしても、他のパスワードを取得するのが難しくなるように、多少のソルトを使用する必要があることに気付きました。ちょっと待って!ポイントは?1 つのパスワードを取得できる場合、暗号化キーを持っている必要があります。
しかも、これはブロック暗号です。塩は状況によってはほとんど役に立たないことがあります。
私の質問
私のような状況で対称暗号化を使用する場合、塩を使用する理由はないと考えるのは正しいですか?
元の値を取得できるようにパスワードを保存する必要がある場合、他に検討すべき方法はありますか? (暗号化キーをどこにどのように保存するかについて注意する必要があること、および MySQL ログも保護する必要があることを認識しています。)
aes - ブロック暗号モードの検出方法
メッセージがCBCまたはECBモードによって暗号化されたかどうかを検出する方法は?
AES 128 CBCまたはECBでランダムに暗号化する関数を作成しました。平文と暗号文の間でハミングを行いますが、シームは暗号モードに関連付けられていません。
ブロック暗号モードを検出するにはどうすればよいですか?
前もって感謝します
c - Openssl の ECB、CFB、OFB 暗号モード
Openssl で CBC モードを使用すると、ブロック サイズの倍数を入力として指定できることがわかりました。しかし、他のモードはどうですか?ECB、CFB、OFB? ドキュメントを見ましたが、すべてが明確ではありません。それらをループで呼び出す必要がありますか?
としましょう、ECB。一度に 64 ビットを暗号化します。では、疑似コードは次のようになります (次のようになるはずです)。
しかし、上記のコードでは、うまく暗号化できません。c += 8;
私がc += 16;
OKに変わると。これを行う良い方法は何ですか?つまり、8x8 = 64 ビットであることは誰もが知っているので、これは正しいはずですが、そうではありません。暗号化/復号化は、c += 16;
.
他の暗号モードはどうですか?
ECBモードのサンプル(質問は他のモードについてもあることに注意してください;)):
c - このコードはブロック暗号と見なされますか
わかりました、皆さんが私を叱責する前に: 私はこれが恐ろしいコードであり、非常に弱い暗号であることを認識しています。以下がブロック暗号であると見なされるかどうかを調べようとしています(非常に初歩的で弱いものでも)
出力は次のとおりです。
c - エンコードおよびデコード時にファイルを適切に処理するにはどうすればよいですか?
ファイルを正確に暗号化およびデコードする方法は問題ではありません。ファイルをchar massとして操作します。サイズが 8 バイトに分割されていないファイルを取得するまで、すべてがほぼ問題ありません。アルゴリズムの特定の品質(ブロックのサイズは64ビットでなければなりません)のために、8バイトごとにファイルを暗号化およびデコードできるためです。
そのため、たとえば、.jpg
ファイルの末尾にスペースを追加するだけで、結果ファイルを開くことができませんでした( ofc.txt ファイルでは何も悪いことはありません)。
ここに抜け道はありますか?
アルゴリズムに関する情報が必要な場合http://en.wikipedia.org/wiki/GOST_(block_cipher)。
UPD:初期ファイルは削除または移動できるため、追加されたバイト数を保存できません。そして、私たちがやろうとしていることは、鍵だけを知っており、ファイルを暗号化しています。