質問: Laravel5.6 mysql Ver 15.1 Distrib 5.5.56-MariaDB (本番環境) mysql Ver 14.14 Distrib 5.7.22, (開発環境) でアプリケーションを制作しています。 DBに個人を特定する値が入っています。ぶっちゃけると MACAddressなのですが 毎回、500件程にwhereで絞り込んだ後に、およそ100件程のMACAddressの付き合わせ検索を連続で頻繁に行う必要があります。 具体的には外部からhttpsでPOSTされて来る100件程の生のMACAddressの値と、DBの値を比較する処理をしています。 これまでDBにはMACAddressが生データで入力されており、完全一致で検索をかけていましたが、 これをhash化して管理したいと考えています。 そこで検索性が高く、いざというとき(DBデータ盗まれた等)複号化されにくい暗号化の方法としてどのようなものを使うのがふさわしいでしょうか? まとめると以下の様な条件になります。 ・DB検索に時間がかからなければ良い。 ・システムとして値の複号化は必須要件ではない。(つまりopenSSL等で複号化をしないでも良い) ・DBの方では一意性が保証できる値となっていれば良い。 ・DBの情報が漏洩した際、復元されにくいものが良い。 ・md5,sha1 は計算力を使えば複号されるので不採用。 ・Laravelファサードの Hash:check() はかなりの処理時間がかかるので不採用。 また、このような要求にこたえられるような暗号化の記述がされたサイト等あれば、 それのみでもご紹介いただけると幸いです。
回答: > > ・DBの情報が漏洩した際、復元されにくいものが良い。 > > > MACAddress って組み合わせが決まってるから、総当たりでもそこそこ簡単に解析できちゃうんじゃないかなぁ。。。 stretching は必須な気がする。