1

共有パスフレーズ/キーを使用してTCPベースのプログラムの通信を保護したい。ブロックサイズやパディングなどを処理せずにこれを行う最も簡単な方法は、ストリーム暗号を直接使用することです。そうすることで、データの量がクリアデータと暗号化データの間で変更されることはなく、変更は簡単です。

ストリーム暗号のみを使用するということは、認証がないことを意味します。認証なしの暗号化は十分に安全ではないため、使用すべきではないと私は常に考えています。

ストリーム暗号に認証を追加することが必須である場合、HMACを追加するか、認証された暗号化方式( NaClのcrypto_secretboxなど)を使用する必要があるため、ストリーム暗号が追加した単純さが失われます。最小メッセージ長があり、パディングを処理する必要があります。 ..。。

あなたは何をお勧めします?特定の場合に、認証なしでストリーム暗号のみを使用するのは安全ですか?

4

2 に答える 2

1

GCMモードでAESを使用することを検討できます。これにより、認証が組み込まれたストリーム暗号が提供されます。

于 2009-10-21T08:01:15.050 に答える
1

暗号文への変更と平文への変更の関係は非常に単純であるため、ある種のメッセージ認証子を使用することは、ストリーム暗号では特に重要です。

とにかく、ストリームに追加情報を追加せずに、やみくもにストリーム暗号を適用することはできません。ストリーム暗号の最も重要なルールを覚えておいてください。

同じキーストリームを再利用しない

したがって、単一の接続のみを暗号化し、後でパスフレーズを破棄する場合を除き、共有シークレットから接続ごとにセッション キーを生成する必要があります。これは、接続の開始時にいくつかの追加情報を送信する必要があることを意味します。とにかくそれを送信しているため、各メッセージの後に HMAC を送信することは大したことではありません。

単純に見えるからという理由でストリーム暗号を使用するのは、通常は間違いです。あなたcrypto_secretboxはNaClから言及しました-それを使用することをお勧めします。認証とパディングの問題を処理します。

于 2009-10-21T00:16:39.667 に答える