SM4算法基礎:
- 對稱分組加密: SM4是一種對稱密鑰分組密碼算法。這意味著加密和解密使用相同的密鑰(稱為會話密鑰或工作密鑰),且數據被分成固定長度(128位)的塊進行處理。
- 128位密鑰與分組: 密鑰長度固定為128位,分組長度也是128位。這種強度足以抵御當前主流的計算攻擊。
- 迭代結構: 采用32輪非線性迭代結構(Feistel網絡或其變種),每輪使用不同的輪密鑰(由主密鑰派生而來),通過反復的混淆和擴散操作,使得明文和密文之間、密鑰和密文之間的關系變得極其復雜,難以破解。
- 安全性: SM4算法經過國家密碼管理局的嚴格審查和認證,其設計滿足現代密碼學對安全性的要求,能夠有效抵抗各種已知的密碼分析攻擊。
在社保卡芯片中的應用原理:
SM4算法在社保卡芯片中主要應用于以下關鍵環節,以實現個人信息保護:
-
靜態數據存儲加密:
- 保護對象: 存儲在芯片文件系統中的核心敏感信息,如身份證號碼、姓名、社會保障號碼、部分醫療記錄、金融賬戶信息(如果集成金融功能)等。
- 原理: 在數據寫入芯片的非易失性存儲器(如EEPROM或Flash)之前,芯片操作系統(COS)會調用SM4加密引擎,使用預先存儲在芯片安全區域(如安全元件SE)的特定文件加密密鑰對數據進行加密。加密后的密文才被存儲。
- 解密: 當合法的應用(如醫保讀卡器、銀行終端)需要讀取這些信息時,必須通過安全認證流程。認證通過后,COS使用相同的文件加密密鑰調用SM4解密引擎,將存儲的密文解密還原成明文,再傳輸給合法應用。
- 保護效果: 即使攻擊者物理拆解芯片,通過探針或其他手段直接讀取存儲器的內容,也只能得到無法理解的密文。沒有正確的密鑰,無法恢復原始個人信息,有效防止了數據被非法竊取。
-
動態數據通信加密與完整性保護:
- 保護對象: 社保卡與外部讀卡終端(如醫保結算終端、自助服務終端、銀行POS機)之間傳輸的命令、響應和數據。
- 原理:
- 加密傳輸: 在建立安全通道后,雙方協商或使用預共享的會話密鑰。傳輸的敏感數據(如交易指令、個人標識信息、醫療結算詳情)在發送前,由COS使用SM4(通常結合如CBC、CTR等工作模式)和會話密鑰進行加密。接收方(終端或卡)使用相同密鑰解密。確保數據在傳輸過程中即使被截獲,也無法被解讀。
- 消息認證碼: SM4還常用于生成消息認證碼。一種常見方式是使用SM4-CBC-MAC或基于SM4的CMAC模式。在發送數據前,COS使用SM4和另一個MAC密鑰(與會話密鑰不同)計算待發送數據的MAC值,并附加在數據后面一起發送。接收方收到數據后,用相同方法重新計算MAC值,并與收到的MAC值比較。
- 保護效果:
- 機密性: 傳輸的敏感信息被加密,防止竊聽。
- 完整性: MAC機制確保數據在傳輸過程中沒有被篡改(如插入、刪除、修改)。任何改動都會導致接收方計算的MAC值與收到的不同,從而拒絕該數據。
- 真實性: MAC機制同時也提供了數據源認證的一定保障,因為只有擁有正確MAC密鑰的實體才能生成有效的MAC。
-
內部認證與外部認證:
- 保護對象: 驗證卡片或終端的合法性,防止偽造卡片或終端。
- 原理: SM4算法可用于實現社保卡芯片與讀卡終端之間的雙向認證(外部認證:終端驗證卡;內部認證:卡驗證終端)。通常涉及挑戰-應答機制:
- 驗證方(如終端)生成一個隨機數(挑戰)發送給被驗證方(如卡)。
- 被驗證方使用存儲在安全區域的認證密鑰和SM4算法,對該隨機數進行加密或計算MAC,生成一個應答值返回給驗證方。
- 驗證方使用相同的密鑰和算法對收到的隨機數(或預期值)進行計算,將結果與收到的應答值比較。
- 保護效果: 只有擁有正確認證密鑰的合法卡片或終端,才能生成正確的應答。這有效防止了非法克隆卡或偽終端的攻擊。
密鑰管理:安全的核心
- 層級結構: SM4算法本身安全,但整個系統的安全性極度依賴密鑰的安全。社保卡芯片采用嚴格的密鑰管理體系(KMS)。密鑰通常分層管理:
- 主密鑰: 最高級密鑰,由發卡機構嚴格保管,用于加密傳輸或派生其他密鑰。通常不會直接用于數據加密。
- 派生密鑰/文件密鑰/會話密鑰: 由主密鑰通過特定算法(如基于SM4或SM3的密鑰派生函數)派生出來,用于實際的文件加密、通信加密、MAC生成或認證。
- 安全存儲: 所有用于SM4加密/解密、MAC生成、認證的密鑰,都存儲在芯片的安全區域。這個區域具有硬件級別的物理防護和邏輯訪問控制,防止密鑰被非法讀取或導出。常見的保護措施包括防探測網格、主動屏蔽、電壓/頻率/溫度傳感器、訪問計數器等。
- 密鑰生命周期管理: 密鑰的生成、注入(通常在卡片個人化階段)、使用、更新、銷毀都有嚴格的安全流程和規范。
總結:SM4在社保卡芯片個人信息保護中的應用原理
SM4國密算法作為社保卡芯片安全體系的核心密碼引擎,通過以下方式實現對個人信息的保護:
靜態數據加密: 使用SM4和存儲在安全區域的密鑰,對存儲在芯片內的敏感個人信息進行加密存儲,防止物理讀取攻擊。
動態通信保護:- 使用SM4和會話密鑰加密傳輸數據,保證通信機密性。
- 使用SM4生成MAC,保證數據傳輸的完整性和真實性,防止篡改和偽造。
雙向認證: 使用SM4和認證密鑰實現卡片與終端的相互身份驗證,防止偽造。
依賴安全密鑰管理: 整個安全機制的基石在于嚴格的分層密鑰管理體系,確保所有SM4操作所使用的密鑰在其整個生命周期內(尤其是存儲在芯片安全區域時)得到最高級別的保護。
因此,SM4算法在社保卡芯片中的應用,不僅僅是執行加密運算,更是構建了一個涵蓋數據存儲、傳輸、認證等多個環節的、以硬件安全為基礎、以國密算法為支撐的、全方位的個人信息保護屏障,有效保障了持卡人的隱私和社保基金的安全。