[PHP-users 23773] Re: DB の暗号化について
Ryuzo KOSAKI
kosaki @ fip.fujitsu.com
2004年 12月 1日 (水) 16:17:51 JST
こさきです。
"[PHP-users 23770] Re: DB の暗号化について" の記事において
tom @ asakawa.ne.jpさん は書きました。
>80番を通す様な、FWの場合,80番経由の攻撃に対しては、無力だと思いますけど.
>もちろん、高度なFWの中には、そういう攻撃パターンを読む様なものもあるとは思
>いますが.
パケットのパターンでブロックする、というFWはけっこうありますね。
(高いけど)
また、FWをちゃんと設定しておけば、Webサーバを乗っ取られてもそこ
から外に攻撃に出られないってことが大事。
>また、裏セグメントの場合,WWWサーバからは、どのみち、DBサーバが見え
>てるのですから
>WWWサーバを乗っ取られてしまえば、FWが、あろうとなかろうと、同じです.
>FWが無くてもいいというより、有っても無駄ってことです.
たとえばWeb->DBに向けては5432番だけしか通さない設定にしておけば、
その先に行けるかどうかの難易度が違うでしょう。
(そうは言ってもこちらにFWを設置することはほとんどないですが)
元の暗号化の話にもどりますと「データベース(行全体)の暗号化」と
いうのは検索などの問題が出ますが「列の暗号化」は意味があるでし
ょう。
よくあるのは、個人情報ではなく「4桁の暗証番号」のようなもので
すね。普通のパスフレーズのようなものならばmd5などでhash化しても
(暗号化ではない)探るのは難しいでしょうが、桁数の決まった暗証番
号のようなものはすぐわかります。
Webサーバ上でphpを使った公開鍵を使用した暗号化ですが、たとえば
GnuPGをproc_open()で呼び出せば実現できると思います。実用になる
かどうかは別として。proc_open()のマニュアルに載っていたサンプ
ルをこんなにすると動きます。
<?php
$himitsu="himitsu no mojiretsu";
$encrypt="";
$spec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "/dev/null", "w")
);
$proc = proc_open("gpg -ea -r recipient", $spec, $pipes);
if (is_resource($proc)) {
fwrite($pipes[0], $himitsu);
fclose($pipes[0]);
while(!feof($pipes[1])) {
$encrypt .= fgets($pipes[1], 1024);
}
fclose($pipes[1]);
proc_close($proc);
}
?>
>> セキュリティのことをどのレベルまで考えるかって話です
>> ね。間抜けなシステム管理者もいるでしょうし。
>
>間抜けな管理者でもOKな様な、そんなに凄いFWが普通なのでしょうか?
>とてもそうは思えませんが.
そんなすごいものじゃなくても、普通にきっちりセットしたFWがあれ
ば、間抜けが管理者のおかげでサーバを乗っ取られてもspamまき散ら
しマシンなどにならずに済んだりします。別にOKというわけではなく
って、「どのレベルまで考えるか」ということですね。
PHP-users メーリングリストの案内