Jane Streetのリバースエンジニアリング課題を解いた顛末

原題: Solving the Jane Street reverse engineering challenge

なぜ重要か

金融機関がASIC設計を内製化する動きが広がる中、回路リバースエンジニアリングの実践的な手法と課題の難易度を示す事例として注目される。

個人ブログ「jestoph's tech blog」の著者が、金融大手Jane Streetが公開したASICリバースエンジニアリング課題に挑戦し、約1か月を費やして解法を見つけた過程を2026年9月4日に公開した。GDSファイルから回路を解析し、独自の回路シミュレーターを自作するなど試行錯誤の詳細を技術的に解説している。

Jane Streetは定期的にエンジニアリング課題を公開しており、今回の課題はASIC(特定用途向け集積回路)のGDSファイルを与えられ、そのチップが何をするものかを逆解析するというものだった。課題にはウォームアップ編(設計情報あり)と本編(ほぼ情報なし)の2段階が設けられていた。

著者はまず事前調査をせずにファイルを直接調べ、Pythonライブラリ「gdstk」でGDSファイルを読み込み、ウォームアップ用ファイルに27個の要素が含まれることを確認した。sky130_fd_sc_hd__というプレフィックスを持つ論理素子(orやnotなど)が含まれており、これを手がかりに解析を進めた。

本編のファイルにはVCD形式のシミュレーション入出力ファイルも含まれており、著者が自作のCプログラムで解析したところ「TRY AGAIN」というASCII文字列が出力され、回路内にメッセージが埋め込まれていることが判明した。

解析の過程で著者は「正攻法ではなく遠回りな方法」を選び続けた。SQLite3をバックエンドとした独自の回路シミュレーターを数日かけて構築し、さらにハードウェア記述用の独自言語とそのパーサー、テスト用ハーネスも自作した。波形ビューアーの自作は途中で諦め、既存ツール「surfer」を採用した。こうした一連の寄り道に1か月近くを費やし、それでも最終的に課題を解いた経緯をブログにまとめた。各ステップの詳細については今後の投稿で解説予定としている。ソースコードはGitHubで公開されている。

出典

jestoph.com — 元記事を読む →