2014-04-11

なぜTheo de RaadtはIETFに激怒しているのか

本の虫: OpenBSD、怒りのコミットで、OpenBSDのTheo de RaadtがIETFに対して激怒している。

src/lib/libssl/ssl/Makefile - view - 1.29

SegglemannのRFC520 heatbeatを無効化。

あのまともなプロトコルひとつ制定できないIETFの無能集団が、超重要なプロトコルで64Kの穴をこしらえるとか、マジであきれてものも言えねーわ。奴らはマジこの問題を本気で検証すべきだろ。なんでこんなことをしでかしたのか。こんな事態を承認した責任ある連中を全員、意思決定プロセスから取り除く必要がある。IETF、てめーは信用なんねぇ。

なぜTheo de Raadtは、OpenSSLではなく、IETFに対して激怒しているのか。IETFというのは、インターネット上の規格制定の団体である。今回、世上を騒がせているHeartbeat問題は、Heartbeatの実装のうちのひとつ、OpenSSLのバグのために引き起こされている問題である。設計上の問題ではない。なぜTheo de RaadtはOpenSSLを放置して、IETFを問題にするのか。これはいったいどういうことだ? ひょっとしてTheo de Raadtはバカなのか?

もちろん、Theo de Raadtはバカではない。もとより、あのTheo de Raadtである。どんなに人格的に彼が嫌いな人であろうと、Theo de Raadtの能力は認めざるを得ない。彼は問題の核心を指摘しているのだ。

Heartbeatと呼ばれているこの機能は、具体的には、RFC 6520 - Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension(TLS/DTLS Heartbeat拡張)のことである。このTLSに対する拡張は、TLSにkeep-aliveの機能をもたらすものである。

ではなぜTCP keep-aliveではだめなのか。たいていのOSでTCP keep-alive間隔があまりに長時間に設定されているためか。それなら必要であると感じるものだけがOSの設定を変えれば良い話だ。なぜわざわざ同等機能の規格を重複して作るのか。そもそも、大多数の一般人にとって必要なのは、もっと上のアプリケーション層でのKeep-alive実装ではないのか。

このHeartbeatという機能は、基本的に誰からも必要とされておらず、事実、さっくりと無効にしても誰も困らない機能である。だからOpenBSDでもさっくりと無効にした。なぜそんな誰からも必要とされていない無用の機能を規格化するのか。規格化された以上、規格準拠のソフトウェアは実装しなければならない。新しく実装した機能には不具合が含まれる可能性が高い。誰からも使われない機能は、不具合が発見されにくい。無駄な機能を規格化するとは、いったいIETFは何をしているのか。

Hacker Newsでは、この背景事情を解説するコメントが投稿されている。

There are smart people working in the TLS WG, but there are also people there th... | Hacker News

TLS WGには頭のいい奴らもいるが、同時に、このインターネットの最高に重要な暗号通信を制定する資格のない奴らも多くいる。

さらに、ワーキンググループは、新機能に対してイエスと答える傾向が高い。否定論者こそ必要とされているのに。Heartbeat機能はこの問題の明らかな例だ。リファレンス実装がやっつけ仕事すぎるからだ。

そもそも、TCP TLS heartbeatを無効にしたという事自体に、もっと非難の声が上がるべきなのだ。誰も必要としていないし、だれも作ってくれと頼んでいない機能なのだ。なんで最初からデフォルトで無効になっていないのだ? デフォルトで有効であることに、いったいどんな意思決定がなされたのだ?

I have read all the TLS WG discussions I can find on this RFC. The picture that... | Hacker News

俺はRFCで探せる限りのTLS WGを全部読んでいるが、これはワーキンググループ事態の根本的な失敗だ。

俺の知る限り、「これ必要ないだろ」という主張をしたのは、たったの一人だ(GnuTLSの主要開発者のNikos Mavrogiannopoulos)。彼はこの機能が必要だという理由を提出しろと三度も要請した[0][1]。返事は二件、どちらも同一人物からの返答だ。これ以降、議論は一切ない。つまり、彼の反対意見は解決されたか、これ以上の議論は非建設的だと判断されたかのどちらかだ。いったいどちらなのか、非常に気になるところだ。GnuTLSではheartbeatが無効にされている。つまり、Nikosはこの機能に未だに価値を見出していないということだな。

しかし、このドキュメント[訳注: RFC6520か?]は、今ここで名前を挙げて辱めることはしないが、多くのセキュリティ専門家が関わっているのだ。彼らは皆、反対意見を出さずに、検証し、コメントを出し、ドキュメントを編集したのだ。

思うに、このワーキンググループの性質として、ある機能が欲しい勢力は、その機能が、ひょっとしたら、悪く実装されて脆弱性をもたらし、無関係の被害を被るような、大多数の勢力より、強い影響力を持つようだ。どうも逆NIMBYな状況だな。ソフトウェアコミュニティは、ぽこぽこ生まれるすべての新しいTLS提案に反対するだけの暇はないが、ボクの考えた最強の機能の標準化を押し通そうとする勢力には暇があるわけだ。

[0] : IETF - TLS - tsv-dir review of draft-ietf-tls-dtls-heartbeat-01

[1] : IETF - TLS - Working group last call for draft-ietf-tls-dtls-heartbeat-02

標準化のためのワーキンググループというのは、不思議な場所だ。標準化のための権力を持っていながら、提案されている規格に対する詳細な知識や理解を持たないものが大勢いる。これには仕方のない部分もある。あらゆる分野の専門家たることはできない。Theo de Raadtのような例外的存在を別にすれば、専門家たろうとすれば、専門範囲は狭く深くなる。したがって、自分の専門分野以外は素人同然というのは、不思議なことではない。

問題は、それでもワーキンググループのメンバーである以上、様々な提案の採決に意見表明しなければならない。自分の専門ではない分野は、自然と肯定に回ってしまう傾向がある。

否定論者は必要である。ワーキンググループのメンバーにすら、提案された新機能の必要性を説得できなければ、いったいどうやって世界中の利用者に価値を説得できるというのか。

ドワンゴ広告

この記事は、前の記事とは違い、ドワンゴ勤務中に書かれた。前の記事は自宅で書き、この記事は15時頃(ドワンゴ定義ではそろそろ昼飯時、部署によってはまだ朝)出社して書いた。どうやら勤務中でもやることは変わっていないようだ。

今夜は社内でボードゲームをする予定であるので、なおさら変わっていない。最近、To Court The Kingというとても面白いゲームにハマっている。

ドワンゴは本物のC++プログラマーを募集しています。

採用情報|株式会社ドワンゴ

CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0

3 comments:

Anonymous said...

> SegglemannのRFC520 heatbeatを無効化。

RFC 6520 ですね

江添亮 said...

原文通りです。

sakamoto said...

(sic) なり (ママ) なり付けると良いのではないでしょうか