公開鍵暗号方式/共通鍵暗号方式/ハイブリッド方式の備忘録
私の理解
- 共通鍵暗号方式(AES)
共通鍵で暗号化・複合する。ファイルの暗号化・複合に時間がかからない(かからないというか、暗号化するための鍵の長さを短くしているから時間がかからない。)ただし、共通鍵がバレたら復号できちゃう。。。
- 公開鍵暗号方式(RSA)
自分で秘密鍵を用意して、秘密鍵から公開鍵を作る(秘密鍵は自分でのみ持っている)。サーバに公開鍵を渡して、公開鍵でファイルを暗号化してもらう。公開鍵で暗号化されたファイルは自分の秘密鍵でしか復号できない。
(復号できないというか、復号できないように鍵の長さを長くするという話。別に公開鍵で暗号化されたものは自分の秘密鍵でしか復号できないのではなく、暗号に使う鍵を長くして読み取りにくくしている。で長いからファイルを復号するのも時間がかかる。)
- ハイブリッド方式
共通鍵を公開鍵暗号方式で暗号化する。共通鍵暗号方式のバレたら復号できちゃうのでダメなので、バレないように使用。→共通鍵自体を頑張って暗号化しようぜ!って話
- 感想
結局、ハイブリッド方式は短い鍵長で暗号化したファイルを送るんだから、鍵が読まれたら終わりじゃね?というか共通鍵方式と何が違うの?って思ったんだけど、読み取る側で考えると違うのか。 秘密鍵って、公開鍵と暗号化されたファイルがあれば読み取れそうな気もするが、読み取れないように鍵長を長くしているって理解でいいよね?(udemyの例を見ると何となく読み取れそうな気がしてしまったけど、実際はそんなもんじゃないという話かな。)
■読み取る側 ・共通鍵 1.共通鍵をゲット 2.暗号化文をゲット →読み取れました。 ・ハイブリッド 1.共通鍵をゲット 2.秘密鍵をゲット(これが無理って話よね?) 3.暗号化文をゲット →読み取れました。
- 公開鍵暗号方式
- 【クライアント側】秘密鍵で公開鍵を作って、サーバに公開鍵を渡す
- 【サーバ側】で公開鍵でデータを暗号化してもらう
- 【サーバ側】公開鍵で暗号化されたデータも受領
- 【クライアント側】秘密鍵で暗号化されたデータを複合
- 共通鍵暗号方式
- 共通鍵で暗号化・複合
- ハイブリット方式
- 【クライアント側】秘密鍵から公開鍵を作って、サーバに公開鍵を渡す
- 【サーバ側】公開鍵から共通鍵(秘密鍵じゃないと読み取れない鍵)を作って共通鍵をクライアントに渡す
- 【サーバ側】共通鍵でデータを暗号化してクライアントに渡す
- 【クライアント側】共通鍵(秘密鍵で共通鍵を複合)でデータを複合
参考
https://udemy.benesse.co.jp/development/blockchain/public-key-cryptography.html今回は仮に公開鍵(3、33)、秘密鍵(7、33)として、実際に17という数を暗号化してみましょう。公開鍵の3,33がわかっていれば、29という暗号化された分から候補は見れそうだけど、 この公開鍵がめちゃめちゃ長けりゃ候補も多いし、現実無理っしょって話なのかな。暗号文=173 mod 33
=4913 mod 33
=29
https://www.infraexpert.com/study/security4.html
https://www.ipa.go.jp/security/enc/qa.html
https://cybersecurity-jp.com/column/53774