2

だから私はクレジットカードを保存するために PHP / MySQL アプリケーションを変更したいと思いますが、cvv と銀行口座情報は安全に保存しません。PCI DSS には 1024 RSA/DSA が必要です。毎月の支払い処理業者に送信するアカウント情報のバッチ ファイルを復号化するために、少数のユーザーに秘密鍵が与えられます。通常の 8 桁のパスワードでサインインしたユーザーが、自分のアカウント情報を安全に変更できるシステムを構築できるかどうかは不明です。これは不可能であり、暗号化は一方向 (つまり、各ユーザー -> 管理者。ユーザーが自分の情報を再度復号化することはできません) である必要があり、SSL 接続を介してもアカウント情報がユーザーに公開されることはありません。または、PCI DSS に準拠していることに気付いていない、これを行うための適切で簡単な方法はありますか?

4

2 に答える 2

2

データの保存アクセス、および転送を区別すると、より簡単に処理できるようになります。

ストレージには強力な可逆暗号化が必要です。データは、取得できなければ役に立ちません。

アクセスでは、データの復号化を許可する前に、ユーザーまたはプロセスが自身を認証する必要があります。これを実現するメカニズムの例を次に示します。

  1. ユーザーに直接公開されることのない秘密鍵を使用してデータを保存します。もちろん、そのキーをどこかに保存する必要があり、それを取得できる必要があります。
  2. 各ユーザーがパスワードを選択したら、そのパスワードを使用して、そのユーザーの秘密キーの個人用コピーを暗号化します。(注: キーの各コピーを暗号化していても、同じ情報の複数のコピーを保持すると、セキュリティの問題が発生する場合があります。)
  3. ユーザーのパスワードを保存しないでください。代わりに、標準のベスト プラクティスに従って (saltなどを使用して)ハッシュし、ハッシュを保存します。
  4. ユーザーがログインするためのパスワードを提供したら、それをハッシュして、保存されている値と比較します。一致する場合は、(平文の) パスワードを使用してキーを復号化し、それを使用して実際のデータを復号化します。

SSL などの安全な接続を介してデータを送信します。ベスト プラクティスに従っている限り、ユーザーが自分のデータにアクセス (および変更) できるようにすることは合理的です (おそらく必要です)。


コメント:

  • 8 桁のパスワードは、10 8 ~ 2 27 = 27 ビットのキー スペースを意味します。これは、今日の基準ではかなりひどいものです。より長い (または英数字の) パスワードを推奨できない場合は、追加のレイヤーを検討することをお勧めします。

  • 多層戦略 (「実際の」キーの暗号化に使用されるパスワードをユーザーが提供する) の利点の 1 つは、暗号化キーをユーザーに対して透過的に変更できるため、キー ローテーションの要件を満たすことができることです。

  • セキュリティ ソリューションを設計するときの標準的な警告は、標準に従っている場合でも、DIY セキュリティはせいぜい危険であることを覚えておくことです。ほとんどの場合、評判の良いベンダーの既製のパッケージを使用するか、少なくとも訓練を受けて認定されたセキュリティ専門家に戦略と実装の両方を監査してもらう方がよいでしょう。

幸運を!

于 2009-11-19T13:33:16.653 に答える
2

PCI DSS では、暗号化に 1024 ビット RSA は必要ありません。仕様の古いバージョンでは AES と 3DES を名前で言及していましたが、新しいバージョンでは強力な暗号化のみを指定していると思います。ほとんどの人は AES 256 を使用しています。

非対称アルゴリズムを使用して保管中のデータを暗号化しても、実際には機能しません。対称アルゴリズムが最適です。これにより、アプリケーションは必要なときにカード データにアクセスできます。これは、データをユーザーに再度表示する必要があるという意味ではなく、データにアクセスする必要があるときにデータがそこにあることを意味するだけです。クレジット カード認証情報を保存している場合は、通常、決済にカード番号が必要になります。(実際には、プロセッサの機能によって異なります。中小企業レベルのプロセッサの中には、カードを保存するものもありますが、Paymentech や FDMS などの大規模なプロセッサでは実行できません。)

問題は、暗号化キーを定期的にローテーションする必要があることです。これは通常、誰もが台無しにするものです。独自の暗号化をロールする場合は、それらのキーで暗号化されたデータがある限りアクセス可能な n 個のキーを指定できることを確認する必要があります。どの時点でも、これらのキーの 1 つだけを暗号化に使用する必要があります。PCI の観点から暗号化とキー管理を深く理解している場合を除き、商用製品を使用することをお勧めします。はい、これらは高価ですが、ビルドまたは購入の意思決定プロセスで最適なコースを決定する必要があります.

Ingrian (現在は SafeNet) は、ネットワーク HSM 向けのまともな製品を提供しています。キーを管理し、暗号化操作を実行します。アプリケーションをまったく変更する必要がないように、DB レベルの暗号化統合を使用することも可能です。(私の意見では、DB レベルの暗号化は疑わしいほど安全ですが。)

これは非常に深いテーマです。私は PCI で多くのことを行ってきました。適切な方法でガイドしてくれる人を雇うことをお勧めします。誤った開始や作業のやり直しに多額の費用がかかるため、早期に監査人を関与させて、少なくとも必要なものを評価し、セキュリティを適切に実装する方法を教えてください。

于 2009-11-19T13:29:23.370 に答える