CloudFlare 通過 PCI DSS 3.1 Level 1

CloudFlare 宣佈通過 PCI DSS 3.1 Level 1:「CloudFlare is now PCI 3.1 certified」。

早在去年的時候 CloudFlare 就已經通過 PCI DSS 2.0 Level 1:「CloudFlare is PCI Certified」,這次過 PCI DSS 3.1 主要還是因為 2.0 即將失效,不升級就不能處理信用卡資料了...

PCI DSS 的更新:PCI DSS 3.1

PCI DSS 3.1 出了:「PCI COUNCIL PUBLISHES REVISION TO PCI DATA SECURITY STANDARD — PCI DSS 3.1 and supporting guidance helps organizations address vulnerabilities within SSL protocol that put payment data at risk; PA-DSS revision to follow —」(PDF)。

與 3.0 相比,修正了 SSL 與 TLS 的安全性問題。分成兩大塊討論,對於新的系統:

  • 禁止使用 SSL 與早期的 TLS (包括了 TLS 1.0 與 TLS 1.1 的某些設定)。

而對於舊的系統:

  • 在 2016 年 6 月 30 日後,禁止使用 SSL 與早期的 TLS。
  • 在這之前,不符合上述條件的設備必須修正到可以防禦已知的 SSL 與 TLS 問題。
  • 對於 POS (Point-of-sale) 與 POI (Point-of-interaction) 系統則是例外處理:確認可以防禦已知 SSL 與 TLS 問題的話,期限後仍然可以使用。

PA-DSS 3.0 對密碼儲存方式的說明

PA-DSS (Payment Application Data Security Standard) 是 PCI SSC 訂出來提供給軟體開發商在支援交易時的標準:

PA-DSS was implemented in an effort to provide the definitive data standard for software vendors that develop payment applications.

這個標準也有很多版本,最新的 3.0 版是 2013 年 11 月公告的。剛剛在「Passwordscon 2014 - Password Security In The Pci Dss - Jarred White」這邊意外看到有提到密碼儲存的要求,出自 PDF 的 Page 34。

分成幾個部份,PA-DSS Requirements 的部份是寫:

3.3.2 Use a strong, one-way cryptographic algorithm, based on approved standards to render all payment application passwords unreadable during storage. Each password must have a unique input variable that is concatenated with the password before the cryptographic algorithm is applied.

標準規定必須使用 one-way cryptographic algorithm,並且必須要有 salt 的設計。

另外在 Guidance 則是直接建議使用 PBKDF2Bcrypt

Concatenating a unique input variable to each password before the hashing algorithm is applied reduces the effectiveness of brute force attacks. Examples of strong one-way cryptographic algorithms suitable for hashing passwords include PBKDF2 and Bcrypt.

之前在密碼儲存這塊最痛的事情就是沒有夠先進的標準可以遵循,現在總算是有一份金融標準可以拿出來用了...

參考 2012 年 ijliao 就有寫到的「請愛用 bcrypt 和 PBKDF2」。