The Underhanded C Contest - The official perfectly innocent web page for law-abiding good guys

8月15日、第8回目となる「Underhanded C Contest」の開催が発表された。Underhanded C Contestはある簡単なデータ処理問題を解決するコードの開発を競うコンテストで、ソースコードはシンプルでわかりやすく、信頼が置けるように見えるものでなければならないとされている。このコンテストが面白いのは、素晴らしいソースコードの記述を競うように見せかけつつも、裏では悪意ある動作をするような機能を実装しなければならない点にある。

プログラミングには、逆コンパイルや逆アセンブラによるソースコードの解析を防いだり、スクリプトを人間が解読しにくい状態に変換したりする難読化と呼ばれる技術があるが、Underhanded C Contestの取り組みは難読化の方向性が真逆である。難読化ではシンボル名や変数名を無意味なものに置き換えたり、解析が困難になるような仕組みを入れたりすることで、視覚的に人間の理解を困難なものにするが、Underhanded C Contestでは人間に理解しやすい綺麗なソースコードを書きつつ、裏には悪さを働く機能を気づかれないように実装することを求めている。

第8回目の課題は、仮想の2カ国間で締結された核軍縮の取り組みを確実に進めるために開発された「Information Barrier」と呼ばれるプログラムを巡るもの。これは弾頭に核兵器が存在しているかどうかを判断するソフトウェアとされており、このソフトウェアにわからないように問題を仕込むといった内容になっている。

Underhanded C Contestでは、現実に存在する問題に基づいてコンテストを開催することで、こうした問題の複雑さや、こうした状況におけるベスト・コーディング・プラクティスの必要性への注目度が向上することに期待すると説明している。