【暗号化技術.003】共通鍵暗号方式②
佐藤@IT雑貨屋です。
共通鍵暗号方式の事について続けます。
◆暗号モード
暗号化の方法には、ブロック暗号とストリーム暗号の2種類があります。
ブロック暗号は、ブロックと呼ばれる固定長の長さを区切って暗号を行う方式で、全部の暗号化が終わってからデータを送信します。
ストリーム暗号は、データを少しずつ暗号化をしていく方式で、暗号化が全部終わらないうちにデータ送信を行います。
ブロック暗号を利用して長い平文を暗号化するには、平文をブロックに分割し、各ブロックに対して暗号化処理を適用する必要があります。ブロック暗号の適用方法を暗号モードと呼びます。代表的な暗号モードには以下のものがあります。
①ECB(Electronic Codeblock)モード
平文をブロック長に分割し、それらを単純にブロック暗号方式で暗号化します。各ブロックに対する暗号化・複合の処理を独立して並列で行えるため、高速な暗号化が可能です。しかし、同じ平文ブロックからは同じ暗号ブロックが作成されるため、暗号文が推測されやすくなります。
②CBC(Cipher Block Chaining)モード
暗号ブロックを次の暗号化に利用する方式です。具体的には、ひとつ前の暗号ブロックと平文ブロックの排他的論理和(XOR)を取り、それを入力として秘密鍵で暗号化を行います。暗号化持には並列処理ができませんが、復号化の並列処理は可能です。
➂CFB(Cipher Feedback)モード
一つの前の暗号ブロックを暗号化アルゴリズムの入力にし、再度暗号化を行う方式です。具体的には、ひとつ前の暗号ブロックと平文の排他的論理和(XOR)をとり、それを暗号ブロックとして出力します。さらに出力した暗号ブロックを暗号化して次の平文と排他的論理和を計算します。暗号化持には並列処理ができませんが、複合時の並列処理は可能です。
④OFB(Output Feedback)モード
ブロック暗号を用いた疑似乱数生成器から、鍵のように使用できるビット列を作り、そのビット列と平文の排他的論理和を取り暗号化を行います。暗号化と復号の両方で並列処理はできません。
⑤CTR(Counter)モード
カウンタを用いる暗号モードです。カウンタを暗号化した鍵ストリームと、平文ブロックとの排他的論理和を計算して暗号化ブロックとします。並列処理が可能で、近年になって利用が増えて来ている暗号モードです。
◆推奨される共通鍵暗号方式
CRYPTREC(電子政府推奨暗号の安全性を評価、監視し、暗号技術の適切な実装法や運用法を調査・検討するプロジェクト)が作成したCRYPTREC暗号リスト(平成30年3月29日版)のうち、「電子政府推奨暗号リスト」に登録されている共通鍵暗号方式は以下の三つです。
・AES(128ビットブロック暗号)
・Cameria(128ビットブロック暗号)
・KCipher-2(ストリーム暗号)
上記以外の暗号方式は推奨されていません。特に、RC4(128 bit RC4)は「互換性維持の為に継続利用をこれまで容認してきたが、今後は極力使用すべきでない」と、運用監視暗号リストの中に明記されています。
◆量子暗号とPQC
量子力学では、情報を「観測」することで、送る情報に乱れが発生します。つまり「情報が盗聴された」ことが原理的に分ると言われています。この性質を利用し、秘密鍵を安全に配送するシステムが量子鍵配送(QKD:Quantum Key Distribution)です。量子鍵配送で共有した秘密鍵を使用した暗号方式を、量子暗号といいます。
また量子力学の仕組みを利用した量子コンピュータでは、従来のコンピュータに比べて高速に、素因数分解などの特定の問題を解くことができます。そのため、量子コンピュータを用いても解読されない暗号化方式が求められています。今後量子コンピュータが実用化されても暗号化が破られることのない方式の事をPQC(Post-Quantum Cryptography:耐量子計算機暗号)といいます。