Paswordsと個人データをデータベースに保存しています。保護のためにこれらの値を暗号化するための最も強力な方法は何ですか。
また、データベース内のクレジットカード情報を暗号化するための最良の方法は何ですか?または、mysqlデータベースではなく、他の何かを使用してクレジットカード情報を保存する必要がありますか?
ありがとう。
Paswordsと個人データをデータベースに保存しています。保護のためにこれらの値を暗号化するための最も強力な方法は何ですか。
また、データベース内のクレジットカード情報を暗号化するための最良の方法は何ですか?または、mysqlデータベースではなく、他の何かを使用してクレジットカード情報を保存する必要がありますか?
ありがとう。
SQLに何かを保存するのは問題ないと思います。最初に暗号化するだけです。何らかの方法でデータを識別する必要がある場合(DBエントリの一意のキーなど)、ランダムに生成される文字列または安全なハッシュを作成し、暗号化されたデータと一緒に保存します。
試されてテストされたものに固執するのがおそらく最善です。これはDB(おそらく課金システム用)なので、高速に取得できると便利です。したがって、非対称暗号化は避けてください。対称鍵を誰かと共有する必要がある場合にのみ、対称鍵を暗号化するために使用する必要があります。
AESの特定の強度(たとえば256ビット)は問題ないはずです。このようにして確保した個人情報を知りたいと思います。
ユーザーパスワードの保存に関しては、ソルト(ランダムな文字列)を生成し、セキュアハッシュアルゴリズム(RIPEMD、SHA1、MD5)を使用してこのソルトと組み合わせたユーザーパスワードをハッシュするのが一般的な方法です。
これにより、事前に計算された辞書クラッカーがすべてのランダムソルトも処理する必要があるため、パスウッドを回復できなくなります。
パスワードを暗号化せず、ハッシュするだけです。パスワードをクリアテキストで回復できる必要はありません。この1つのマスターキーを介してシステムを脆弱にするだけです。ユーザーが選択できるキーでユーザーデータを暗号化しないでください。キーが失われた場合にデータを回復できなくなります。ユーザーがパスワードを紛失した場合にアカウントへのアクセスを回復するための一般的な方法を提供します。
本当にユーザー名を非表示にする必要がある場合は、使用しているデータアーキテクチャについて自問する必要があります。一般に、個人データ、特に請求データは、一目で保存するのではなく、信頼できる関係者のみがアクセスできるようにする必要があります。これらの信頼できる関係者は、ユーザー名と情報の内容を表示する必要があるため、暗号化はおそらく不要です。
オープンインターネットでユーザー情報を送信する場合は、暗号化してください。
DBサーバー上のユーザー情報のセキュリティについて懸念がある場合は、サーバーに追加の物理的セキュリティを提供できるクラウドまたはデータホスティングプロバイダーとの連携を検討してください。
暗号化は、堅牢なセキュリティポリシーの一部にすぎません。特に、ビジネスを行うための安全な環境を設定するという人間的な要素に焦点を当てます。知る必要のある機密リソースへのアクセスを配布します。すべてのキーが失われた場合に備えて、バックアップまたはデータ回復の何らかの手段を用意してください。
クレジットカードのデータを保存するときに心配する必要があるのは暗号化だけではないことに注意してください。厳格な監査要件やその他の多くの懸念事項もあります(慣れていない場合は、 PCI Webサイトを参照してください)。
おそらくPCIコンプライアンスを取得することはできますが、必要なセキュリティ対策に精通していない場合にこれを行うと、莫大な責任を負う可能性があります。システムが侵害された場合、または準拠していないことが判明した場合は、重大な罰金が科せられます。
代替ソリューションについては、 Authorize.netなどの支払いプロバイダーを確認してください。特に、彼らのCustomer Information Manager製品は、クレジットカード情報などの安全なデータをサーバーに保存するため、検討する価値があります。