こちらの動画を視聴して RSA 公開鍵暗号 を学びます。 大学生のころ、このあたりの授業を受けましたがすっかり忘れていますね…。

url: https://www.youtube.com/watch?v=cz1ezomeJvk
title: "公開鍵暗号を教わってみた/素因数分解が難しいからどうしたの?"
description: "#プログラミング #エンジニア #セキュリティ公開鍵・秘密鍵を雰囲気で使っている・暗号の仕組みがぜんぜんわからない・数学が苦手な人向けに、数学大好きムーさんから教えてもらいました。🛎️ 宣伝 : 本を書きました!「コードが動かないので帰れません!」新人プログラマーのためのエラーが怖くなくなる本です。エラーログの..."
host: www.youtube.com
favicon: https://www.youtube.com/s/desktop/c90d512c/img/favicon_32x32.png
image: https://i.ytimg.com/vi/cz1ezomeJvk/maxresdefault.jpg

個人的なるほどポイント

Imgur

公開鍵を利用して平文を暗号化したとき、その式がシンプルだと公開鍵だけで逆算できてしまいます。 たとえば、足し算であれば引き算することで解読が可能です。

自体も公開情報であるため、式と公開鍵両方が第三者にわたっても復号化できないようにする必要があります。

Imgur

公開指数 (encrypt) も公開鍵暗号で利用します。 について、後述する とは異なり、 であることに注意です。

公開指数encrypt
素数prime
素数p の次; prime

Imgur

暗号化の計算式は以下です。

平文 (message?) について、公開指数 で累乗し、それを で mod を取ります。 そうして得られるものが暗号 です。

式自体はシンプルですが、 をどう定めるかはまだ説明されていません。 またどのような を用意すべきかについても説明されていません。 どうやって定めるのか…が数学ですね…。

Imgur Imgur

累乗で mod を取ったほうが解析しづらい、というのなるほどなと思いました。 たしかに規則性が見えないですね。

Imgur Imgur

公開鍵は のタプルのようです。 また秘密鍵は (decrypt) でありまだここでは説明されていません。

Imgur

具体例で理解する

フローで理解していきます。 なお、注意点として の生成は Alice 側でまとめておこなわれるはずです。 図においては Bob 側で計算されているようにみえますが、 Alice 側で公開鍵と秘密鍵セットで生成し、Bob は の公開鍵のみ提供します。

Imgur

Imgur Imgur

という最小公倍数を導入します。 これは の最小公倍数ですが、どうして なのかは後述されます。

Imgur

そして、 公開指数 がようやく計算されます。 と最大公約数が 1、つまり 互いに素 を選ぶようです。

実際の運用としては を巨大な素数とすることが多いようです。 素数であれば と互いに素になるためです(純粋な倍数でなければ)。

Imgur

Imgur

ここからは復号側の仕組みです。

秘密指数 を利用して計算します。 公開鍵の と、 を利用して計算します。

ということは Alice は さえ知っていればよい、ということなのですね…。 というのも は動的に手元で計算できるためです。

下記の不定方程式を満たすような の組のうち、 の値が正となるものを とするようです。 いろいろな組み合わせ のうち、 を求めるようです。

Imgur

ここの計算方法については別の Qiita で勉強しようとおもいます。

Imgur

暗号 乗し、 で mod を取ることで元の平文 が得られます。

暗号化ステップ

  1. 素数 を決める
  2. を計算する
  3. を計算する
    1. は Least Common Multiple 最小公倍数
  4. と互いに素になる (gcd = 1) を計算する
    1. となる を計算する
    2. とする
      1. 別に でもよい
  5. 暗号 を計算する

復号ステップ

  1. を計算する
    1. かつ を満たすような の組を計算する
    2. このときの とする
    3. を満たす から、 とする
  2. 平文 を計算する

Imgur