公開鍵暗号方式
公開鍵暗号(Public Key Encryption: PKE)
非対称鍵暗号(asymmetric-key cryptography)と呼ぶこともある。
暗号化と復号時に違う鍵を使う方式
鍵は公開鍵(public key)と私有鍵(private key、プライベート鍵)のペア
ここによると秘密鍵というのは英語圏の人とのやり取り、翻訳で問題になるらしいので私有鍵を使うようにする 業務で実装する場合は何かしらの暗号ライブラリを使用することが多いと思う 例:
公開鍵暗号方式
なんとなく公開鍵暗号の疑似コード
Aさん(送信者)、Bさん(受信者)がいる
Aさんの公開鍵、私有鍵、Bさんの公開鍵、私有鍵
code:memo
公開鍵アルゴリズム = (何かしらの公開鍵暗号アルゴリズム)
// 送信する平文データ
data = ...
// 私有鍵(Aさん)
priv_key_A = get_priv_key(Aさん)
// 公開鍵(Bさん)
pub_key_B = get_pub_key(Bさん)
// 暗号化
msg = encrypt(公開鍵暗号アルゴリズム, data, priv_key_A, pub_key_B)
// データの送信
send(msg)
code:memo
公開鍵暗号アルゴリズム = (何かしらの公開鍵暗号アルゴリズム)
// 受信データ
recieve_msg = receive()
// 私有鍵(Bさん)
priv_key_B = get_priv_key(Bさん)
// 公開鍵(Aさん)
pub_key_A = get_pub_key(Aさん)
// 復号
data = decrypt(公開鍵暗号アルゴリズム, recieve_msg, priv_key_B, pub_key_A)
初期化ベクトルとかもドメインパラメータに含まれそう
実装する場合JCMVPというところが以下のPDFを公開しているので参考になる。 確認用
Q. 公開鍵暗号方式
Q. 送信者が暗号化をする場合どの鍵を使うか
Q. 受信者が復号をする場合どの鍵を使うか
参考
逆計算が困難な数学上の問題に基づく暗号方式8
ペアをなす次の2種類の鍵を用いてそれぞれ別々の(非対称な)操作を行う
公開鍵 … 広く一般に公開する。
秘密鍵 … 個人や特定の機器のみで保持する。
『秘密鍵』という単語使ってますか?
秘密鍵とsecret keyの使われ方の違いを考えると、使わない方が良いと思いませんか?
少なくとも、自分の文章が自動翻訳された時や、英語圏の話者との交流で、混乱が生じうることを意識して使うのが良いと思います。(混乱している人を何度も見かけたことある)
https://gyazo.com/094e725ad32744cbbe4a0bf055e99877
関連
メモ