見出し画像

公開鍵暗号方式

こんにちは、tangoです。
今回なんですが、公開鍵暗号方式で使われているRSAの仕組みについて勉強したので、簡易的にまとめてみました。

★公開鍵暗号方式とは

公開鍵と秘密鍵の2つの鍵を使いデータの転送を行います。
・公開鍵:全世界に公開している鍵
・秘密鍵:自分だけしか知らない鍵

★RSA仕組み

①受信者側で公開鍵と秘密鍵の鍵を作成します。
②送信者側に、受信者の公開鍵を渡す。
③送信者は、受信者から送ってもらった公開鍵でデータを暗号化する。
④暗号化したデータを受信者側に送る。
⑤送信者側から送られてきた暗号化したデータを秘密鍵で復号化する。

★RSAアルゴリズム

※オイラー関数を使用
---------------------------------------
①鍵の生成
・K=p×q
・K'=(p-1)(q-1)
・e(<K')
 1~K'までの中でeの自然数を決める
・eH mod K'=1

公開鍵⇒K、e
秘密鍵⇒H
---------------------------------------
②暗号化
データ⇒M
暗号化⇒A
・A=Mのe乗 mod K
---------------------------------------
③復号化
・M=AのH乗 mod K
---------------------------------------
---------------------------------------
例)
①鍵の生成
p=5,q=11
K=5×11
K=55

K'=(5-1)(11-1)
K'=(4)(10)
K'=40

e(<40)
e=7

7H mod 40=1
※1.
modの数を2倍3倍とかけていき、÷eする。
e-余り=1になったら、その1+商をする。
7(23) mod 40=1
H=23

画像1

公開鍵⇒55、7
秘密鍵⇒23
---------------------------------------
②暗号化
データ⇒5
A=5の7乗 mod 55
A=78,125 mod 55
A=25

暗号文⇒25
---------------------------------------
③復号化
M=25の23乗 mod 55
M=142,108,547,152,020,037,174,224,853,515,625 mod 55
M=5
データ=5
★暗号化前の数字になったので、復号化が成功
---------------------------------------

今回はこの辺で終わりたいと思います。
みなさんのエンジニアライフに少しでもお役に立てれば幸いです。
ありがとうございました。

・Twitter
https://twitter.com/tango3564

・Instagram
https://www.instagram.com/tango3690/