[PHP-users 15537]Re: 個人情報保護の方法について
Osamu Shigematsu
m5issige @ mr.hitachi-medical.co.jp
2003年 5月 29日 (木) 16:30:53 JST
重松です。こんにちは。
> 秘密鍵を使って暗号化した住所などを復号化するには公開鍵に
> よって暗号化されたユーザー別に保存されている秘密鍵を復号
> して使わないと暗号化されたユーザーデータは復号化できない
> んですよね?
混乱しているようですね。
鍵は全部で 3 つあります。
(1) 対称鍵暗号の秘密にしないといけない鍵 A
(2) 公開 (非対称 )鍵暗号の公開しても良い鍵 B
(3) 公開 (非対称 )鍵暗号の秘密にしないといけない鍵 C
データ保存の流れは以下の通りです。
# 当初のものよりもかなりシンプルにしてみました。
(1) ユーザが入力したパスワードを鍵 A とする。
(2) 鍵 A を用いて、秘匿すべき個人情報を暗号化する。
(3) 鍵 A も秘匿しないといけないので、鍵 B を使い暗号化する。
(4) 鍵 A のハッシュ値も記録しておく。
ユーザによるデータ復号の流れは以下の通りです。
(1) ユーザが入力したパスワードから、ハッシュ値を求め、
データベースのそれと比較する。等しくないなら処理異常終了。
(2) (1) が正常に処理されれば、入力されたパスワードを鍵 A とする。。
(3) 得られた鍵 A でデータを復号することができる。
ユーザがパスワードを忘れたら、あなたの秘密鍵を使えば、
解読できます。
が、今回は説明を単純にするために、パスワードをそのまま記録しましたが、
ユーザのパスワードは使いまわす人がいると思いますから、
その人のためにも、そのまま鍵として使わない方がいいと思います。
そのような場合には、新しいパスワードを生成して、
登録メールアドレスに送信するような方法が考えられます。
--
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>
PHP-users メーリングリストの案内