需要データをオンライン上で管理するため、MySQLにデータを暗号化して格納しようと思っているのですが、その際MySQLのENCODE関数を利用して暗号化し、DECODE関数を利用して復号しようと考えているのですが、安全性に関しては大丈夫でしょうか?(十分な暗号強度がありますでしょうか?
ちなみにサーバーにPECLなどのプラグインなどをインストールできないので、MySQL又はPHPの固有の機能を利用して復号できる暗号化方法でなければなりません。
安全性に関してENCODE関数よりも良い方法又はENCODE関数を使用する際のTIPSなどあれば教えて下さい。
MySQLにも必要十分な暗号化・復号化関数は用意されているので、
一時的に使うだけの暗号データであれば非常に有効。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.10.2 暗号化関数と圧縮関数
しかしながら、長期的に公開サーバ上に置かれるデータにあっては、
紐解く時間も十二分に取れるため、何を持ってしても高い安全性の確保は難しく、
暗号化も大事だが、その前に、まずは他人はアクセスできないような状況を用意すべき。
ENCODE/DECODEは乱数発生器による暗号/復号アルゴリズムです。
インプリメントされた環境に依存するので、暗号強度が必ずしも強いとは言えません。
そこで、AES_ENCRYPT/AES_DECRYPTを利用することをお勧めします。
AES暗号は、アメリカが標準暗号として採用しているように、かなり強い暗号化方式です。MySQLでは標準で128bitのキーが使えるので、DESや3DESといった暗号化方式より強いと言われています。
http://dev.mysql.com/doc/refman/5.1/ja/encryption-functions.html
。