■ はじめに
理解するために、いくつかの工程を踏んで、公開鍵暗号法について理解する
【0】関連用語
* 公開鍵 ... 暗号化だけできる鍵 * 秘密鍵 ... 複合化だけできる鍵 よく、以下のように例えられる。 * 秘密鍵 ... 鍵 * 公開鍵 ... 南京錠
https://www.b-chan.jp/entry/essay/public-key-cryptosystem
【1】Step1: 簡単な過程
* 例えば、1つの部屋に、 「自分」「受信者(伝えたい人)」「傍受者(伝えたくない人)」 がいたとする => どうやって、ひそひそ話ではなく、 どうどうと「自分」は「受信者」だけに自分の意思を伝えるか?
議論を簡単にするために
* 伝えたい意思を5桁の数値にする(例えば「98765」)
方針
一つのアイディアとして... ★ポイント★ 「自分」「受信者(伝えたい人)」で、 二人だけの『秘密の共通の数字』を決めておく(例えば「123」) * 前提として、その数字は「傍受者(伝えたくない人)」は知らない * 数字を言う際に、その共通の数字を足した形で言う (加算トリックという。例えば、9なら「132(=123+9)」、8なら「131(=123+8)」・・・) => すると、その数値を聞いた「受診者」は、共通の数字を引いて記録しておけばいい (132なら「9(=132-123)」、131なら「8(=131-123)」・・・)
関連するキーワード
* 128ビット暗号化 * ブロック化暗号 => ある固定長のブロックごとに分けて暗号化を行う * AES (Advanced Encryption Standard) => 共通鍵暗号方式の代表的な暗号化アルゴリズムで、 鍵長が128ビット、192ビット、256ビットから 選ぶことができるブロック長が128ビットのブロック暗号
【2】Step2: オープンな場で『共通の秘密』を作る方法
* Step1 は、あくまで、二人だけの『秘密の共通の数字』 を決めておいたからなせた事であって、 逆に、その数値がなければ、暗号化できない => そこで、オープンな場で『共通の秘密』を作る方法を考える
議論を簡単にするために
* 伝えたい意思を、色にする
方針
一つのアイディアとして、以下の手順を実行する...
ポイント
[1] 「自分」「受信者(伝えたい人)」で、 『秘密の色』それぞれを決めておく(例えば「山吹色」「パールホワイト」) [2] 「自分」「受信者」が、[1]で決めた色とは別の色を決めて、 それを公開する。(「公開色」とする。例えば「黄緑」) [3] 「自分」の色と「公開色」を混ぜて、公開する。 (「公開混合色A」とする) [4] [3]と同様に「受信者」の色と「公開色」を混ぜる。 (「公開混合色B」とする) [5] 「受信者」の色と「公開混合色A」混ぜる (「山吹色」:「パールホワイト」:「黄緑」=1:1:2の色になる) [6] 「自分」の色と「公開混合色B」混ぜる (「山吹色」:「パールホワイト」:「黄緑」=1:1:2の色になる) => [5]と[6]は同じ色になり、「傍受者(伝えたくない人)」は 公開されている情報だけではこの色を知る(作る)ことはできない
関連するキーワード
* ディフィー・ヘルマン鍵交換
【3】Step3: 『共通の秘密』をPCで分かる数値で置き換える
Step2 は絵の具だったため、非可逆性(元に戻すことができないような性質)を保てたが PCは数値で表すしかない。しかし、数値だと可逆性が出てくる。 そこで、限りなく非可逆性にするために、数学を用いて、暗号化する。
関連記事
共通鍵暗号アルゴリズム
https://dk521123.hatenablog.com/entry/2016/10/05/230221
暗号化・複合化ツール ~ GPG4WIN ~
https://dk521123.hatenablog.com/entry/2020/05/21/120745