銀行業密鑰體系概述

銀行業的密鑰體系是個很龐大的體系,其覆蓋不同的密碼學算法及適應不同的業務場景。一方面保證銀行的數據安全性,另一方面適應業務的變化且易於理解和使用。銀行業的密鑰體系與銀行監管制度是緊密相關的,密鑰體系保證銀行內各個業務環節的安全性,而銀行監管制度保證密鑰體系能夠有效地執行,最終依靠對操作人員進行監管使得密鑰體系得到有效的實施。

提到密鑰,一定要先了解下密碼學的一些基礎算法,銀行主要使用的密碼學算法有下面三大類:

對稱算法

對稱算法是指加密密鑰和解密密鑰相同的密碼算法,我們常用的又爲分兩類:1、流式密碼算法,常見的流式密碼算法包括RC4;2、分組密碼算法,常見的分組密碼算法爲DES、AES、IDEA、SM4等。在銀行業中,主要使用這些算法加密用戶密碼(PIN: Personal Identification Number)保護傳輸與存儲、交易中MAC(Message Authentication Code)生成與校驗等。

非對稱算法

非對稱算法是指加密密鑰和解密密鑰不相同的密碼算法,日常中亦稱爲公開密鑰算法或公鑰算法。此算法一般生成時就產生兩個配對的密鑰,一個密鑰用於對數據加密,另一個用於數據解密。常見的非對稱算法包括RSA、DSA、ECC、SM2等。在銀行業中對此類密鑰一般有兩種用途:1、數據加密,將加密的密鑰公開,解密的密鑰進行保密,如網上銀行PIN的加密傳輸;2、校驗身份,將加密的算法保密,將解密的密鑰公開,如網上銀行USB-Key對用戶身份的校驗。

摘要算法

摘要算法主要是指任意長度的數據作爲輸入轉化爲固定長度的數據輸出,並保證不同的數據輸入的序列不同的一種密碼算法,日常稱散列算法或雜湊算法。常見的摘要算法包括MD4、MD5、SHA1、SHA256、SM3等。在銀行業中此類算法主要是對用戶數據作摘要輸出,使用對稱或非對稱密碼算法對摘要進行加密,並與原數據一同傳輸(原數據亦有可能加密,看應用場景),以保證數據的完整性及防篡改。

上面簡單介紹銀行業主要使用密碼的算法,對密碼學常用的算法有了初步的瞭解。爲了保證用戶信息的安全轉變爲對密鑰的安全。

下面我們瞭解下銀行業中如何設計密鑰體系及如何保證整個體系的安全性。銀行業的密鑰體系按用法進行劃分,可分三級:第一級爲本地主密鑰(簡寫LMK),第二級爲區域主密鑰或終端主密鑰(簡寫ZMK\TMK),第三級爲數據密鑰(包括ZPK\TPK\ZAK\PVK等)。爲了防止算法被破解,造成密鑰泄漏,所有密鑰都設置了生命週期,每一級密鑰的生命週期都不一樣,當然每個銀行在國家政策下的定義自己密鑰的生命週期。

    由上圖看到整個密鑰體系的結構,設計三級密鑰體系有什麼好處呢?那麼在銀行業中是如何使用的呢?下面我們由上而下一級級進行討論。

本地主密鑰(LMK

本地主密鑰最初是由一個多個分量(或叫成份)通過一定算法生成的,總共有50對,此密鑰一般是雙倍標準的DES密鑰,這些密鑰僅存在密碼機(專用於作爲加密或解密的設備,簡寫HSM)硬件設備內,無法直接從HSM中讀取出來,僅可以通過特定的介質同步到其他的HSM上。LMK生命週期是從HSM初始化到HSM銷燬,在整個體系中生命週期是最長的。

                    

                                                        LMK初始化過程示意圖

LMK是在HSM初始化過程中生成的,而密碼機初始化是通過銀行嚴格的監管下進行。生成LMK的多個分量最初是由銀行內部三個以上不同部門的特定人員分別隨手寫出來的一個指定長度的數字(一般是32個數字,這些數字在生成LMK運算過程中看作爲16進制數值),然後按照隨手寫出的數字輸入到HSM中,生成LMK後,隨手寫在紙上的32個數字直接進行密封處理,後面送到特定的保存處分別進行保存。這樣做的目的是爲了防止若發生了災難性的事件(如自然災害、戰爭等造成銀行機房直接破壞),可以通過緊急啓用密封起來恢復HSM內部的LMK。

LMK設計成50對密鑰對是有其原因,每個密鑰對對存儲在數據庫或者文件的區域主密鑰或者數據密鑰進行加密保護。因爲LMK生命週期是很長,防止內部技術人員通過技術手段對LMK進行暴力破解,對每類數據密鑰使用不同的LMK進行加密,保證即使某一對LMK密鑰被破解了,那亦僅是拿到一部分的密鑰明文,使風險儘量降低。在強監管情況下,LMK被破解的可能性非常低。

區域主密鑰或終端主密鑰(ZMK\TMK,下統一以ZMK表示)

ZMK一般情況下是由HSM隨機生成,或者通過兩個或兩個以上的分量進行合成。ZMK主要加密的數據對象是數據密鑰,保護數據密鑰從密鑰系統傳輸到終端或者銀行與銀行之間數據密鑰的更新。

終端或者機構之間的ZMK最初是如何初始化的呢?

                                 

如果銀行需要增加一臺ATM,需要往ATM終端灌輸ZMK,那需要將隨機生成的ZMK密鑰在特定可監管的終端以密碼信封的形式拆分成多個分量打印出來(類似日常開特定的金融功能的銀行卡時,會將用戶的初始密碼打印到信封中),然後由不同的業務部門的人員持信封進行輸入到ATM內部合成,分量輸入ATM後立刻進行銷燬處理,整個環節都進行嚴格監管,防止終端的ZMK泄漏。

如果是金融機構之間約定的ZMK,例如銀行與銀聯之間,兩個機構因爲HSM中的LMK是完全不一樣的,那麼銀行與銀聯需要更新數據密鑰同樣需要ZMK加密進行保護,那麼初始的ZMK是如何在兩個機構之間保持一致的呢?在機構互聯之前,每個機構各出一個密鑰分量,各自指派特定的業務人員到雙方的HSM進行合成並保存,後面各個機構各位對自持有的密鑰分量進行密封保存。

ZMK的生命週期一般也是比較長的,一般是幾個月到幾年不等,根據業務場景不一樣,設置的生命週期亦不一樣。

數據密鑰

數據密鑰的類型很多,不同類型的數據密鑰加密的數據對象一般不一樣。如果接觸過銀行安全相關業務的同學,可能遇到最多的是PinKey或MacKey,PinKey一般定義密鑰類型爲爲ZPK或TPK,而MacKey一般定義密鑰類型爲ZAK或TAK。PinKey用於終端加密用戶PIN生成PinBlock(ansi x9.8)傳輸,而MacKey用於生成和驗證MAC。

每個類型的數據密鑰生命週期各不相同。PinKey和MacKey一般生命週期一般爲一天,每天由HSM隨機生成並由ZMK加密輸出並更新終端原有的PinKey和MacKey。PVK或者CVK生命週期一般情況是永久性的,很少銀行會改變PVK或CVK,這分別用於生成用戶PIN的密文和卡的CVV。

在強監管制度下,配合整個密鑰體系的設計,銀行能夠有效地保證整個數據鏈路上所有的數據在生命週期內的安全性。整個密鑰體系在銀行業的規範下,兼顧各類業務場景,兼容各種密碼學算法,是個綜合性且嚴謹的安全體系。在短短的篇幅中,對銀行業密鑰體系作個簡單的介紹,本文中帶有很多專有名詞,想有更多瞭解的同學可以問下google或百度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章