2009年3月12日から15日までの4日間、東京において「AsiaBSDCon 2009」が開催された。本誌では、同カンファレンスの中から特に興味深いセッションをピックアップしてお伝えする。

暗号処理ハードウェア

Philip Paeps氏 - FreeBSD committer & core team secretary

暗号処理は集積回路として実装しやすいように設計されることが多い。このため暗号処理は専用のチップや回路が用意されていることも多く、M/Bに搭載またはCPUにすでにそうした回路が内臓されていることもある。インターネットにおけるサービスの多くは暗号処理の活用を安全な通信の要としており、利用シーンは増え続けている。

暗号処理は計算処理を必要とする種類に分類される。このためH/W的に実装された暗号処理を活用することは、システム負荷を軽減し処理を高速化するうえでひとつの有益な方法となっている。特に組み込みH/WのようにCPUの計算能力が低い場合、暗号処理チップを使って処理を行うことで実行速度的に大きな利益を得ることができる。

AsiaBSDCon 2009においてPhilip Paeps氏がFreeBSDにおける暗号処理と暗号処理H/Wの利用について現状を報告するとともに、今後の方針を紹介した。組み込み採用が進んでいるFreeBSDにとってH/Wを利用した暗号処理の高速化は注目のトピックだ。Philip Paeps氏はベルギーで組み込み系のコンサルティング業務や開発業務に従事している。FreeBSDコミッタであると同時にFreeBSDコアチームにおける書記官役も担当している。

opencryptoフレームワーク

FreeBSDはOpenBSDから移植した「opencrypto」フレームワークをベースとして暗号処理をまとめているとPhilip Paeps氏。カーネルランドでみればGELIやZFS、IPSecがopencryptoを使っており、ユーザランドでみればOpenSSLエンジンと呼ばれるOpenSSLのH/W活用機能がopencryptoを使っている。フレームワークを使うことで重複した開発を減らせるという効果がある。opencryptoはもともとAngelos D. Keromytis氏がOpenBSD向けに開発したもので、2002年にSam Leffler氏によってFreeBSDへ移植された。

opencryptoフレームワークは暗号処理のための包括的なインターフェースを提供する。大きく分けてカーネル内部でドライバインターフェースとコンシューマインターフェースを提供しているという。ドライバはH/Wに対応するものとS/Wに対応するものがあり、ユーザランドにおいては/dev/cryptoとしてH/Wへのアクセスと、libcryptoライブラリを提供している。

ドライバでセッション情報や設定をキャッシュするためのセッションモードがあるほか、キーイング処理向けにセッションレスモードも用意されている。セッションモードではコンシューマが複数のセッションを作成し、ひとつのセッションとしてチェインできるようになっている。なお処理は非同期に実施されるため、リクエスト完了時に呼ばれる関数を用意して登録するといった使い方をする。今のところサポートされているハードウェアはAMD、Broadcom (Bluesteel)、Hifn、SafeNet、VIAが提供している暗号処理H/Wなど。

The opencrypto Framework - Architectural Overview