ストリーム暗号とは何ですか?
ストリーム暗号は、データ暗号化で使用されるアルゴリズムの一種で、暗号化する必要のあるソースがランダムに見えるキーシーケンスに対して処理されます。 このタイプの暗号は、テキストの処理中に暗号化を変える可能性があるという意味で、ある程度柔軟です。 暗号化は、操作の現在の状態にも依存するため、状態暗号とも呼ばれます。 一度に64ビットのデータチャンクで機能するブロック暗号とは対照的に、ストリーム暗号は1ビットで動作できます。 このため、ストリームは非常に少ない処理能力で高速に処理できます。
最初のストリーム暗号は、1917年にギルバートバーナムによって考案されました。バーナムは、ワンタイムパッドと呼ばれる暗号の作成も支援しました。ワンタイムパッドは、ワンタイムキーを使用してデータを暗号化するストリーム暗号の形式です。 ワンタイムパッドでは、生成されるキーは暗号化する必要があるデータと同じ長さであり、完全にランダムであり、他の場所で再び使用されることはないため、名前です。
通常、プレーンテキストと呼ばれる暗号化されるデータに対して処理されると、結果の暗号テキストはキーなしでは解読できません。 ワンタイムパッドはほとんどのシナリオで対処するのが難しいため、非常に排他的な状況でのみ使用されます。 それでも、ストリーム暗号は通常有用であると考えられているため、キーは短縮されて擬似ランダムにされました。つまり、統計的にランダムですが、実際にはそうではありません。
ストリーム暗号には、オンザフライで暗号化する機能があります。 このように、単純なストリーム暗号は、ペンと紙で人々が実行することさえ簡単です。一方、ブロック暗号は通常、処理するためにコンピューターを使用する必要があります。 プレーンテキストは、キーストリーム、キーを構成する擬似ランダムシーケンスとともに暗号化プロセスを流れ、そこで変換され、暗号文として相手側から出力されます。
通常、この暗号化は、暗号を通過する個々のビットの排他的論理和(XOR)操作によって行われます。 単純なXOR暗号では、基本的に論理和のタイプを使用します。これは、どちらかのオペランドがtrueで、両方ではない場合に結果がtrueになる可能性があることを本質的に示しています。 たとえば、暗号化プロセスで移動するビットがゼロまたは1で、ペアのキーストリームビットが一致しない場合、結果の出力は1です。 ビットとペアのキーストリームビットが一致する場合、両方が1であるか、両方がゼロである場合、結果はゼロになります。 暗号化された1と0のストリームは、同じキーストリームを使用して送信の反対側で復号化され、ビットが元のプレーンテキストに変換されます。
ストリーム暗号には2つのタイプがあります。 同期方式を使用して、キーストリームは平文または暗号文とは別に作成され、その後、マージされて暗号化または復号化が行われます。 この方法では、送信の送信側と受信側の両方が、同じキーおよびキー内の同じ位置で動作している場合、同期されたままでなければなりません。 問題が発生した場合、復号化を最初からやり直す必要があるか、新しい開始点を示すフラグが暗号テキスト全体に断続的に配置される場合があります。 一方、自己同期暗号は、暗号テキスト内の前の数字の数に基づいてキーストリームを更新します。
最も頻繁に使用されるRC4と呼ばれるストリーム暗号の1つは、RSA DataSecurity®によって作成されました。 これは、多くのソフトウェア製品、およびセキュアなインターネット通信で使用されるセキュアソケットレイヤー(SSL)プロトコルと、ワイヤレスデバイスで使用されるWired Equivalent Privacy(WEP)暗号化のライセンスを受けて使用されています。 もう1つのよく使用される暗号はORYXとして知られており、暗号化が必要な携帯電話のデータ送信で使用されています。 IBM®は、SEALと呼ばれるストリーム暗号化方式も開発しました。これは、ハードディスク暗号化で使用されています。