簡體   English   中英

信用卡存儲解決方案

[英]Credit Card storage solution

我正在開發一個旨在存儲會員詳細信息以及信用卡詳細信息的解決方案。 我正盡力遵守PCI DSS。 到目前為止,這是我的設計:

PAN =主要帳號==信用卡上的長號

  • 服務器A是遠程服務器。 它存儲所有會員資料(姓名,地址等),並為每個存儲的PAN提供單獨的密鑰A.
  • 服務器B是本地服務器,實際上保存加密的PAN以及密鑰B,並進行解密。

要獲得PAN,客戶端必須使用BOTH服務器進行身份驗證,向服務器A詢問相應的密鑰A,然后將密鑰A提供給服務器B,服務器B將PAN返回給客戶端(提供的身份驗證成功)。 服務器A只會使用服務器B的公鑰對密鑰A進行加密,因為它會事先得到它。 服務器B可能必須首先發送一個鹽,但我不認為必須加密

我還沒有考慮過有關上述的任何實現(即編碼)細節,但是解決方案是使用Java的Cajo框架(RMI包裝器),這就是服務器之間的通信方式(目前,會員資格被轉移)通過這種方式)。

我希望服務器B進行解密而不是客戶端的原因是我害怕解密密鑰進入客戶端的RAM,即使它在服務器上可能同樣糟糕......

任何人都可以看到上述設計有什么問題嗎? 如果必須改變上述內容並不重要。

謝謝

jtnire

作為序言,您將有一個時間的噩夢發展這個並通過PCI合規。 絕對值得考慮替代方案,例如使用可以為您存儲這些卡詳細信息的支付服務提供商,並使用令牌ID執行臨時授權/結算(而不是通過'撥號信用卡機'鍵入它們你描述過)

如果您選擇忽略該建議並采用PCI路線,那么至少要確保盡早獲得PCI認可的合格安全評估員(QSA),以批准您提出的任何設計。 PCI不是你應該“盡可能多地遵守”的東西,不幸的是它是一個全有或全無的東西!

盡管如此,解決此問題的一種方法是在框A上運行密鑰服務應用程序。此應用程序需要輸入兩個“密鑰管理”密鑰,這些密鑰在xor'd一起形成主密鑰時。 主密鑰只存儲在RAM中,永遠不會保存到磁盤。

應用程序生成密鑰加密密鑰,這些密鑰存儲在框A上,由主密鑰加密。 KEK是自動生成的(它不是用戶鍵入的內容)。 KEK可以保存到盒子A上的磁盤上,由主密鑰加密。

卡詳細信息存儲在方框B上。此框還存儲數據加密密鑰,用於對卡詳細信息執行對稱加密。 DEK本身以加密格式存儲,使用來自方框A的密鑰加密密鑰加密。

執行加密/解密的應用程序應位於框B上,並在請求KEK之前向框A驗證自身。 然后KEK用於解密DEK,然后可以進行加密/解密。

如果服務器A被黑客攻擊 - 這意味着我仍然可以獲得明文的所有信用卡,或者? 然后我可以訪問所有個人KEY,我需要訪問每張信用卡。

您可能有興趣閱讀Bytemark博客條目,了解他們如何存儲信用卡信息。

要點是持有卡信息的服務器不會泄露數字; 允許的操作是“添加新卡”,“更新或刪除現有卡”和“為卡充電” - 服務器連接到支付處理器本身。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM