問題タブ [stream-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.
c# - TransformBlock(byte[1]) が TransformBlock(byte[2]) と同じではないのはなぜですか?
salsa20のC# 実装では、サイズ 1 のブロックでメソッド TransformBlock を 2 回呼び出すと、サイズ 2 のブロックでメソッドを 1 回呼び出す場合とは異なります。このクラスを使用してオブジェクトを暗号化する場合、これは問題になります。 BinaryFormatter 経由で送信されます。
これは設計によるものですか?
これを改善するために、一度に 64 バイトのブロックを生成してキャッシュする別のクラス (デコレータ デザイン パターン) で salsa20 をラップしました。
セキュリティ面で気をつけていることはありますか?
java - ストリームコンテンツの中間バイトから最後までの暗号化を開始するための HC 128 (ストリーム暗号) の処理方法は?
私の状況: 私は、ユーザーがビデオを一時停止/再開できるビデオ ストリーミング サービスを利用しています。また、IDM のように、複数の部分を並行して視聴することもできます。ここでは性能が重要な問題であるため、この比較によると性能が最も優れているHC-128を選択しました。
HC では、ほとんどのストリーム暗号と同様に、アルゴリズムの開始時にカウンターを設定し、より多くのデータが暗号化されるにつれてそのカウンターを増やすというセキュリティ手法の 1 つがあります。
私のソリューションは、ストリームが完全に ( index0から までcontent.length()) ダウンロードされると正常に動作しますが、特定の場所 (たとえば、 byte ) で再開したい場合は失敗します10000。
カウンターを に設定するデフォルトの HC 初期化プロセスを使用します0。のコードを読んでみましHCたが、解決策が思いつきませんでした。
特定のカウンター位置で HC-128 を初期化するにはどうすればよいですか?
ストリームを復号化するための復号化アプリもありますが、受信バイトでカウンターがインクリメントされた場合、これは機能します。
正常に動作する弾む城ライブラリからコピーされたHC 128のサンプルがあります。
ここでこのコードをオンラインで実行できますメインメソッドの「Hello World」は入力です
encryption - LFSR ベースのストリーム暗号に対する既知平文攻撃
暗号化に関する本を読んでいるのですが、質問に行き詰まっています。私は本当に何週間もそれを解決しようとしています。しかし、全体像を理解できなかったことが問題だと思います。質問は次のようなものでした:
LFSR ベースのストリーム暗号に対して既知の平文攻撃を行います。送信された平文は次のとおりであることがわかっています。
1001 0010 0110 1101 1001 0010 0110
チャンネルをタップすると、次のストリームが観察されます。
1011 1100 0011 0001 0010 1011 0001
暗号と LFSR を理解するために私を助けてくれてありがとう。
random - Intel の RDRAND の正当な使用法はありますか?
今日、私は次のように考えました: まあ、NIST SP 800-90Aの RDRAND 実装に大きな疑いがあるとしても、それは依然として疑似乱数発生器 (PRNG) のハードウェア実装であり、機密性の低いアプリケーションには十分であるに違いありません。それで、メルセンヌ ツイスターの代わりに自分のゲームで使用することを考えました。
したがって、この命令を使用することでパフォーマンスが向上するかどうかを確認するために、次の 2 つのコードの時間を比較しました。
と
2つを実行すると、次のようになります。
したがって、Mersenne Twister は、私の CPU では RDRAND よりもはるかに高速です。まあ、私はがっかりしました、私のゲームから除外されました. しかし、RDRAND は暗号的に安全な PRNG (CSPRNG) であるため、舞台裏で多くのことを行います...他の CSPRNG と比較すると、より公正になります。そこで、Rabbitの実装 (RFC を C に単純に変換したもので、パフォーマンスのための巧妙なトリックはありません) を使用して、次のテストを作成しました。
そして驚いたことに、最初の 2 つの疑似乱数データの 2 倍を生成し、RDRAND よりも良い時間を得ることができました。
3 つすべてが、最適化を有効にしてコンパイルされました。
そのため、RDRAND が NSA バックドアをすべてのソフトウェア暗号化に埋め込むために作成されたという偏執狂が広まっています。また、RDRAND よりも高速なソフトウェア CSPRNG が少なくとも 1 つあり、最も広く使用されている適切な PRNG である Mersenne Twister は、RDRAND よりもはるかに高速です。最後に、 RDRAND のように、AES の 2 つのスクランブラー層の背後に隠れていないオープンソースの監査可能なソフトウェア エントロピー プール (/dev/randomや など) があります。/dev/urandom
では、質問: RDRAND を使用する必要がありますか? 合法的な使用法はありますか?それとも、使用を完全に停止する必要がありますか?
encryption - 暗号化アルゴリズム ブロック暗号とストリーム暗号
ストリーム暗号とブロック暗号の違いは何ですか?ブロック暗号のようにデータはチャックにあり、ストリーム暗号ではビットごとに暗号化されているので、ストリーム暗号の入力としていくつのデータがありますか?
c - C RC4 の超奇妙な振る舞い
そのため、Web サイトで使用していた純粋な C での RC4 の実装を見つけました。6文字の文字列を入力した場合を除いて、非常にうまく機能していました。次に、内部エラー ページが表示されます。この長さだけで問題が発生することがわかりました。
1.Crypt.c
2.メイン
アドバイスや考えは大歓迎です。関数自体が悪いのか、C コードの残りの部分なのかを知りたいだけです。感謝!
security - GSM A5 暗号化 フレームごとに再初期化?
A5 アルゴリズムでは、ダウンとアップストリームでそれぞれ 114 ビットを生成した後、疑似乱数ジェネレーターは各フレームの最後で 0000 に設定されますか? 次のフレームで 64-Bit-Kc、22-Bit-Frame-COUNT、そして 100 サイクルで再初期化され、その出力は破棄され、最終的に再び出力が生成されますか? それとも、ジェネレーターは単に一時停止され、次のバーストで保存された状態から続行されますか?
java - Java Stream Cipher (入力および出力のtxtファイルを使用) ランダムな文字を出力すると、復号化された文字列が完全ではありません
どこで間違いを犯したのかはわかりませんが、私のプログラムは、input.txt ファイルを取得charsして数値に暗号化し、復号化して に戻すストリーム暗号であると想定されていますchars。
私の問題は、次のように入力することです。
(txtを出力ファイルに暗号化すると正常に動作します)入力ファイルは次のようになります。
出力ファイルは次のようになります。
次に、ファイルを復号化すると..
次のようになります。
何が間違っているのかわかりませんが、それは私の復号化方法や、暗号化がいくつかの値で同じ数値を与える方法にあると思いますか? 助けていただければ幸いです。