第11回LSIデザインコンテスト・イン沖縄  設計仕様書 - 5/8

6.RSA暗号化器のインターフェース

  次に、RSA暗号化器・復号器のインターフェースについて説明します。暗号化器には、入力として、平文、暗号化鍵、法が、出力として、暗号文が、それぞれ必要になります。一方、復号器には、入力として、暗号文、復号鍵、法が、出力として、平文が、それぞれ必要になります。以下では、これらの信号線幅について述べます。
  まず99に、平文、暗号文、ブロック、文字の関係を示します。平文は通常、一度に暗号化するには、大きなサイズになっています。そのため平文を、一度に暗号化するサイズ毎に区切ります。このときの一区切りを平文ブロックと呼ぶことにします。すなわち、一つ一つの平文ブロックが、式(1)におけるPとなります。なお同様に、暗号文を区切ったものを暗号文ブロックと呼ぶことにし、特に区別する必要がない場合は、単にブロックと呼ぶことにします。また各ブロックは、文字単位で区切ることができます。このとき、各ブロックに含まれる文字数がブロックサイズです。以下では、ブロックサイズをBと表すことにします。なお通常、暗号化器(復号器)への入力は、一文字単位とします。すなわち暗号化器(復号器)は、まず、Bクロックかけて、B文字を受け取ります。その後、受け取ったB文字を連接してブロックを構成してから、暗号化(復号)します。

Figure9

図9  平文、暗号文、ブロック、文字の関係

  次に、法Mを2進数で表したときのビット幅をWMと表すことにします。Mを法とするmod演算のアルゴリズムの多くが、が成り立つことを条件としたものであるので、以下でもこの条件が成り立つものとします。なお、この条件は、法MのMSB(最上位ビット)が1になることを表しています。
既に説明したように、式(1)、式(2)から、暗号化器と復号器は同じ構成になります。ここで、暗号化器を復号器としても使用できるようにするためには、入力される文字のビット幅と出力される文字のビット幅を一致させておく必要があります。そのビット幅をWCと表すことにします。ところで、式(1)、式(2)から、P<M、C<Mが成り立つことがわかりますが、通常、暗号文ブロックのビット幅と法Mのビット幅は同じになります。このことは、先ほどの暗号化・復号の例を見ればわかり易いと思います。先ほどの例の法M=253を2進数で表すと、11111101となり、8ビットになります。ここで例えば、2文字目「n」を暗号化した結果は、209となっています。この値はM未満ですが、2進数では11010001となり、8ビットになります。このことから、WC×B=WMとすればよいことがわかります。先ほどの例は、WC=8、B=1、WM=8ということになります。なお先ほどの例の平文ブロックは、ASCIIコード1文字(7ビット)であり、8ビットに収まっています。
  また、暗号化器を復号器としても使用できるようにするためには、さらに、暗号化鍵のビット幅と復号鍵のビット幅を比較して、長いほうのビット幅を採用する必要もあります。鍵の作り方からわかると思いますが、暗号化鍵Eと復号鍵Dの値は、法Mの値より小さくなるので、ここでは、これらの鍵のビット幅は、法Mのビット幅WMと同じにしておきます。ところで、暗号化器・復号器には、平文や暗号文を一文字単位で入力するのですから、暗号化鍵E、復号鍵D、法Mに関しても、WCビット毎にB回に分けて入力した方がよいでしょう。
以上のように、実際の暗号化器・復号器では、平文ブロックP、暗号文ブロックC、暗号化鍵E、復号鍵D、法Mを、文字単位に分けて入出力することになります。そこで、文字単位に分けたものを、それぞれの記号の頭に'C'を付けて、CP、CC、CE、CD、CMと表すことにします。記号がたくさん登場したので、これらを表2にまとめておきます。
以上のことから、RSA暗号化器・復号器のインターフェースは、図10のようになります。
実際には、図10に示した信号線以外に、クロック信号、リセット信号、暗号化・復号の開始を表す信号、データの有効性を表すイネーブル信号などが追加されます。また、実際の暗号化器・復号器では、処理するデータを受け取るのに要する時間と比べて、そのデータを暗号化・復号する時間の方がはるかに長くなります。そのため、暗号化器・復号器の内部にバッファを設け、バッファに空きがある間はデータを受信し、バッファが一杯のときは受信を拒否するなどの対策が必要になり、そのための制御信号なども追加されます。

表2  記号とビット幅

table2
Figure10

図10  平文、暗号文、ブロック、文字の関係

<<Back                 Next>>