キモブロ

Please spy check please, Fucking retard

どうしても生パスワードをDBに保存しなければならないときにどうすべきか

について考えていた。たとえば外部のAPIのパスワードとか。今だとこういうのはOAuth2とかを使ってやればいいんだろうけど、古い外部システムなので普通にuser/password方式なのでそれが出来ない。つまりDBにどうしてもそのまま生パスワードを保存する必要がある。

普通にAES + システム固有のパスワード + レコードごとのsaltで暗号化しようかなと思ったけど、

  1. システム固有のパスワードをソースコード(or 設定ファイル)のどこかに書き込まざるを得ないため結局サーバー乗っ取られたら解読される
  2. 1. の理由により、レコードごとのsaltをつけたとしても、解読するぶんにはO(1)の計算量で終わるよね。ちょっとした嫌がらせ程度にしかならない、そして意味が無い

ということで生パスワードでそのまま保存したほうが良いのではと思った。


追記:
あーでもこの方式でのメリットを上げるとしたら、DBサーバーとWEBアプリサーバーの間の通信を監視されていた場合に平文でパスワードが流れないことってことかな。うーん実質そんなことほぼないし、ほとんど意味無いような。外部のVPSサービスとか使ってたら意味ありそうだけど


追記2:
あーいや逆に考えればそういう環境で使われても大丈夫なように設計しておくってのがいいのかもな