RSAが解読可能になった時の危機

旧聞になるのだが、巨大な合成数素因数分解を高速に行うアルゴリズムが発見されRSAの安全性が崩れたという話と、それは誤報だったという話があった。もし本当だったらどんな影響があったのか。

RSA公開鍵暗号とデジタル署名両方に利用可能なのだが、現在、公開鍵暗号としてはほとんど利用されていない。おそらくPGPぐらい。ハイブリット暗号における公開鍵暗号のポジション(鍵交換)はディフィー・ヘルマン(DH)鍵共有に取って代わられつつある。ゆえに公開鍵暗号に与える影響は限定的。

ヤバいのはデジタル署名である。デジタル署名はインターネットの信頼を支える基盤技術だ。TLSの証明書やSSHの公開鍵なんかはコレ。で、何がヤバいかというと今ある信頼されたTLSルート証明書は全てRSAのデジタル署名であるということ。

もし報告が本当だったならば、RSAの公開鍵から秘密鍵を求めることが可能になっていた。RSAの公開鍵は2つの素数合成数で、秘密鍵はその2つの素数だから。これは誰でも本物のTLSルート証明書秘密鍵を入手可能という事を意味する。本物と区別がつかない偽のサーバ証明書が発行し放題。現存する全てのサーバ証明書が信頼できなくなる。

サーバ証明書が信頼できないという事は、通信相手が本物なのかフィッシングサイトなのか判別する手段がないという事だ。ウェブサイトでパスワード入力なんて怖くてできない。インターネットの取引は何も信頼できなくなる。

これはRSAルート証明書を全て無効にし、ECDSA署名の証明書に入れ替えて対処すれば良いのだが、問題はその方法だ。オンラインの通信相手を信頼するための手段が壊れているのでオンラインアップデートができない。各自手動でルート証明書をアンインストールして、物理媒体で新しいルート証明書を配る必要がある。証明書を更新できない組み込み機器や古いスマホなどは軒並み危険な機器となり終了。

今の時代にそんなことやってられません。本当に誤報で良かったと思う

aptの公開鍵を /etc/apt/trusted.gpg.d に設置する

apt update時にyarnのリポジトリがエラーを吐く件の続き

Ubuntu 18.04にも/etc/apt/trusted.gpg.dディレクトリは存在する。ここにgpgの公開鍵を置けば動きそうだ。

しかしhttps://dl.yarnpkg.com/debian/pubkey.gpgからダウンロードした鍵ファイルを設置しても認識しない。拡張子をascに変更してもだめ(man 8 apt-keyにはascでもOKと書いてあるがダメだった)。dearmor(武装解除?)する必要があるらしい。

$ curl https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor > yarn-keyring.gpg

dearmorした鍵を /etc/apt/trusted.gpg.d/ に移す

$ sudo mv yarn-keyring.gpg /etc/apt/trusted.gpg.d/
$ sudo chown root:root /etc/apt/trusted.gpg.d/yarn-keyring.gpg

確認

$ apt-key list 

# 省略・・・

/etc/apt/trusted.gpg.d/yarn-keyring.gpg
---------------------------------------
pub   rsa4096 2016-10-05 [SC]
      72EC F46A 56B4 AD39 C907  BBB7 1646 B01B 86E5 0310
uid           [  不明  ] Yarn Packaging <yarn@dan.cx>
sub   rsa4096 2016-10-05 [E]
sub   rsa4096 2019-01-02 [S] [有効期限: 2023-01-24]
sub   rsa4096 2019-01-11 [S] [有効期限: 2023-01-24]

apt keyとして認識されたようだ。