Copyright © 2026 TADASHI TAKEHANA
著作日時: 2026.03.18.水. 24:00 著作者、竹花 忠
RSA暗号によるデジタル署名の骨子:
送信したい文書データーをbunと呼ぶこととする。
送信者と受信者が共通で使用する既存のハッシュ関数をKHKと呼ぶこととする。
bunをKHKに入力してハッシュ値Hを得る。なお、ハッシュ値は、各文書データーごとに固有の値がもたらされる。
送信者は、文書データーのハッシュ値HにRSA暗号を掛けるために、秘密鍵と公開鍵を1セット生成する。
その秘密鍵をHKa、その公開鍵をKKaと呼ぶこととする。
KKaは、受信者として想定される不特定多数に送信しておく。
一方で、ハッシュ値Hに秘密鍵HKaで暗号を掛けて、AHを得る。
この送信者は、文書データーbunとAHとを1セットにして送信する。
受信者は、受信した文書データーJbunをKHKに入力してJHを得る。さらに、受信したAHをKKaで復号してFHを得る。
Jbunが送信時のbunのまま届いているなら、JHはHと等しい。受信したAHが送信時のAHのまま届いているなら、それを復合したFHもHと等しい。
JHとFHが一致していたなら、その値はHである可能性が高いのではないだろうか。
なので、その可能性の高さにおいて、Jbunはbunのまま届いていて、また、HKaを使ってHに暗号を掛けたAHが届いていたと、JHとFHが一致して時には、推定される。
ただし、Jbunは改ざんされたものであり、また、受信したAHも改ざんされたものであり、それでいてJHとFHとが一致してしまったということも起こり得ることである。その場合には、Hとは異なった値で、JHとFHとは一致しているわけであるが。
bunを改ざんして、その改ざんしたbunのハッシュ値にHKaで暗号を掛けた値に受信されるAHを差し替えれば、本来のHとは異なった値でではあるが、改ざん後のJHと改ざん後のFHとの一致が確認されてしまうことになる。
ただし、それには、HKaを知っていることが必要である。HKaを知っていなくて、bunの改ざんに合わせて、AHを改ざんできる可能性は極めて低い。
であるから、JHとFHとが一致していたならその値は高い確率でHである。
そして、そうであったなら、Jbunは改ざんされることなくbunのまま届いていて、受信したAHも改ざんされることなくAHのまま届いている。そうであった時、届いたそれぞれの値からのJHとFHとはHで一致するのだから。
さらにまた、受信したAHをKKaでHに復合できたということは、送信者は、Hを確かにHKaで暗号化したのだと言える。つまり、HKaが使用できる立場の者が送信者であるということになる。暗号化には、HKaが必要なのだから。
であるから、HKaを使用できる者が特定できるなら、bunとAHとのセットを送信した者が特定できる。
HKaとKKaとの暗号の鍵のセットを生成して、HKaを漏洩してしまうことなく秘密のうちに保持できているなら、bunとAHとのセットを送信した者は、HKaとKKaとの暗号の鍵のセットを生成した者である。
HKaとKKaを生成してから、HKaを秘密のうちに保持し続けているなら、HKaを使用できる者は、HKaとKKaとの暗号の鍵のセットを生成した者だけに限定されるのだから。
以上が、RSA暗号によるデジタル署名についての説明になる。