【セキュリティ】公開鍵暗号法について

 ■ はじめに

理解するために、いくつかの工程を踏んで、公開鍵暗号法について理解する

【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