CPU卡密鑰管理系統介紹
密鑰管理系統 (Key Management System),也簡稱KMS,是IC卡項目安全的核心。如何進行密鑰的安全管理,貫穿著IC 卡應用的整個生命周期。
我們首先了解下普通邏輯加密存儲卡的密鑰系統。邏輯加密存儲卡是在非加密存儲卡的基礎上增加了加密邏輯電路,加密邏輯電路通過校驗密碼方式來保護卡內的數據對于外部訪問是否開放,但只是低層次的安全保護,無法防范惡意性的攻擊。以NXP的M1卡為例,2008 年 10 月,互聯網上公布了破解其密碼的方法,自此之后就開始有不法分子利用這種方法可以很低的經濟成本對采用該芯片的各類“一卡通”、門禁卡進行非法充值或復制,帶來很大的社會安全隱患。因此,在需要較高層次安全保護的應用系統中,不宜使用邏輯加密存儲卡。
邏輯加密存儲卡的安全認證依賴于卡內密鑰區的校驗,從而實現數據區的讀寫安全控制。邏輯加密存儲卡的個人化也比較簡單,主要包括數據和密鑰的更新,在期間所有敏感數據包括 密鑰都是直接以明文的形式更新。因此只能解決卡片對終端的認證,而無法解決終端對卡片的認證,即我們俗稱的“偽卡”的風險。
邏輯加密存儲卡的密鑰就是一個預先設定的固定密碼,無論用什么方法計算密鑰,最后就一定要和原先寫入的固定密碼一致,就可以對被保護的數據進行讀寫操作。因此無論是一卡一密的系統還是統一密碼的系統,經過破解就可以實現對非接觸邏輯加密存儲卡的解密。很多人認為只要是采用了一卡一密、實時在線系統或邏輯加密存儲卡的ID 號就能避免密鑰被解密,其實,邏輯加密存儲卡被解密就意味著卡本身可以被復制。現在的技術使用FPGA 就可以完全復制。基于這個原理,邏輯加密存儲卡做門禁也是不安全的。目前國內多數的門禁產品均是采用卡的原始ID 號去做門禁系統的白名單驗證放行條件,根本沒有去進行加密認證或開發專用的密鑰,很多國內廠家也不太關注卡與機具間的加密認證和密鑰體系的設計,因此這些問題的安全隱患涉及面就更大了。
下面介紹CPU卡的密鑰管理系統。
CPU 卡的芯片和COS的安全技術為CPU 卡提供了雙重的安全保證。自帶操作系統的CPU 卡對計算機網絡系統要求較低,可實現脫機操作;自帶多種加密算法,可實現真正意義上的一卡多應用,每個應用之間相互獨立,并受控于各自的密鑰管理系統。存儲容量大,可提供 1K-64K 字節的數據存儲。 CPU卡系統中使用了獨立的保密模塊,使用相應的實體SAM 卡密鑰實現加密、解密以及交易處理,從而完成與用戶卡之間的安全認證。
CPU 卡擁有獨立的CPU處理器和芯片操作系統,所以可以更靈活的支持各種不同的應用需求,更安全的設計交易流程。但另一方面,與邏輯加密存儲卡系統相比而言,CPU卡的系統顯得更為復雜,需要進行更多的系統改造,比如密鑰管理、交易流程、PSAM 卡以及卡片個人化等。密鑰通常分為充值密鑰 (ISAM 卡),減值密鑰 (PSAM 卡),身份認證密鑰(SAM 卡)。
CPU卡可以通過內外部認證的機制,例如像建設部定義的電子錢包的交易流程,高可靠的滿足不同的業務流程對安全和密鑰管理的需求。對電子錢包圈存可以使用圈存密鑰,消費可以使用消費密鑰,清算可以使用 TAC 密鑰,更新數據可以使用卡片應用維護密鑰,卡片個人化過程中可以使用卡片傳輸密鑰、卡片主控密鑰、應用主控密鑰等,真正做到一鑰一用。
CPU卡加密算法和隨機數發生器與安裝在讀寫設備中的密鑰認證卡(SAM 卡)相互發送認證的隨機數,可以實現以下功能:
(1) 通過終端設備上SAM 卡實現對卡的認證。
(2) CPU卡與CPU卡讀寫器上的 SAM 卡的相互認證,實現對卡終端的認證。
(3) 通過 ISAM 卡對CPU卡進行充值操作,實現安全的儲值。
(4) 通過PSAM 卡對CPU卡進行減值操作,實現安全的扣款。
(5) 在終端設備與CPU卡中傳輸的數據是加密傳輸。
(6) 通過對CPU卡發送給 SAM 卡的隨機數 MAC1,SAM卡發送給CPU卡的隨機數MAC2 和由CPU卡返回的隨機數 TAC,可以實現數據傳輸驗證的計算。而MAC1、MAC2 和 TAC就是同一張CPU卡每次傳輸的過程中都是不同的,因此無法使用空中接收的辦法來破解非接觸CPU 卡的密鑰。
CPU卡,可以使用密鑰版本的機制,即對于不同批次的用戶卡,使用不同版本的密鑰在系統中并存使用,達到密鑰到期自然淘汰過渡的目的,逐步更替系統中所使用的密鑰,防止系統長期使用帶來的安全風險。
CPU卡,還可以使用密鑰索引的機制,即對于發行的用戶卡,同時支持多組索引的密鑰,假如當前使用的密鑰被泄漏或存在安全隱患的時候,系統可以緊急激活另一組索引的密鑰,而不用回收和更換用戶手上的卡片。
CPU卡系統中,PSAM 卡通常用來計算和校驗消費交易過程中出現的 MAC 碼,同時在計算的過程中,交易時間、交易金額、交易類型等交易信息也都參與運算,使得交易更安全更可靠。某些情況下,CPU卡系統中的PSAM 卡還可以用來支持安全報文更新數據時 MAC 的計算,以及交易TAC 的驗證。因此,與邏輯加密存儲卡系統相比,CPU卡系統中的PSAM卡支持更廣泛的功能,也更為靈活、安全和復雜。通常CPU卡系統的 PSAM 卡還支持不同的密鑰版本。
而CPU卡的個人化通常可以分為卡片洗卡和卡片個人化兩個獨立的流程,前者創建卡片文件結構,后者更新個人化數據,并注入相應的密鑰。在信息更新和密鑰注入的過程中,通常都采用安全報文的方式,保證數據和密鑰更新的正確性和安全性。而且密鑰注入的次序和相互保護的依存關系,也充分體現了密鑰的安全設計,比如卡片主控密鑰通常被用來保護導入應用主控密鑰,應用主控密鑰通常被用來保護導入其他應用密鑰,比如消費密鑰等。
CPU 卡的密鑰實現方式:
(1) 硬密鑰:即在終端機具中安裝SAM 卡座,所有的認證都是由安裝在SAM 卡座中的SAM 卡進行運算的,這樣在終端機具維修時,只要取出SAM 卡座中的SAM 卡,這臺終端機具就是空的了。所以所有的銀行設備都采用 SAM 卡的認證模式。
(2) 軟密鑰:終端機具中沒有SAM 卡座,這個密鑰的運算實際上是由終端機具完成的,這樣客戶的密鑰就等于存在終端機具中,廠家拿回終端機具維修時,極易造成密鑰流失。
總結以上所述,邏輯加密存儲卡采用的是固定密碼,而 CPU卡采用的是動態密碼,并且是一用一密即同一張CPU卡,每刷一次卡的認證密碼都不相同,這種智能化的認證方式使得系統的安全性得到提高,特別是當交易雙方在完成交易之后,收單方有可能擅自修改或偽造交易流水來達到獲利目的,為了防止終端偽造交易流水,系統要求卡片能夠產生由交易要素生成的交易驗證碼,在后臺清算時來對交易的有效性進行驗證。CPU 卡則可以在交易結束時產生個交易驗證碼 TAC,用來防止偽造交易。邏輯加密存儲卡由于不具有運算能力,就不可能產生交易的驗證碼。所以,從安全性的角度來看,CPU卡是一種當前最安全的選擇。