ユーザ用ツール

サイト用ツール


rsa

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
rsa [2025/07/12 03:46] – [証明] bokupirsa [2025/07/12 13:00] (現在) bokupi
行 1: 行 1:
-====== RSA公開鍵暗号 ======+====== RSA公開鍵暗号方式 ======
 ===== 公開鍵暗号の概要 ===== ===== 公開鍵暗号の概要 =====
  
行 28: 行 28:
  
 なぜ上記のようなことが成り立つのか、説明します。 なぜ上記のようなことが成り立つのか、説明します。
 +
 +下記の式が成り立てば、暗号文を平文に復号出来ることを証明できます。
 +
 +$(a^e)^d \equiv a \mod n$
 +
 +最初に、$\mod n$ではなく$\mod p$とした場合について見ていきます。これはmodで作る法の世界を、素数にすることが、この先の証明で必要になるからです。($n$は素数ではないため)
 +
 +$a$が$p$の倍数である場合、$a$を$p$で割った余りは0となるので、
 +
 +$(a^e)^d \equiv 0 \equiv a \mod p$
 +
 +となって、
 +
 +$(a^e)^d \equiv a \mod p$
 +
 +は成り立ちます。
 +
 +続いて、$a$が$p$の倍数でない場合を見ていきます。$p$は素数なので、$a$が$p$の倍数でない場合、$a$と$p$は互いに素となります。この条件が後ほどフェルマーの小定理を使う際に必要になります。$a$が$p$の倍数である場合、この条件は成立しないので、前述の通り個別に証明しています。
  
 まず $ed \equiv 1 \mod \varphi(n)$なので、任意の整数$k$を用いて、$ed - 1 = k\varphi(n)$で表せます。$ed$を$\varphi(n)$で割った余りが$1$になるので、$ed$から$1$を引いた値は、$\varphi(n)$で割り切れる任意の値になる、という意味です。 まず $ed \equiv 1 \mod \varphi(n)$なので、任意の整数$k$を用いて、$ed - 1 = k\varphi(n)$で表せます。$ed$を$\varphi(n)$で割った余りが$1$になるので、$ed$から$1$を引いた値は、$\varphi(n)$で割り切れる任意の値になる、という意味です。
行 54: 行 72:
 となります。 となります。
  
-下記の式が成り立てば、暗号文を平文に復号出来ることを証明できます。+少し間が空いたので再掲しますが、下記の式が成り立ことを証明ます
  
-$(a^e)^d \equiv a \mod n$+$(a^e)^d \equiv a \mod p$
  
 以下、式変形していきます。 以下、式変形していきます。
行 68: 行 86:
  
 となります。 となります。
-ここでフェルマーの小定理+ここでフェルマーの小定理
  
-$p^{-1} \equiv 1 \mod p$+$a^{p-1} \equiv 1 \mod p$
  
 を活用して、さらに式変形を進めます。 を活用して、さらに式変形を進めます。
 +($p$が素数で且つ$a$と$p$が互いに素である)
  
 $\begin{align} $\begin{align}
行 83: 行 102:
  
 ここまで$p$について見てきましたが、$p$を$q$に置き換えても同様のことが言えます。 ここまで$p$について見てきましたが、$p$を$q$に置き換えても同様のことが言えます。
 +ということは、$k, l$を任意の整数とすると、
 +
 +$(a^e)^d - a = kp\\\\
 +(a^e)^d - a = lq$
 +
 +となります。
 +剰余が同じ値なら、それらの差は割った値の倍数です。
 +
 +さらに$p$と$q$はそれぞれ素数なので、互いに素です。
 +$m$を任意の整数とすると、
 +
 +$\begin{align}
 +(a^e)^d - a &= m(pq)\\
 +&=mn
 +\end{align}$
 +
 +となります。
 +
 +従って、
 +
 +$(a^e)^d \equiv a \mod n$
 +
 +と言えます。
 +
 +===== 参考サイト =====
 +
 +  * [[https://qiita.com/reika727/items/215d23bf18e21e3cbc52|RSA 暗号の正しさを徹底的に証明する]]
 +    * 個人的にはこちらの説明が分かりやすかったです。自身のレベルによって読みやすいと感じる説明は変わると思います
 +
rsa.1752292004.txt.gz · 最終更新: 2025/07/12 03:46 by bokupi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki