在平時的工做中,不多接觸安全這塊內容,最近須要本身獨立完成安全這塊內容,在開發中遇到的問題會在下面的理解中獲得相應的解決。html
在交易平臺中,基於安全考慮會對傳輸中的報文進行加密處理,用到最多的是MAC校驗、PIN加密。
MAC校驗保證數據的完整性,PIN加密保證我的信息的安全性(即你輸入的密碼用PIN進行保護)。
------------------------------------------------------------------------------------------------------------------
首先須要明確三點的是:
1:除加密機以外全部看到的密鑰全是以密文形式存在。
2:當你傳輸索引或加密機加密後的密鑰密文給加密機時,加密機會自動找到與之對就應的密鑰明文,進行相應的操做(如加密或解密)
3:加密與解密操做中是應用密鑰的明文(加密機真正計算MAC、PIN時所用的密鑰)。
前提:加密機有一頂層密鑰(LMK)(用與加密其餘密鑰的密鑰),經過多人分段輸入來進行設置。能夠認爲此密鑰安全。
場景:
1)平臺則
1:平臺與平臺之間通常會有一個BMK(用於平臺之間進行工做密鑰(MACKEY,PINKEY)的自動分發),受加密機LMK保護。此密鑰以索引或是經過加密機LMK加密後的密文形式出如今應用數據庫中。
2:工做密鑰經過應用程序發起簽到交易向服務器方得到,服務方返回的工做密鑰是以經過BMK加密以後的密文形式出現。當應用程序接收到工做密鑰密文時,需對工做密鑰密文進行檢驗(checkvalue)。
爲進一步保護工做密鑰,將工做密鑰由BMK加密的密文轉換成以LMK加密的密文存儲在應用數據庫中。
3:應用程序發起交易(餘額查詢)根據相應的要求,進行MAC、PIN的組包。
MAC:根據要求組MACBLOCK,傳MACKBLOCK、MAC密鑰密文 獲得MAC。
PIN:根據要求是否須要賬號,傳賬號、PIN密鑰密文得PIN。
4:程序程序作的就是計算MAC、驗證MAC、PIN轉換操做來完成報文的傳遞。算法
2)終端測
1:終端與平臺之間通常會有一個TMK。
TMK 與BMK的做用基本上相同,以後的處理過程相同,請參考慮平臺則說明。數據庫
-------------------------------------------------------------------------------------------------------------------安全
寫的很是好的參考文件:http://www.360doc.com/content/14/0217/15/15841745_353246743.shtml
服務器
關於checkvalue生成與校驗:測試
引用:http://www.bctest.com/wtjd-show.asp?id=2370加密
1)銀聯直聯終端測試中,在POS終端簽到的應答報文中,62域是如何規定的?spa
62域長度應爲24或40個字節。對於單倍長密鑰算法:前12個字節爲PIN的工做密鑰的密文,後12個字節爲MAC的工做密鑰的密文。(其中,前8個字 節是密文,後4個字節是checkvalue;用前8個字節解出的明文作key,對8個字節00作單倍長密鑰算法,取結果的前四位與checkvalue 的值比較應該是一致的)。htm
對於雙倍長密鑰算法:前20個字節爲PIN的工做密鑰的密文,後20個字節爲MAC的工做密鑰的密文。(其中,「PIN工做密鑰」前16個字節是密文,後 4個字節是checkvalue;用前16個字節解出明文作key,對8個字節00作雙倍長密鑰算法,取結果的前四位與checkvalue 的值比較應該是一致的;「MAC工做密鑰」前8個字節是密文,再8個字節是二進制零,後4個字節是checkvalue;用前8個字節解出明文作key, 對8個字節00作單倍長密鑰算法,取結果的前四位與checkvalue 的值比較應該是一致的)。索引