先日、UbuntuにOpenVPNをインストールしようとしたときのこと。
> sudo apt-cache search openvpn
としてみると、
openvpn-blacklist - list of blacklisted OpenVPN RSA shared keys
というのがありました。openvpnのblacklistって???
クレジットカード等のブラックリストはイメージできますが、
OpenVPNでブラックリストと言われてもピンときません。RSAの鍵と関連があるようですが。
というわけで調べてみました。
こちらのサイトDebian, Ubuntu等に限定したOpenSSLの脆弱性によれば、
UbuntuのOpenSSL(OpenVPNも)には最近までセキュリティの問題があり、問題のあるバージョンで生成された鍵が脆弱なんだそうです。
そこで、Ubuntu(Debian)ではblacklistというパッケージを作り、そのような脆弱な鍵を作り直してください、ということらしいです。
詳細は上記サイト(とその関連ページ)に譲るとして、いったんそれぞれのシステムで作られた鍵を入れ替えないといけないというのは、かなりキツイですね。
この不具合はメモリリークをとる作業の中で発生したということで、初歩的ですがありがちな原因なだけに、システム開発に携わるものとしては他人事とは思えません。
ちなみに、OpenVPNとはまったく関係ありませんが、このようにブラックリストの情報を受け取って
有効でない情報を排除するやり方は、いろいろなシステムで利用されています。
ICカードタイプの自動改札やTaspoの自動販売機など。
これらのものは、使われたカードが有効であるかどうかを瞬時に判断するために、カード自体に含まれる認証情報の他に
「無効カードとして登録されたカードでないかどうか」
を調べます。
有効なカードの方が出回っている数が多いので、有効なカードと一致するか調べるよりも一部の無効なカードと一致しないかどうかを調べる方が早く済むのです。
もしカードを紛失しても、そのカードを無効なカードとして登録しておくことで、誰かに拾われても使えないというわけです。
こちらのサイトによれば、Taspoでは1日1回、センターに登録された無効なカード情報を自動販売機に取り込むらしいです。
少なくとも1日1回のセンターからの情報を受け取るまでは、ひろったTaspoが使えるということになります。
なお、Suicaの紛失時の処理についてはここを参照。オフィシャルではありませんが。
ただ、ここまで書いてひとつ疑問。無効カードは永遠に無効カードとして登録されると思うので、
システムが長期間運用されると無効カードがどんどん増えていって、有効カードよりも多くなると思うのですが、どうしているんでしょうね。
オフィシャルな情報はないと思いますが、自分が仕組みを作る立場ならどうするかを考えると頭の体操になりそうですね。