課題プリント17 | マルチメディア実習 |
○公開かぎ暗号
この考え方は1976年、DiffieとHellmanという2人の研究者によって発表された。この方法では、AとBの2つの「かぎ」を使い、「かぎA」で暗号化した暗号文は「(
@ )」でしか復号できない。逆に、「かぎB」で暗号化した文は「( A )」でしか復号できない、という考え方である。
例えば、「かぎA」を公開して、他の人からのデータは「( B )」で暗号化して送信してもらい、自分は自身が管理している「( C )」で復号する。逆に、データの作者が自分であることを証明したいとき、「( D )」で暗号化してから公開する。閲覧者は「( E )」を使って見ることができる。「( F )」で復号できる暗号文は「( G )」がなければ作成できないので、作成者が自分であることの証明になる。このように、データを隠すことはもちろん、認証にも使うことができる。しかし、このような便利な「かぎ」を作り出すのは大変困難だと思われていた。
しかし、1977年、Rivest、Shamir、Adlemanという3人の研究者によって、公開かぎ暗号の考え方を満たす変換方法が発明された。この暗号方式は3人の頭文字をとって、RSA暗号と名付けられた。
語群
かぎA、 かぎB
○RSA暗号-1
2つの素数PとQ、その素数の積N(=P×Q)を使う。文字コードに「何かの計算」をして、Nで割った余りを使うと、すべての文字コードが0〜N−1の範囲に入る。この条件の元に「何かの計算」として文字コードのべき乗を計算する。不思議なことに、べき乗数をある値にすると元の値に戻るのである。
例えば、P=2,Q=5とするとN=10となる。コードとして2について調べる。
5乗して10で割った余りが元の2になる(下表)。
乗数 1 2 3 4 5 6 べき乗 2 4 8 16 32 64 余り 2 4 8 6 2 4
同じようにして、3について計算してみよ。5乗すると元の3に戻る。
3の5乗=( H )
(H) mod 10 = 3 (A mod B → AをBで割った余りを求める)
何乗すると元に戻るかは次の計算で求めることができる。
n×(P−1)×(Q−1)+1 nは任意の整数
この例の場合、n=1で計算すると次のようになる。(P=2,Q=5)
(( I )−1)×(( J )−1)+1=( K )×( L )+1=( M )
ただし、この例ではN=10なので余りが0〜9の10種類なので10個のデータしか扱えない。実際には、P,Qにもっと大きな素数を使う。
現在のRSA暗号は一般的にP×Qが310けたになる数を使っている。
【参考】RSA暗号の解説 http://www.maitou.gr.jp/rsa/rsa01.php
マルチメディア実習 | Copyright © 2010 Hiroshi Masuda |