秘密鍵から公開鍵を大抵作れますがなにか?

公開鍵暗号に関するデマの中でなぜか現れた「秘密鍵から公開鍵を作れるなんておかしい!」という意見に関連した四方山話
22

発端は、なにかブロックチェーン絡みでこの方のtweetが取り上げられてるのを見たことから

加納裕三@bitFlyer @YuzoKano

公開鍵暗号って、 ①公開鍵で暗号、秘密鍵で複合 ②秘密鍵で暗号、公開鍵で複合 ができます。だったらどっちでもいいじゃん。となりがちですが、絶対に秘密鍵を第三者に渡さないでください! 実はもう一つのルールが大事です。 ⭐️秘密鍵から公開鍵が作れるが、逆は不可能

2020-10-07 22:16:20
angel (as ㌵㌤の猫) @angel_p_57

ああこれ、今話題の方か。 よくあるデマをまた。( 「複合」という誤植はまだ可愛いところ ) twitter.com/YuzoKano/statu…

2020-10-07 22:43:01

何がデマかというと…。修正したらこんな感じになるということで比較してほしい。

angel (as ㌵㌤の猫) @angel_p_57

@kon_cl はい。違います。公開鍵暗号って、 ①「暗号化(守秘)」の分類の方式なら公開鍵で暗号化、秘密鍵で復号 ②「署名」の分類の方式なら秘密鍵で署名、公開鍵で検証 ができます。なので当然、方式や鍵の種類で処理内容が違います。が、いずれにせよ絶対に秘密鍵を第三者に渡さないでください!

2020-10-09 19:38:46
angel (as ㌵㌤の猫) @angel_p_57

@kon_cl 秘密鍵から大抵は公開鍵を作れますが、公開鍵から秘密鍵を作ることはできません。なので、公開鍵を第三者に渡すことに問題はありません。

2020-10-09 19:40:15

この手の間違いは多いので、ググってももはやどうにもならない。ということで、解説記事をあげておく。
なお、書籍であれば多分一般向けで唯一マトモなのは「暗号技術のすべて」だろうと思う。
※有名な「暗号技術入門」はお勧めしないので注意。

angel (as ㌵㌤の猫) @angel_p_57

いやあの。ググってもデマ説明9割以上なので…。 …一応記事を宣伝するか。 ・「電子署名=『秘密鍵で暗号化』」という良くある誤解の話 qiita.com/angel_p_57/ite… ・2つの公開鍵暗号(公開鍵暗号の基礎知識) qiita.com/angel_p_57/ite… ・公開鍵暗号に関するQ&A qiita.com/angel_p_57/ite… twitter.com/HiromitsuTakag…

2020-10-08 00:34:02
Hiromitsu Takagi @HiromitsuTakagi

ggrks。今はWebと検索エンジンという素晴らしい道具があるんだよ。昔はなかったんだ。 twitter.com/wahukusweet/st…

2020-10-08 00:17:15

ところが、どうも見ていると「秘密鍵から公開鍵を作れるなんておかしい!」という話になっているらしい。なんで??

加納裕三@bitFlyer @YuzoKano

RSAは秘密鍵から公開鍵を作成できません。 勘違いしていました。申し訳ございません。 twitter.com/YuzoKano/statu…

2020-10-08 09:14:59
angel (as ㌵㌤の猫) @angel_p_57

@pxfnc 大抵は秘密鍵から公開鍵作れますし、別に何の問題もないですよね。 一般の「公開鍵暗号 (電子署名含む)」で「秘密鍵から公開鍵作れるか」は、別に決まり事ではないし、どちらであっても特に意味はない、という感じ。 ※だからなぜ「秘密鍵から公開鍵作れる/ない」で盛り上がってるのかよく分からない

2020-10-08 12:56:37

話題としては、公開鍵暗号の中でもRSAにフォーカスしているらしい。( 加納氏自身が「RSAの話です」と言っている )
だけど、別にRSAだからと言って問題になるポイントではないはずなので考えてみる。

angel (as ㌵㌤の猫) @angel_p_57

なんだろう。RSAは確かに n=pq という素因数分解の困難さを拠り所にしている方式で、だから当然「公開鍵受領側」はp,qの値を知らないんだけど。でも、「秘密鍵保持側」は作成時に知ってるし、別に忘れなきゃいけないなんて義理もない。そこに錯覚がある人が結構いる?

2020-10-11 01:40:30
angel (as ㌵㌤の猫) @angel_p_57

日本語Wikipediaの「RSA暗号」の記事 ja.wikipedia.org/wiki/RSA%E6%9A… からして酷い。「pとqは安全に破棄すること」って、誰だよそんなこと決めたの。 pic.twitter.com/ALwFzadVb1

2020-10-11 01:42:22
拡大
angel (as ㌵㌤の猫) @angel_p_57

別に d と一緒に p,q を保管してても漏洩リスクについては変わらないわけで。 もちろん、p,qを使わないなら敢えて入れる必要はないんだけど、秘密鍵処理側ではp,qを有効活用できる。だから逆にわざわざ捨てる合理性がない。 ということで、通常のRSAでは p,q が秘密鍵に含まれる。

2020-10-11 01:44:07

なお、この辺の「p,qを有効活用できる」の話は、以前「公開鍵暗号の数的構造」という記事の「現実のRSA」でも取り上げている。
規格としては、RSAの規格であるPKCS#1に計算内容も載っていて、今の(といっても20年は前からの)RSAはこのp,qを有効活用した計算が一般的になっている。

angel (as ㌵㌤の猫) @angel_p_57

p,q を知ってれば d も使って e を割り出せるので、秘密鍵→公開鍵の計算が可能。 ※ n=pq の素因数分解が実現できたら秘密鍵が破られてしまうことの逆 なので、「フツーRSAでは秘密鍵から公開鍵を計算できる」となる。

2020-10-11 01:46:04
angel (as ㌵㌤の猫) @angel_p_57

ちなみに、楕円曲線暗号含め離散対数問題による方式は、大抵が秘密鍵 x に対して公開鍵 γ^x ( 楕円曲線での書き方的には xG か ) なので、これもやはり秘密鍵から公開鍵が作れる。 EdDSAはちょっと変則になるけど、それでもそんなに変わらない。

2020-10-11 01:50:52
angel (as ㌵㌤の猫) @angel_p_57

ということで、現行の主要方式では「フツー秘密鍵から公開鍵を作れる」になっちゃう。 ※もちろんそれは「公開鍵暗号の基本性質として秘密鍵から公開鍵を作れること」を意味しない …耐量子暗号もボチボチ出てきてるけど、それはどうだろ。流石に調べてないから分からない。

2020-10-11 01:52:43
angel (as ㌵㌤の猫) @angel_p_57

まあ、作れたからといって so what? な話ではあるんだけど。別に作れなくても困らないし。( 逆に作れること自体に問題もない )

2020-10-11 01:48:47

実際、秘密鍵から公開鍵を作れるかどうかは、話題としては非常にどうでもいい。
作れようと作れまいと、運用上は秘密鍵と公開鍵を同梱して1つの「秘密鍵ファイル」として扱うから。
それにRSAの場合、公開鍵データのeは固定値で運用するのが一般的だから、そもそも計算で求めるまでもない。

ではなぜ気にしているか、は次の動機による。

angel (as ㌵㌤の猫) @angel_p_57

@kaoru6 今回の件としては、加納氏でしたっけ、公開鍵暗号についてよくある認識違いがあって、それがまた流通するのは好ましくないんですけど、それ以上に批判側が的外れなポイントで盛り上がるのもやめて欲しいんですよね。 信頼が逆転して間違いが正当化されかねないので。

2020-10-11 02:49:52
angel (as ㌵㌤の猫) @angel_p_57

@kaoru6 元の加納氏の認識がどの程度かは、まあ、あまり期待はしてないですけど、「公開鍵から秘密鍵は作れない」の逆としての「秘密鍵から公開鍵は作れても良い(実情としては大体作れる)」だと見做して破綻がないので、突っ込むところじゃなかったよな、という感じです。

2020-10-11 02:51:57

つまり、簡単に言うと的外れな批判は迷惑なのだ。

で、その的外れな批判を見て思わずツッコミを入れてしまったんだけど、そこからの遣り取りが酷かった事例。
反面教師としては有用かと思うので、取り上げておく。