金融行業金鑰詳解
轉自: http://bbs.chinaunix.net/thread-1572937-1-1.html
金融行業因為對資料比較敏感,所以對資料的加密也相應的比較重視。在其中有關金鑰及加密方面的文章很少,並且散發在各個銀行及公司的手中,在網上沒有專門對這部分進行介紹的。本文對金融行業的金鑰進行較深入的介紹,包括象到底什麼是主金鑰(MasterKey)、傳輸金鑰(MacKey),為什麼我們需要這些東西等。
本文采取追源溯本的方式,力求讓對這感興趣的人達到知其然,同時也知其所以然,而不是模模糊糊的知道幾個概念和名詞。因為本文主要是針對對金融行業金鑰不是很熟悉的人,所以如果你對金鑰很熟悉就不必仔細看了。
好了,我們們言規正傳。我們知道,金融行業有很多資料要在網路上傳遞,包括從前置到主機,從自助終端到前置等,這些資料在網路上傳來傳去,我們很容易就會想到安全性的問題,如果這些資料被人竊取或攔截下來,那我們怎麼敢在銀行存錢了。這個問題在計算機出現時就被前人考慮到了,所以出現了很多各種各樣的加解密技術。
拋開這些不管,假設當初由我們自己來設計怎樣解決資料被竊取的情況。假設我們有一段資料,是ATM取款的報文,包括一個人的磁卡號、密碼、取款金額,現在需要將這些資料從一臺ATM機器傳到前置機處理,這些資料是比較機密的,如果被人竊取了,就可以用該卡號和密碼把帳戶中的錢取走。
首先,我們可以想到用專用的銀行內部網路,外面的人無法獲得網路的訪問權。這個仔細想想顯然不可行的,因為一是不能保證外人一定沒辦法進入銀行內部網路,二是銀行內部人員作案是沒法防止的。
接著,我們很容易想到,既然保證資料不被竊取的可能性很小,那我們何不變換一下思路,資料避免不了被竊取,那我如果將資料處理下,讓你即使竊取到資料,也是一些無用的亂碼,這樣不就解決問題了嗎。這個想法比較接近現在的做法了,當前置機接收到了資料,它肯定是對資料進行反處理,即與ATM端完全步驟相反的資料處理,即可得到明文的資料。我們再進一步想想,如果因為某種原因,報文中的取款金額被改變了,這樣就會導致ATM出的錢和前置扣帳記錄的錢不一致的情況,看來我們必須加上一個驗證機制,當前置機收到ATM傳送的一個報文時,能夠確認報文中的資料在網路傳輸過程中沒有被更改過。
怎樣實現?最簡單的,象計算機串列埠通訊一樣,對通訊資料每一位進行異或,得到0或1,把0或1放在在通訊資料後面,算是加上一個奇偶校驗位,收到資料同樣對資料每位進行異或,得到0或1,再判斷下收到資料最後一位與算出來的是否一致。這種方式太簡單了,對於上面提到的ATM到前置機的報文來說,沒什麼用處,不過我們可以將對資料每一位異或的演算法改成一個比較複雜點的。
因為DES演算法已經出來了很多年了,並且在金融行業也有廣泛的應用,我們何不用DES演算法進行處理,來解決上面的問題呢。我們應該瞭解DES演算法(此處指單DES)的,就是用一個64bit 的Key對64bit的資料進行處理,得到加密後的64bit資料。那我們用一個Key對上面的報文進行DES演算法,得到加密後的64bit資料,放到報文的最後,跟報文一起送到前置機,前置機收到報文後,同樣用Key對資料(不包括最後的64bit加密資料)進行DES加密,得出64bit的資料,用該資料與ATM傳送過來的報文最後的64bit資料比較,如果兩個資料相同,說明報文沒有中途被更改過。
再進一步,因為DES只能夠對64bit的資料進行加密,一個報文可不止64bit,哪我們怎麼處理呢?只對報文開頭的64bit加密?這個是顯然不夠的。
我們可以這樣,先對報文的開始64bit加密,接著對報文第二個64bit加密,依次類推,不過這有問題,因為每個64bit都會得到同樣長度的加密後的資料,我不能把這些資料都放到報文的後面,那報文的長度不變成兩倍長了。換個思路,我先對報文第一個64bit加密,得到64bit的加密後資料data1,接著再拿加密後的data1與報文第二個64bit資料進行按位異或,得到同樣長64bit的資料data2,我再用Key對data2加密,得到加密後的資料data3,再拿data3與報文第三個64bit資料進行按位異或,同樣的處理依次類推。直到最後會得到一個64bit的資料,將這個資料放到報文的最後發到前置機,這樣報文的長度只增加了64bit而已。這個演算法就叫做MAC演算法。
好了,到目前為止我們已經知道了什麼是MAC演算法,為什麼需要它,接著我們再看看經常被提起的另外一個名詞。在上面說到MAC演算法的時候,我們會注意到其中進行DES加密演算法時提到了一個Key,這個用來參與MAC計算的Key就常被稱為MacKey,也有叫工作金鑰、過程金鑰的。
我們繼續來處理ATM和前置機間網路資料傳輸的問題。前面提到的MAC演算法對傳送的報文進行了處理,保證了在網路傳輸過程中資料不會被有意或無意的篡改,但是,我們再進一步想想,如果仍然是上面提到的一個取款報文,如果想作案的話,我不改報文的內容,我只是擷取報文的內容,因為內容裡面有卡號和密碼,都是明文的形式,很容易就看出來哪些內容是卡號、哪些內容是密碼。有了卡號和密碼,我就好辦了,找個讀卡器就能夠很快的製出一張磁卡,然後拿這個磁卡可以隨便取錢了,根本不需要修改報文,這樣你就算前置機對報文的MAC校驗通過了,也只是保證了報文沒改動過,對於防止作案沒有實質上的幫助。
那我們很容易想到,我再加上一道加密,這次我把整個存款的報文都用DES加密,將明文全部轉換成密文,然後送到前置機,這下好了吧。即使你把報文擷取了也沒用,你拿著這些密文也沒有用,你也沒有DES的金鑰來解密它,只有前置機才知道金鑰。這是個好主意,確實防止了卡號和密碼等被人獲知的危險。這也是現在普遍採取的做法,不過我們需要對這個做法進行一些改進。
首先,我們要知道用DES對資料加解密是耗時間的,尤其是使用硬加密(下一步講什麼是硬加密)的情況,速度是比較慢的。我們來想想,整個存款報文有必要每個資料都DES加密嗎,象報文中的什麼流水號、ATM號等資訊,對它們加密沒什麼意義,進一步講,取款金額加密也沒意義,假設你取500塊,但是你將報文改成了100塊,導致主機只把你帳戶扣100塊錢,你白賺了400塊。這個聽起來挺划算的,實際上是不可行的,因為這樣造成了帳務上的短款,銀行當然會查賬的,根據ATM記錄的硬體出鈔張數和主機扣款金額,肯定會把你查出來的,那這種掩耳盜鈴的做法,下場顯而易見,想必沒人這麼傻。
我們來考慮一個報文中到底什麼資訊是需要加密的,目前一般的做法是隻對帳號和密碼(也有隻對密碼加密的)進行加密,其他的內容不加密的,明文就明文,沒什麼大不了的。對帳號和密碼加密有個術語,我們可能都聽說過,叫PinBlock,即PIN塊,就是對帳號和密碼進行DES加密處理後的一個密文資料塊。即然使用了DES演算法來加密帳號和密碼,則必然有個Key來加密,那麼我們就把這個Key稱為PinKey,就是專門來加密使用者帳戶和密碼的Key。
至於怎樣進行加密形成最後的密文PinBlock,有很多標準的,象IBM3624、ANSI、ISO、DIEBOLD等標準,其實它們大同小異,就是在對報文中的密碼進行一個預處理,再用PinKey來DES加密,主要的差別就是怎樣預處理而已,比如有的是密碼後面補F,補夠16位,就是類似這樣的預處理。
到這裡我們應該理解PinKey和PinBlock了。通過PinKey和MacKey對報文進行了兩重處理,基本上報文就是安全的了。如果我們對DES演算法比較瞭解,就會知道,如果想對加密後的密文解密,必須要知道Key才行,所以說Key一定要保密。怎樣來保密Key呢?我們前面提到的無論是算MAC還是算PIN塊,都是直接拿明文的Key來計算的,那麼這個Key很容易被竊取的,比如有人在機器上裝了個黑客程式,只要檢測到你在用Key加密資料,就把明文的Key獲取了。這個聽起來好像挺玄乎的,不過是有這個可能性的,尤其是網上銀行這些東東最容易中招了。
這樣看來,我們還要對PinKey和MacKey本身進行加密,不要讓人知道了。怎樣實現,同樣是DES演算法大顯身手的地方。我再找個Key對PinKey和MacKey進行一次加密,這樣你就看不到PinKey和MacKey的明文了,好,解決問題了。這時用來對PinKey和MacKey進行加密的Key就被我們稱為MasterKey,即主金鑰,用來加密其他金鑰的金鑰。不過,需要等一下,那MasterKey怎麼辦,它是明文啊。再找個Key來加密MasterKey,那最終無論處理多少道,最後的那個Key肯定是明文,這樣看來,安全的問題還沒有解決啊。
既然此路不通,那我們需要換個思維角度了,仔細想想怎樣處理明文的MasterKey。黑客程式只能竊取我軟體上的東西,如果我把MasterKey放到硬體裡面怎麼樣,黑客是沒能力跑到我硬體裡面把MasterKey取出來的,當然,不排除道高一尺、魔高一丈的情況,但至少99.9%的黑客都沒這能力的。那這樣不就解決了我們遇到的問題了嗎,只要把MasterKey放到硬體裡面(一般是鍵盤的加密模組裡面)就好了。
好,到這裡,我們已經不怕有人把報文中的關鍵資訊獲取到了,總算是安全了。
在最近,老是有人提到“硬加密”,這個有什麼用呢?我上面不是已經解決了加密的問題了嗎,還要這個概念幹什麼?看來我還是有些地方沒考慮到。我一直想的是將明文的密碼加密成密文,其中有個環節需要考慮下,明文的密碼是怎樣形成的,不就是我按鍵盤上面的數字形成的嗎。以前我的軟體處理是這樣的,鍵盤每按一下,我就把那個數字在程式裡面先存起來,等到4位或6位密碼按完後,再把它們合在一起,再送給PinKey加密。那如果黑客程式直接把我的按鍵資訊獲取,那他根本不用破解報文中用PinKey加密後的密碼,直接簡單的就把我輸入的密碼得到了,我前面費盡心思對密碼進行加密處理變得一點意義都沒有了。
怎麼辦?如果我把獲取按鍵的程式固化進入加密硬體(一般在鍵盤中),按鍵的數字根本不通過上層的軟體,直接一步進入硬體裡面處理,等到按鍵按完了後,硬體直接把經過一道處理的按鍵資訊給我上層軟體,此時已經是密文了,就相當於把前面計算PinBlock的處理移到硬體裡面去了,那黑客就沒法獲取我的按鍵了。這種處理現在就被稱為硬加密,伴隨著EMV和3DES演算法,變得越來越流行了,好像自助終端不支援硬加密就不行,連EMV也強制要求了。
最近還有個名詞經常被提到,就是3DES。為什麼要提出3DES的概念呢?我在一篇文章中提到了3
DES的具體演算法,其實推出3DES是因為原來的單DES演算法隨著計算機硬體的速度提升,存在被破解的可能性,所以將演算法進行了改進,改為3DES演算法。但是對於我們理解金融行業的金鑰及加密機制來說,用什麼演算法都一樣。不同演算法的差別只是怎樣對資料進行移位變換等具體處理而已。
對於ATM交易安全性的考慮問題,系統通過pin加密,MAC效驗來保證系統交易資料的合法性及完整性,PIN
BLOCK產生,PIN加密,MAC效驗都可在ATM的加密鍵盤進行。
以下簡單解釋概念:
1.工作金鑰(WK)PIN
Key:持卡人密碼的加密傳輸(TPK,ZPK,PVK)
2.MAC
Key:用於交易報文的鑑別,保證資料完整性(TAK,
ZAK)
3.COM
Key: 用於交易報文的通訊加密/解密(TEK,ZEK)
4.金鑰交換金鑰(KEK)Zone
Master Key:節點間交換工作金鑰時加密保護(ZMK)
5.Terminal
Master Key:用於主機與金融終端交換工作金鑰(TMK)
6.本地主金鑰(LMK)Local
Master Key:用於加密儲存其它金鑰
系統金鑰的管理是保證整個系統交易安全的關鍵,三級金鑰管理體系:
LMK(本地主金鑰)
最高層金鑰,用於加密TMK,ZMK
TMK(終端主金鑰),ZMK(區域主金鑰)
交換金鑰,用於加密PIN
KEY
MAC KEY,COM KEY
PIN KEY,MAC KEY,COM KEY PIN KEY用於加密密碼
工作金鑰
MAC KEY 用於效驗報文
COM KEY 用於通訊加密
相關文章
- git生成ssh金鑰詳細步驟 git如何生成ssh金鑰Git
- git如何生成ssh金鑰 git生成配置ssh金鑰key詳細步驟Git
- vs2015金鑰專業版企業版金鑰大全 visual studio產品金鑰2015
- win11專業版金鑰
- win10專業版金鑰Win10
- 金鑰,私鑰,公鑰的區分
- win10專業版如何清除原先的金鑰_win10專業版怎麼清除金鑰Win10
- 什麼是私有金鑰密碼技術——金鑰加密演算法採用同一把金鑰進行加密和解密密碼加密演算法解密
- office產品金鑰大全 office產品金鑰分享
- 圖解 ECDHE 金鑰交換演算法圖解演算法
- Win10如何更改金鑰 Win10電腦金鑰過期修改金鑰的方法Win10
- bitlocker如何恢復金鑰 bitlocker恢復金鑰的方法
- bandizip註冊產品金鑰 bandizip金鑰使用步驟
- 你真的瞭解Android金鑰庫嗎?Android
- win10專業工作站版金鑰Win10
- oracle 隱式金鑰Oracle
- win10產品金鑰專業版免費 win10產品金鑰在哪裡能找到Win10
- server2003安裝金鑰 server金鑰序列號Server
- VMware v12.1.1 專業版以及永久金鑰
- bitlocker恢復金鑰在哪裡 bitlocker恢復金鑰找回方法介紹
- vmware16許可證金鑰 vmware16金鑰安裝教程
- vmware workstation pro金鑰許可證分享 vmware workstation pro金鑰使用教程
- 【ubuntu】金鑰儲存在過時的 trusted.gpg 金鑰環中UbuntuRust
- 雲端計算安全需要將加密金鑰進行控制加密
- 阿里雲建立[金鑰對]無法通過金鑰檔案SSH雲ECS例項解決辦法阿里
- gitlab配置ssh金鑰Gitlab
- Java安全——金鑰那些事Java
- 從Java金鑰庫讀取輸出私鑰Java
- vmware workstation pro許可證金鑰大全 vmware所有版本許可證金鑰
- 雲資料中心需要加密金鑰的解決方案加密
- HarmonyOS Next 非對稱金鑰生成實戰:多演算法與多方式詳解演算法
- SSH-keygen rsa 金鑰對根據私鑰生成公鑰
- Win11專業工作站版系統金鑰
- 金融行業研發管理行業
- 金融行業_銀行業務又論行業
- 自帶“流量” 綠盟科技助力金融行業使用者練就“火眼金睛”行業
- 博世汽車推出無鑰應用 智慧手機可作虛擬金鑰解鎖車輛
- vs2015產品金鑰專業版 vs2015產品金鑰在哪裡輸入