アップデートバイナリが、さらに小さく

Chromeがバイナリ差分で新アルゴリズム実装

2009/07/17

 グーグルのChromeチームは7月16日、Chromeの自動アップデートで使われるバイナリアップデートに新たなアルゴリズムを実装したことを明らかにした。実際の例として、実行形式のフルアップデートで10MBの容量が必要だったものが、従来の差分方式で704KB、今回発表した新方式では78KBにまで縮小したという。

 Chromeには自動アップデートの仕組みが組み込まれており、脆弱性の報告などがあると、これに対応するパッチを当てたバージョンをChromeユーザーにプッシュすることができる。これにより攻撃者が脆弱性を利用する時間が短くなるため、安全性が高まる。

chrome01.png グーグルが公開している各ブラウザのバージョンアップ適用率の時系列での推移(出典

 セキュリティパッチなどは、ソースコードレベルで数行の変更であることも多いため、新バージョンの実行バイナリを丸ごとユーザーに送りつける代わりに、差分だけ送ることで転送量を抑えることができる。これまでChromeチームではbsdiffと呼ばれるバイナリ向け差分ツールを使っていたが、今回これを「Courgette」(ズッキーニ)と呼ぶ新アルゴリズム採用のものに置き換えたという。

 コンパイル済みの実行バイナリは、ソースコードを数行変更するだけで大きく変化してしまうという問題があったという。これはコンパイラがバッファオーバーランを防止するために挿入するコードによって命令列が大きく移動してオフセットがずれるため。これを解決するためCourgetteでは、コンパイル後のバイナリ間で差分を取るのではなく、いったん原始的なディスアセンブルを行って、内部ポインタをシンボルに戻して、それをベースに差分を取るという。

 Chromeチームでは、ユーザー側にプッシュする差分データがより小さくなることで、脆弱性の存続時間を短くできるとともに、帯域の限られた接続環境のユーザーには、よりよいユーザー体験をもたらすことができるとしている。

(@IT 西村賢)

情報をお寄せください:



Security&Trust フォーラム 新着記事

注目のテーマ

Security & Trust 記事ランキング

本日 月間