「利用者:Meauk/sandbox」の版間の差分

提供: Yourpedia
移動: 案内検索
(下書き5)
(下書き6)
 
21行目: 21行目:
  
 
この時点で、
 
この時点で、
::<span style="color:red">'''C<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup></span>
+
:<span style="color:red">'''C<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup></span>
: <span style="color:red">'''≡ (g<sup style="font-size: 80%;">m</sup> × g<sup style="font-size: 80%;">pqr</sup>)<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span>
+
:: <span style="color:red">'''≡ (g<sup style="font-size: 80%;">m</sup> × g<sup style="font-size: 80%;">pqr</sup>)<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span>
: <span style="color:red">'''≡ g<sup style="font-size: 80%;">m(p - 1)</sup> × g<sup style="font-size: 80%;">p(p - 1)qr</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span>
+
:: <span style="color:red">'''≡ g<sup style="font-size: 80%;">m(p - 1)</sup> × g<sup style="font-size: 80%;">p(p - 1)qr</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span>
: <span style="color:red">'''≡ (g<sup style="font-size: 80%;">m</sup>)<sup style="font-size: 80%;">p - 1</sup> × 1 mod p<sup style="font-size: 80%;">2</sup>'''</span>
+
:: <span style="color:red">'''≡ (g<sup style="font-size: 80%;">m</sup>)<sup style="font-size: 80%;">p - 1</sup> × 1 mod p<sup style="font-size: 80%;">2</sup>'''</span>
: <span style="color:red">'''≡ (g<sup style="font-size: 80%;">p - 1</sup>)<sup style="font-size: 80%;">m</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span>
+
:: <span style="color:red">'''≡ (g<sup style="font-size: 80%;">p - 1</sup>)<sup style="font-size: 80%;">m</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span>
 
と述べられる。
 
と述べられる。
  
36行目: 36行目:
 
ここでやっと <span style="color:red">'''D'''</span> の中身たる <span style="color:red">'''{(C<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup>) - 1} / p'''</span> に触れることができるわけであるが、これまでの議論から、<span style="color:red">'''C<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span> が <span style="color:red">'''amp + 1'''</span> に等しいことが判明している。
 
ここでやっと <span style="color:red">'''D'''</span> の中身たる <span style="color:red">'''{(C<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup>) - 1} / p'''</span> に触れることができるわけであるが、これまでの議論から、<span style="color:red">'''C<sup style="font-size: 80%;">p - 1</sup> mod p<sup style="font-size: 80%;">2</sup>'''</span> が <span style="color:red">'''amp + 1'''</span> に等しいことが判明している。
  
したがって、<span style="color:red">'''{(amp + 1) - 1} / p'''</span> を計算することで、 <span style="color:red">'''D'''</span> の最終的な値が <span style="color:red">'''am'''</span> であると分かる。
+
したがって、<span style="color:red">'''{(amp + 1) - 1} / p'''</span> を計算することで、 <span style="color:red">'''D'''</span> の正体が <span style="color:red">'''am'''</span> であると分かる。
 
=== 復号の仕組み ===
 
=== 復号の仕組み ===
(加筆予定)
+
復号の最終過程は <span style="color:red">'''Dd mod p'''</span> を計算することであった。
 +
 
 +
ここで次の3点を確認する。
 +
# <span style="color:red">'''D'''</span> は  <span style="color:red">'''am'''</span> に等しい。
 +
# <span style="color:red">'''m'''</span> は <span style="color:red">'''p'''</span> 未満である。
 +
# <span style="color:red">'''d'''</span> は法 <span style="color:red">'''p'''</span> において、<span style="color:red">'''a'''</span> の逆元、すなわち <span style="color:red">'''a<sup style="font-size: 80%;">- 1</sup>'''</span> である。
 +
 
 +
このようであるから、<span style="color:red">'''Dd mod p'''</span> を計算することは <span style="color:red">'''am × a<sup style="font-size: 80%;">- 1</sup> mod p'''</span> を計算することを意味し、結果的に平文たる <span style="color:red">'''m'''</span> を得られる。

2022年12月26日 (月) 20:26時点における最新版

成立の証拠[編集]

値 d の正体[編集]

a{(gp - 1 mod p2) - 1} / p に等しいということは、gp - 1 mod p2ap + 1 に等しいことを意味する。これには次の2点が関わる。

  1. gp が互いに素(最大公約数が1)である時、フェルマーの小定理によれば gp - 1 ≡ 1 (mod p) が成立するということ。
  2. 任意の非負整数 N1 を考える時、N1 mod p2 において p2 を含む全ての項は 0 になるので、その結果は「p1 の項」よりも大きいことはないということ。

したがって、a とは「gp - 1p2 で割った時の p1 の項の係数」であると述べることができる。

その上で、dad ≡ 1 (mod p) によって求められるというので、この d は「法 p における a の逆元」に相当することになる。

値 D の正体[編集]

初めに Cp - 1 mod p2 について考える。

そもそも暗号文は C ≡ gm + nr (mod n2) によって求められるが、これは言い換えると C ≡ gm × gpqr (mod p2q2) である。

この時、次の3点に注意する。

  1. 任意の非負整数 N2 を用いて (N2 mod p2q2) mod p2 を計算することを考える時、それは初めから N2 mod p2 を計算することと同じである。
  2. 任意の3つの非負整数 xyz を考える時、任意の法において少なくとも次の2つが成り立つ。なお、その2つの間には直接的な関連性はない。
    • (xy)z ≡ xzyz
    • xyz ≡ (xy)z ≡ (xz)y
  3. 任意の非負整数 N3 を用いて N3p(p - 1) mod p2 を計算することを考えると、p2 に対応するカーマイケル数が p(p - 1) であることとカーマイケルの定理から、その結果は常に 1 となる。つまりその部分 p(p - 1) は、法 p2 において指数法則的に 0 であることを意味している。

この時点で、

Cp - 1 mod p2
≡ (gm × gpqr)p - 1 mod p2
≡ gm(p - 1) × gp(p - 1)qr mod p2
≡ (gm)p - 1 × 1 mod p2
≡ (gp - 1)m mod p2

と述べられる。

ところで、節「値 d の正体」で既に出てきた次の2つを思い出したい。

  1. gp - 1 mod p2ap + 1 に等しいということ。
  2. 任意の非負整数 N1 を考える時、N1 mod p2 において p2 を含む全ての項は 0 になるので、その結果は「p1 の項」よりも大きいことはないということ。

ゆえに上記の過程を踏まえれば、 Cp - 1 mod p2(ap + 1)m mod p2 に等しく、さらに amp + 1 に等しいと述べることができる。

ここでやっと D の中身たる {(Cp - 1 mod p2) - 1} / p に触れることができるわけであるが、これまでの議論から、Cp - 1 mod p2amp + 1 に等しいことが判明している。

したがって、{(amp + 1) - 1} / p を計算することで、 D の正体が am であると分かる。

復号の仕組み[編集]

復号の最終過程は Dd mod p を計算することであった。

ここで次の3点を確認する。

  1. Dam に等しい。
  2. mp 未満である。
  3. d は法 p において、a の逆元、すなわち a- 1 である。

このようであるから、Dd mod p を計算することは am × a- 1 mod p を計算することを意味し、結果的に平文たる m を得られる。