「多少なりともまともなセキュリティエンジニアの唱えるべき呪文とは:『セキュリティというのは製品ではなくプロセスなんだ』ということ。単に、強い暗号方式をシステムに組み込むだけじゃすまない。システム全体の設計にあたって、暗号方式を含むあらゆるセキュリティ手段がいっしょに働くよう設計するということだ」
-- Bruce Schneier, "Applied Cryptography"著者.
なぜ暗号つきで出荷するの?
OpenSSH.
疑似乱数発生装置 (PRNG): ARC4, ...
暗号化ハッシュ関数: MD5, SHA1, ...
暗号変換(Cryptographic Transforms): DES, Blowfish, ...
暗号化ハードウェアのサポート
国際暗号学者求む
追加読み物
それは一言で:出荷できるから。
OpenBSD プロジェクトは、カナダが本拠地です。
カナダ輸出規制一覧は、暗号ソフトの輸出に 特に制限をつけていないし、自由に手に入る暗号ソフトの輸出が自由である ことについては、もっとはっきり明記してあります。 暗号関連法規を 検討する研究は、Marc Plumb が行っています。
おかげで OpenBSD プロジェクトは、オペレーティングシステムの随所に 暗号を仕込んであります。われわれとしては、使う暗号はすべて 自由に入手できてライセンスも適切でなくては ダメです。いぢわるな特許つきの暗号は、直接使えません。さらに その暗号ソフトが、まともな輸出ライセンスを持った国からのもので あることが必要です。どこの国の法律も破りたくないからです。いま われわれが使っている暗号ソフトコンポーネントは、アルゼンチン、 オーストラリア、カナダ、ドイツ、ギリシャ、ノルウェー、スウェーデン で書かれたものです。
OpenBSD のリリースやスナップショットをつくるときには、リリース用バイナリは フリーな国でつくります。ユーザに提供されるソースやバイナリが、ケチの つかないものであるのを確実にするためです。過去のリリース用バイナリは、 カナダ、スウェーデン、ドイツで作られています。
OpenBSD は Kerberos IV を含んでいます。われわれの使うコードベースは、 輸出規制のない KTH-ベースのリリースでスウェーデンからのものです。われわれの X11 ソースも、Kerberos IV を使うように拡張されています。Kerberos V サポートは 2000 年のどこかで採用されるでしょうが、現時点では、自由に輸出可能な Kerberos V リリースは存在しません。
OpenBSD は、IPSEC スタックつきで出荷された初のオペレーティングシステムでした。IPSEC は、ごく初期の1997 年の OpenBSD 2.1 リリース以来含まれています。
われわれの、完全準拠のカーネル内 IPSEC スタックは、多数のカードに基づくハードウェアアクセラレーションつきだし、われわれ独自のフリーの ISAKMP デーモンと
いっしょに
VPNCの IPSEC 準拠試験のためのマシンの一つでも使われています。
今日、暗号はオペレーティングシステムのセキュリティを高める方法としてだいじです。OpenBSD で使われる暗号は、いくつかの側面に分類できます。以下に説明しましょう。
OpenBSDをインストールして、みんながまっ先にやることはなんでしょうか。それは Secure Shell (ssh) を FTP サイトのports のツリーや packages からインストールすることです。少なくとも、いままでは。
2.6 リリースをもって、OpenBSD には OpenSSH が含まれます。完全にフリーで特許のしがらみもないバージョンの ssh です。OpenBSD 2.6 リリースの日には、 OpenSSH は ssh バージョン 1 と相互運用できて、さらにいろいろ追加機能を持っていました。
おおまかに言って、われわれは ssh のフリーライセンス版リリースをもってきて、それを OpenBSD化した、というわけです。アメリカ本拠の RSA 特許は、libcrypto とlibssl共有ライブラリを含む、RSA を使ったパッケージを自動的にダウンロードしてインストールする簡単な手法を提供することで切り抜けています。これらのパッケージは、OpenSSL に基づいています。アメリカ以外にすんでいる人たちは、自由に RSA 特許のコードを使えますし、アメリカ国内の人たちは、非商業目的であれば、それを自由に使えます。どうやら、アメリカ国内の企業でも RSA ライブラリをフリーで使ってかまわないようです。RSAそのものが、収益をあげる役割を果たしていなければいいようです(訳注:2000年9月6日に、RSA社はこの権利を放棄しました。アメリカ国内でも、いまでは自由にこのコードが使えます)。
でもこのやりかたで、ほとんどみんながOS に ssh を組み込めることになります。
速報! OpenSSH はプロトコル 2.0をサポート!
最近になって、われわれは OpenSSH を拡張して SSH 2 プロトコルも扱えるようにしました。主要なssh プロトコルを 3 つとも(1.3, 1.5, 2.0) すべてこなせる ssh デーモンがあるということで、柔軟性がきわめて高まります。プロトコル 2.0 は、公開キー暗号に RSA を使わず、 DHと DSA アルゴリズムを使っています。OpenBSD 2.7――これは新しい
OpenSSH つきで出荷されます――では、そのままですぐにプロトコル 2.0 のサポートが得られるわけです! もしプロトコル 1.3 と 1.5 のサポートもほしければ、単に
RSA パッケージをもってきて (やり方は、われわれの
ssl
man ページ参照)、デーモンを再起動するだけです。
疑似乱数発生 (PRNG) ソフトは、アプリケーションに一連の数字をわたします。この数字は、システムのセキュリティ上、いくつか重要な特徴を持っています;
PRNG はふつう、同じ初期値から始めれば同じ出力シーケンスが出てくるアルゴリズムにすぎない場合が多いのです。マルチユーザのオペレーティングシステムでは、PRNG にランダムなデータでシードを与えるためのソースがたくさんあります。OpenBSD カーネルは、マウスのインタラプトタイミングやネットワークデータのインタラプト応答時間、キーボードの打鍵間隔や、ディスク IO 情報を使って、エントロピープールを満たそうとします。乱数は、カーネルルーチン用に提供されていて、デバイス経由でユーザ領域のプログラムに輸出されます。いまのところ、以下のようなところで乱数が使われています:
ハッシュ関数は、入力データを圧縮して、一定サイズのストリングにします。暗号化ハッシュ関数においては、次のようなものを見つけることは不可能か非常に困難となります:
OpenBSD では、MD5, SHA1, RIPEMD-160 が暗号化ハッシュ関数として使われています。たとえば以下のような場面で
暗号変換は、データの暗号化と復号に使われます。これらは、データ暗号化用には暗号キーを使い、データ復号用には復号キーを使います。暗号変換のセキュリティーは、キーとなる材料にのみ依存するはずです。
OpenBSD は、DES, 3DES, Blowfish、Cast などの暗号変換方式を、カーネルやユーザ領域のプログラム用に提供しており、これはいろいろな場所で使われています。たとえば:
OpenBSD は 2.7 より、アクセラレータや乱数発生装置など、一部の暗号化ハードウェアのサポートをはじめました。
もちろん、われわれのプロジェクトは、こうしたシステムの作業をしてくれる人々を必要としています。もしアメリカ以外の暗号学者で、これまで挙げた制約条件を満たす人が OpenBSD 組み込み暗号の手助けをしてくれる気があるなら、ぜひ連絡ください。
OpenBSD チームメンバーは、OpenBSD のセキュリティ関連の変更について、いろいろ論文を書いています。これら文書の postscript 版が以下で手に入ります。
www@openbsd.org 翻訳上の問題はhiyori13@alum.mit.edu
$OpenBSD: crypto.html,v 1.67 2000/09/12 21:03:10 deraadt Exp $