盗聴や改竄から通信時に防御をするように、FrontBase によって、データを守るための、複数オプションが使えるようになる。こデータ保護手段としては、通信時やデータ格納時に、暗号化を適用したり、認証にパスワードを要求したり、コンピュータ・リストにblack/whiteの区別をつけることなどによって実現している。
パスワードによる保護
パスワードによる保護には、2つのレイヤーがある。データベース・パスワードと、ユーザ・パスワードである。
データベース・パスワード
データベース・パスワードが設定されると、クライアントは接続プロトコルの一部として、データベース・パスワードをサーバに送信しなければならない。サーバがパスワードを認識できない場合は、クライアント側リクエストによる接続が、ただちにクローズされる。
ユーザ・パスワード
各データベース・ユーザは、パスワードを持つことが許されており、パスワードは、該当ユーザに対するセッション開始時にパスワード認証を行う。もし、認証に失敗すると、セッションは作成されない。セッションが正しく作成されると、SQL92がプロテクション機能を引き継ぐ。
パスワードの一般的な扱い方
パスワードの長さに制限はなく、また、パスワードはクライアント側ソフトウェア以外の場所で、表示されることはない。たとえ、データベース内部においてでも、である。アプリケーションがパスワードをアプリケーションから、FrontBaseクライアント・ソフトに渡すとただちに、一方通行の関数がパスワード・ダイジェストを生成するために発行される。この関数は、パスワードのある部分を取り去るため、ダイジェストからパスワードを再現することは不可能である。ユーザ名は、ダイジェストの一部に組み入れられるため、2人のユーザが偶然同じパスワードを設定していたとしても、ダイジェストは同じものにはならない。パスワード・ダイジェストは、パスワードに代わる認証として用いられる。
暗号化
暗号化は、通信経路上やデータ格納時に、データを守るために使われる。FrontBase環境を生成するときに、オプションとして、機密保持のために、ディスク上のデータをストアする際や、サーバとクライアント間の通信経路上で、暗号化を適用するかどうかを指定できる。各オプションを指定する際に、暗号化キーを用意しなければならない。
データの暗号化
ディスク上にストアされたデータは、DESを三重に、512バイト・ブロック上で鎖状につながった暗号ブロックに対して適用することで暗号化される。というのも、データ・ストアされるブロックは、1ブロックあたり512バイトだからである。初期化ベクトルは、システム内におけるブロックの論理的位置に依存するため、同じコンテンツをもつブロックから、異なる暗号テキストブロックが生成されることは決してない。
データの暗号化に用いられるキーは、64ビットの初期化ベクトルで、DES暗号に対しては3x56のサイズとなる。
通信経路のセキュリティ
クライアントとサーバの間で、セキュリティを維持した通信経路を確立することができる。クライアントがサーバに接続する際、サーバからパブリックRSAキーを受け取り、クライアントがランダム・セッション・キー・セットを生成して、一部を送信するデータに、一部を受け取るデータに適用し、それらをパブリックRSAキーで暗号化して、結果をサーバに送るのである。サーバ側では、プライベート・キーを使ってクライアントからの結果を解読する。このようにして、クライアントとサーバ間で、共通の機密キー・セットを確立することが可能である。
通信データの暗号化に使われるアルゴリズムは、暗号文とクリア・テキスト・フィードバック(clear text feed back)に対するバイト・ストリーム・モードにおいてDESを三重にしたものである。クリア・テキスト・フィードバックは、1つのエラーが、そのエラー以降に続く全バイトに広がるようにするもので、冗長性は最小のまま、エラー検知を簡単に行えるようにし、受信終了の認証に対しても使われる。.
ツールとオプション
ツール中には、サポート・キー管理として供給されたものもあり、FrontBaseには、セキュリティに関連したオプションの数々が用意されている。
FBKeyGenerator
FrontBaseで使うことが可能なキー・セットを生成するときに使われる、キー・ジェネレータである:
FBKeyGenerator <RSA-key-bit-size> [<key-filename>]
key-bit-sizeは、1024から4096ビットまでの数字でなければならない。key-filenameが指定されると、キーは指定されたファイルに書き出され、ファイル名の指定がない場合は、標準出力に書き出される。各キー・セットは、識別用に割り当てられる。
キー・テキストの例:
FrontBase Key Generator Tue Dec 1 12:22:45 1998
Key ident:
DES disk keys:
iv(008):9f68d3d1 e25fb047
k1(008):a2dc2f97 7a1a9b5b
k2(008):f29ba4e0 346bea31
k3(008):16bf92f4 311cc834
RSA private key:
n(128):c7763cbb 9627ff8e 756173f8 2507257c
3b4c349f 0401cc49 8473dff6 9d61752c
020ba963 bd726d91 af249fd0 3b099e3a
543b701c aa26be06 48f7b277 3071db45
9607b9d5 69d2012b 6cc93b62 0536ef69
41b815ce 265e8933 df5ab416 916ee017
a23fe996 99212754 d1168f98 8ba78144
d92bb918 4e5c5c2b d140d79d 602e86ed
e(003):010001
d(128):a61baf84 410e5a63 1719eb6c 31d9fbbb
b3de48cc 4c97fabb 16d53124 bdf8158e
6abdaf79 62a1d2e1 ca4be3d3 93f6f490
7ae96cfa 5231257b 32752568 e12d507e
eed424dd dd3e377a a41f8aeb f7158cf7
e5388bf3 adfd2b1a 62bf2377 a1a49809
1d9c79f8 c4d1a25f 26b464da ddbd8e7a
cbb01ca5 847746c2 008821a0 84d93d79
p(064):f8a87b44 77c89ba2 9a70a505 a2618d8c
8814e4d1 e14a920d 868947b0 c10a0542
9477cf9f 7c46e6ed 7c094b8c 85a7f866
81b021c7 06eaa4d5 80c31473 27476b6f
q(064):cd59e60b dfdd7d65 5825ba48 86bcb5b6
7a469109 81bdcb91 4381aa21 83bfe3e5
4db26077 b2001209 e916547a 084dcf2b
299ae74d 5f0fe010 535a1376 bdce3563
dmp1(064):f45a0c98 61e59f1b 910cf4fd ae6e92fc
f09527af 1fe779d3 14cc3ec8 f149f995
4df4d6f0 f0dd73fd 1810c24f 1ae0cf77
5c264b6b 1bdee590 717242dc 4e531ebd
dmq1(064):2e77bf54 c48dac48 788fe0fd 746fd376
bd68a67d 4e3c928a 068a9ae3 069b2f88
bdf2355e 208b5f89 9a9310fe a44e6728
cf3b5c47 e7d101d4 efe79c2b ec7b731d
iqmp(064):8fe8b77c 53069c4d 020c2b98 c8fedf59
5381e3a6 8d437b03 f2950da7 c7d6927b
ef7b2ea1 e2f17add c5717232 f83bbdcd
fa373d94 5fc066f3 4453df6d c1250d7a
FBKeyGenerator
FrontBase には、3種類のセキュリティ・オプションがある:
-scomm
サーバとクライアント間の現在の通信にセキュリティを確立する場合。
-sdisk
現在のデータをディスク上にストアするとき、セキュリティを確立する場合。
-keys=<file-name>
指定された名前のファイルから、キーを読み取る場合。
-sdiskあるいは-scommのどちらか、あるいは両方が指定された場合、サーバは、オペレータにキー・セットを要求する。 -keysが指定されると、キーが指定された名前のファイルから読み取られ、指定がない場合は、標準入力からキーを読み取る。サーバが起動すると、指定されたものが、正しく要求されたとおりのキーであるかをチェックする。
FBChangeKey
FBChangeKeyツールは、まだ暗号化されていないデータベースの暗号化や、暗号化に用いられたキーの変更、暗号化されたデータベースの解読に使うことができる。
FBChangeKey <database-file> [<keys-filename>]
キーが指定されていない場合、標準入力からキーを読み取る。キーを指定すると、暗号化されていないデータベースの場合、データベースは暗号化される。もし、暗号化されたデータベースの場合は、逆に解読される。2種類のキーが適用されると、古い方のキーでデータベースが解読され、新しい方のキーで、データベースが最暗号化される。2つのキーは単純に、2つのキーをテキストとしてつないだものとして作成される。このツールはキーの正当性をチェックするので、キー・テキストの並べ方について、新旧どちらを先にすればよいかといったことは大きな問題ではない。
IP アドレス・チェック
クライアントがFrontBaseサーバに接続したとき、クライアントのIPアドレスをチェックして、black and whiteリストと照合する。もし、IPアドレスが、ブラックリストに掲載されている場合は、接続拒否する。IPアドレスが、ホワイトリストに属する場合は、接続を受け入れる。リストは、ホワイトリスト、ブラックリストのどちらにもなるように、アレンジできる。IPアドレスがホワイトリストに含まれている場合、そのIPアドレスに対して、セキュリティを確立した通信経路を要求するよう指定することも可能である。ほとんどの場合、ローカル通信の場合については、暗号化なしでアクセスを許可しているだろう。
関連するオプションとしては、-localonlyオプションがある。これは、FrontBaseに対し、FrontBaseサーバと同じホスト上で稼動しているクライアントからの接続を許可するものである。 |