金融行業(yè)密鑰詳解.doc_第1頁
金融行業(yè)密鑰詳解.doc_第2頁
金融行業(yè)密鑰詳解.doc_第3頁
金融行業(yè)密鑰詳解.doc_第4頁
金融行業(yè)密鑰詳解.doc_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

金融行業(yè)密鑰詳解 劉永勝 2005年6月于深圳金融行業(yè)因為對數(shù)據(jù)比較敏感,所以對數(shù)據(jù)的加密也相應的比較重視。在其中有關密鑰及加密方面的文章很少,并且散發(fā)在各個銀行及公司的手中,在網(wǎng)上沒有專門對這部分進行介紹的。本文對金融行業(yè)的密鑰進行較深入的介紹,包括象到底什么是主密鑰(MasterKey)、傳輸密鑰(MacKey),為什么我們需要這些東西等。本文采取追源溯本的方式,力求讓對這感興趣的人達到知其然,同時也知其所以然,而不是模模糊糊的知道幾個概念和名詞。因為本文主要是針對對金融行業(yè)密鑰不是很熟悉的人,所以如果你對密鑰很熟悉就不必仔細看了。好了,咱們言規(guī)正傳。我們知道,金融行業(yè)有很多數(shù)據(jù)要在網(wǎng)絡上傳遞,包括從前置到主機,從自助終端到前置等,這些數(shù)據(jù)在網(wǎng)絡上傳來傳去,我們很容易就會想到安全性的問題,如果這些數(shù)據(jù)被人竊取或攔截下來,那我們怎么敢在銀行存錢了。這個問題在計算機出現(xiàn)時就被前人考慮到了,所以出現(xiàn)了很多各種各樣的加解密技術。拋開這些不管,假設當初由我們自己來設計怎樣解決數(shù)據(jù)被竊取的情況。假設我們有一段數(shù)據(jù),是ATM取款的報文,包括一個人的磁卡號、密碼、取款金額,現(xiàn)在需要將這些數(shù)據(jù)從一臺ATM機器傳到前置機處理,這些數(shù)據(jù)是比較機密的,如果被人竊取了,就可以用該卡號和密碼把帳戶中的錢取走。 首先,我們可以想到用專用的銀行內部網(wǎng)絡,外面的人無法獲得網(wǎng)絡的訪問權。這個仔細想想顯然不可行的,因為一是不能保證外人一定沒辦法進入銀行內部網(wǎng)絡,二是銀行內部人員作案是沒法防止的。接著,我們很容易想到,既然保證數(shù)據(jù)不被竊取的可能性很小,那我們何不變換一下思路,數(shù)據(jù)避免不了被竊取,那我如果將數(shù)據(jù)處理下,讓你即使竊取到數(shù)據(jù),也是一些無用的亂碼,這樣不就解決問題了嗎。這個想法比較接近現(xiàn)在的做法了,當前置機接收到了數(shù)據(jù),它肯定是對數(shù)據(jù)進行反處理,即與ATM端完全步驟相反的數(shù)據(jù)處理,即可得到明文的數(shù)據(jù)。我們再進一步想想,如果因為某種原因,報文中的取款金額被改變了,這樣就會導致ATM出的錢和前置扣帳記錄的錢不一致的情況,看來我們必須加上一個驗證機制,當前置機收到ATM發(fā)送的一個報文時,能夠確認報文中的數(shù)據(jù)在網(wǎng)絡傳輸過程中沒有被更改過。怎樣實現(xiàn)?最簡單的,象計算機串口通訊一樣,對通訊數(shù)據(jù)每一位進行異或,得到0或1,把0或1放在在通訊數(shù)據(jù)后面,算是加上一個奇偶校驗位,收到數(shù)據(jù)同樣對數(shù)據(jù)每位進行異或,得到0或1,再判斷下收到數(shù)據(jù)最后一位與算出來的是否一致。這種方式太簡單了,對于上面提到的ATM到前置機的報文來說,沒什么用處,不過我們可以將對數(shù)據(jù)每一位異或的算法改成一個比較復雜點的。因為DES算法已經(jīng)出來了很多年了,并且在金融行業(yè)也有廣泛的應用,我們何不用DES算法進行處理,來解決上面的問題呢。我們應該了解DES算法(此處指單DES)的,就是用一個64bit 的Key對64bit的數(shù)據(jù)進行處理,得到加密后的64bit數(shù)據(jù)。那我們用一個Key對上面的報文進行DES算法,得到加密后的64bit數(shù)據(jù),放到報文的最后,跟報文一起送到前置機,前置機收到報文后,同樣用Key對數(shù)據(jù)(不包括最后的64bit加密數(shù)據(jù))進行DES加密,得出64bit的數(shù)據(jù),用該數(shù)據(jù)與ATM發(fā)送過來的報文最后的64bit數(shù)據(jù)比較,如果兩個數(shù)據(jù)相同,說明報文沒有中途被更改過。再進一步,因為DES只能夠對64bit的數(shù)據(jù)進行加密,一個報文可不止64bit,哪我們怎么處理呢?只對報文開頭的64bit加密?這個是顯然不夠的。我們可以這樣,先對報文的開始64bit加密,接著對報文第二個64bit加密,依次類推,不過這有問題,因為每個64bit都會得到同樣長度的加密后的數(shù)據(jù),我不能把這些數(shù)據(jù)都放到報文的后面,那報文的長度不變成兩倍長了。換個思路,我先對報文第一個64bit加密,得到64bit的加密后數(shù)據(jù)data1,接著再拿加密后的data1與報文第二個64bit數(shù)據(jù)進行按位異或,得到同樣長64bit的數(shù)據(jù)data2,我再用Key對data2加密,得到加密后的數(shù)據(jù)data3,再拿data3與報文第三個64bit數(shù)據(jù)進行按位異或,同樣的處理依次類推。直到最后會得到一個64bit的數(shù)據(jù),將這個數(shù)據(jù)放到報文的最后發(fā)到前置機,這樣報文的長度只增加了64bit而已。這個算法就叫做MAC算法。好了,到目前為止我們已經(jīng)知道了什么是MAC算法,為什么需要它,接著我們再看看經(jīng)常被提起的另外一個名詞。在上面說到MAC算法的時候,我們會注意到其中進行DES加密算法時提到了一個Key,這個用來參與MAC計算的Key就常被稱為MacKey,也有叫工作密鑰、過程密鑰的。我們繼續(xù)來處理ATM和前置機間網(wǎng)絡數(shù)據(jù)傳輸?shù)膯栴}。前面提到的MAC算法對傳送的報文進行了處理,保證了在網(wǎng)絡傳輸過程中數(shù)據(jù)不會被有意或無意的篡改,但是,我們再進一步想想,如果仍然是上面提到的一個取款報文,如果想作案的話,我不改報文的內容,我只是截取報文的內容,因為內容里面有卡號和密碼,都是明文的形式,很容易就看出來哪些內容是卡號、哪些內容是密碼。有了卡號和密碼,我就好辦了,找個讀卡器就能夠很快的制出一張磁卡,然后拿這個磁卡可以隨便取錢了,根本不需要修改報文,這樣你就算前置機對報文的MAC校驗通過了,也只是保證了報文沒改動過,對于防止作案沒有實質上的幫助。那我們很容易想到,我再加上一道加密,這次我把整個存款的報文都用DES加密,將明文全部轉換成密文,然后送到前置機,這下好了吧。即使你把報文截取了也沒用,你拿著這些密文也沒有用,你也沒有DES的密鑰來解密它,只有前置機才知道密鑰。這是個好主意,確實防止了卡號和密碼等被人獲知的危險。這也是現(xiàn)在普遍采取的做法,不過我們需要對這個做法進行一些改進。首先,我們要知道用DES對數(shù)據(jù)加解密是耗時間的,尤其是使用硬加密(下一步講什么是硬加密)的情況,速度是比較慢的。我們來想想,整個存款報文有必要每個數(shù)據(jù)都DES加密嗎,象報文中的什么流水號、ATM號等信息,對它們加密沒什么意義,進一步講,取款金額加密也沒意義,假設你取500塊,但是你將報文改成了100塊,導致主機只把你帳戶扣100塊錢,你白賺了400塊。這個聽起來挺劃算的,實際上是不可行的,因為這樣造成了帳務上的短款,銀行當然會查賬的,根據(jù)ATM記錄的硬件出鈔張數(shù)和主機扣款金額,肯定會把你查出來的,那這種掩耳盜鈴的做法,下場顯而易見,想必沒人這么傻。我們來考慮一個報文中到底什么信息是需要加密的,目前一般的做法是只對帳號和密碼(也有只對密碼加密的)進行加密,其他的內容不加密的,明文就明文,沒什么大不了的。對帳號和密碼加密有個術語,我們可能都聽說過,叫PinBlock,即PIN塊,就是對帳號和密碼進行DES加密處理后的一個密文數(shù)據(jù)塊。即然使用了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加密數(shù)據(jù),就把明文的Key獲取了。這個聽起來好像挺玄乎的,不過是有這個可能性的,尤其是網(wǎng)上銀行這些東東最容易中招了。這樣看來,我們還要對PinKey和MacKey本身進行加密,不要讓人知道了。怎樣實現(xiàn),同樣是DES算法大顯身手的地方。我再找個Key對PinKey和MacKey進行一次加密,這樣你就看不到PinKey和MacKey的明文了,好,解決問題了。這時用來對PinKey和MacKey進行加密的Key就被我們稱為MasterKey,即主密鑰,用來加密其他密鑰的密鑰。不過,需要等一下,那MasterKey怎么辦,它是明文啊。再找個Key來加密MasterKey,那最終無論處理多少道,最后的那個Key肯定是明文,這樣看來,安全的問題還沒有解決啊。既然此路不通,那我們需要換個思維角度了,仔細想想怎樣處理明文的MasterKey。黑客程序只能竊取我軟件上的東西,如果我把MasterKey放到硬件里面怎么樣,黑客是沒能力跑到我硬件里面把MasterKey取出來的,當然,不排除道高一尺、魔高一丈的情況,但至少99.9的黑客都沒這能力的。那這樣不就解決了我們遇到的問題了嗎,只要把MasterKey放到硬件里面(一般是鍵盤的加密模塊里面)就好了。好,到這里,我們已經(jīng)不怕有人把報文中的關鍵信息獲取到了,總算是安全了。在最近,老是有人提到“硬加密”,這個有什么用呢?我上面不是已經(jīng)解決了加密的問題了嗎,還要這個概念干什么?看來我還是有些地方?jīng)]考慮到。我一直想的是將明文的密碼加密成密文,其中有個環(huán)節(jié)需要考慮下,明文的密碼是怎樣形成的,不就是我按鍵盤上面的數(shù)字形成的嗎。以前我的軟件處理是這樣的,鍵盤每按一下,我就把那個數(shù)字在程序里面先存起來,等到4位或6位密碼按完后,再把它們合在一起,再送給PinKey加密。那如果黑客程序直接把我的按鍵信息獲取,那他根本不用破解報文中用PinKey加密后的密碼,直接簡單的就把我輸入的密碼得到了,我前面費盡心思對密碼進行加密處理變得一點意義都沒有了。怎么辦?如果我把獲取按鍵的程序固化進入加密硬件(一般在鍵盤中),按鍵的數(shù)字根本不通過上層的軟件,直接一步進入硬件里面處理,等到按鍵按完了后,硬件直接把經(jīng)過一道處理的按鍵信息給我上層軟件,此時已經(jīng)是密文了,就相當于把前面計算PinBlock的處理移到硬件里面去了,那黑客就沒法獲取我的按鍵了。這種處理現(xiàn)在就被稱為硬加密,伴隨著EMV和3DES算法,變得越來越流行了,好像自助終端不支持硬加密就不行,連EMV也強制要求了。最近還有個名詞經(jīng)常被提到,就是3DES。為什么要提出3DES的概念呢?我在一篇文章中提到了3 DES的具體算法,其實推出3DES是因為原來的單DES算法隨著計算機硬件的速度提升,存在被破解的可能性,所以將算法進行了改進,改為3DES算法。但是對于我們理解金融行業(yè)的密鑰及加密機制來說,用什么算法都一樣。不同算法的差別只是怎樣對數(shù)據(jù)進行移位變換等具體處理而已?,F(xiàn)在我們應該對金融行業(yè)用到的有關密鑰方面的知識有了較清晰的認識,至于具體更加詳細的相關問題,我們以后再討論。全文完金融行業(yè)因為對數(shù)據(jù)比較敏感,所以對數(shù)據(jù)的加密也相應的比較重視。在其中有關密鑰及加密方面的文章很少,并且散發(fā)在各個銀行及公司的手中,在網(wǎng)上沒有專門對這部分進行介紹的。本文對金融行業(yè)的密鑰進行較深入的介紹,包括象到底什么是主密鑰(MasterKey)、傳輸密鑰(MacKey),為什么我們需要這些東西等。本文采取追源溯本的方式,力求讓對這感興趣的人達到知其然,同時也知其所以然,而不是模模糊糊的知道幾個概念和名詞。因為本文主要是針對對金融行業(yè)密鑰不是很熟悉的人,所以如果你對密鑰很熟悉就不必仔細看了。好了,咱們言規(guī)正傳。我們知道,金融行業(yè)有很多數(shù)據(jù)要在網(wǎng)絡上傳遞,包括從前置到主機,從自助終端到前置等,這些數(shù)據(jù)在網(wǎng)絡上傳來傳去,我們很容易就會想到安全性的問題,如果這些數(shù)據(jù)被人竊取或攔截下來,那我們怎么敢在銀行存錢了。這個問題在計算機出現(xiàn)時就被前人考慮到了,所以出現(xiàn)了很多各種各樣的加解密技術。拋開這些不管,假設當初由我們自己來設計怎樣解決數(shù)據(jù)被竊取的情況。假設我們有一段數(shù)據(jù),是ATM取款的報文,包括一個人的磁卡號、密碼、取款金額,現(xiàn)在需要將這些數(shù)據(jù)從一臺ATM機器傳到前置機處理,這些數(shù)據(jù)是比較機密的,如果被人竊取了,就可以用該卡號和密碼把帳戶中的錢取走。首先,我們可以想到用專用的銀行內部網(wǎng)絡,外面的人無法獲得網(wǎng)絡的訪問權。這個仔細想想顯然不可行的,因為一是不能保證外人一定沒辦法進入銀行內部網(wǎng)絡,二是銀行內部人員作案是沒法防止的。接著,我們很容易想到,既然保證數(shù)據(jù)不被竊取的可能性很小,那我們何不變換一下思路,數(shù)據(jù)避免不了被竊取,那我如果將數(shù)據(jù)處理下,讓你即使竊取到數(shù)據(jù),也是一些無用的亂碼,這樣不就解決問題了嗎。這個想法比較接近現(xiàn)在的做法了,當前置機接收到了數(shù)據(jù),它肯定是對數(shù)據(jù)進行反處理,即與ATM端完全步驟相反的數(shù)據(jù)處理,即可得到明文的數(shù)據(jù)。我們再進一步想想,如果因為某種原因,報文中的取款金額被改變了,這樣就會導致ATM出的錢和前置扣帳記錄的錢不一致的情況,看來我們必須加上一個驗證機制,當前置機收到ATM發(fā)送的一個報文時,能夠確認報文中的數(shù)據(jù)在網(wǎng)絡傳輸過程中沒有被更改過。怎樣實現(xiàn)?最簡單的,象計算機串口通訊一樣,對通訊數(shù)據(jù)每一位進行異或,得到0或1,把0或1放在在通訊數(shù)據(jù)后面,算是加上一個奇偶校驗位,收到數(shù)據(jù)同樣對數(shù)據(jù)每位進行異或,得到0或1,再判斷下收到數(shù)據(jù)最后一位與算出來的是否一致。這種方式太簡單了,對于上面提到的ATM到前置機的報文來說,沒什么用處,不過我們可以將對數(shù)據(jù)每一位異或的算法改成一個比較復雜點的。因為DES算法已經(jīng)出來了很多年了,并且在金融行業(yè)也有廣泛的應用,我們何不用DES算法進行處理,來解決上面的問題呢。我們應該了解DES算法(此處指單DES)的,就是用一個64bit 的Key對64bit的數(shù)據(jù)進行處理,得到加密后的64bit數(shù)據(jù)。那我們用一個Key對上面的報文進行DES算法,得到加密后的64bit數(shù)據(jù),放到報文的最后,跟報文一起送到前置機,前置機收到報文后,同樣用Key對數(shù)據(jù)(不包括最后的64bit加密數(shù)據(jù))進行DES加密,得出64bit的數(shù)據(jù),用該數(shù)據(jù)與ATM發(fā)送過來的報文最后的64bit數(shù)據(jù)比較,如果兩個數(shù)據(jù)相同,說明報文沒有中途被更改過。再進一步,因為DES只能夠對64bit的數(shù)據(jù)進行加密,一個報文可不止64bit,哪我們怎么處理呢?只對報文開頭的64bit加密?這個是顯然不夠的。我們可以這樣,先對報文的開始64bit加密,接著對報文第二個64bit加密,依次類推,不過這有問題,因為每個64bit都會得到同樣長度的加密后的數(shù)據(jù),我不能把這些數(shù)據(jù)都放到報文的后面,那報文的長度不變成兩倍長了。換個思路,我先對報文第一個64bit加密,得到64bit的加密后數(shù)據(jù)data1,接著再拿加密后的data1與報文第二個64bit數(shù)據(jù)進行按位異或,得到同樣長64bit的數(shù)據(jù)data2,我再用Key對data2加密,得到加密后的數(shù)據(jù)data3,再拿data3與報文第三個64bit數(shù)據(jù)進行按位異或,同樣的處理依次類推。直到最后會得到一個64bit的數(shù)據(jù),將這個數(shù)據(jù)放到報文的最后發(fā)到前置機,這樣報文的長度只增加了64bit而已。這個算法就叫做MAC算法。好了,到目前為止我們已經(jīng)知道了什么是MAC算法,為什么需要它,接著我們再看看經(jīng)常被提起的另外一個名詞。在上面說到MAC算法的時候,我們會注意到其中進行DES加密算法時提到了一個Key,這個用來參與MAC計算的Key就常被稱為MacKey,也有叫工作密鑰、過程密鑰的。我們繼續(xù)來處理ATM和前置機間網(wǎng)絡數(shù)據(jù)傳輸?shù)膯栴}。前面提到的MAC算法對傳送的報文進行了處理,保證了在網(wǎng)絡傳輸過程中數(shù)據(jù)不會被有意或無意的篡改,但是,我們再進一步想想,如果仍然是上面提到的一個取款報文,如果想作案的話,我不改報文的內容,我只是截取報文的內容,因為內容里面有卡號和密碼,都是明文的形式,很容易就看出來哪些內容是卡號、哪些內容是密碼。有了卡號和密碼,我就好辦了,找個讀卡器就能夠很快的制出一張磁卡,然后拿這個磁卡可以隨便取錢了,根本不需要修改報文,這樣你就算前置機對報文的MAC校驗通過了,也只是保證了報文沒改動過,對于防止作案沒有實質上的幫助。那我們很容易想到,我再加上一道加密,這次我把整個存款的報文都用DES加密,將明文全部轉換成密文,然后送到前置機,這下好了吧。即使你把報文截取了也沒用,你拿著這些密文也沒有用,你也沒有DES的密鑰來解密它,只有前置機才知道密鑰。這是個好主意,確實防止了卡號和密碼等被人獲知的危險。這也是現(xiàn)在普遍采取的做法,不過我們需要對這個做法進行一些改進。首先,我們要知道用DES對數(shù)據(jù)加解密是耗時間的,尤其是使用硬加密(下一步講什么是硬加密)的情況,速度是比較慢的。我們來想想,整個存款報文有必要每個數(shù)據(jù)都DES加密嗎,象報文中的什么流水號、ATM號等信息,對它們加密沒什么意義,進一步講,取款金額加密也沒意義,假設你取500塊,但是你將報文改成了100塊,導致主機只把你帳戶扣100塊錢,你白賺了400塊。這個聽起來挺劃算的,實際上是不可行的,因為這樣造成了帳務上的短款,銀行當然會查賬的,根據(jù)ATM記錄的硬件出鈔張數(shù)和主機扣款金額,肯定會把你查出來的,那這種掩耳盜鈴的做法,下場顯而易見,想必沒人這么傻。我們來考慮一個報文中到底什么信息是需要加密的,目前一般的做法是只對帳號和密碼(也有只對密碼加密的)進行加密,其他的內容不加密的,明文就明文,沒什么大不了的。對帳號和密碼加密有個術語,我們可能都聽說過,叫PinBlock,即PIN塊,就是對帳號和密碼進行DES加密處理后的一個密文數(shù)據(jù)塊。即然使用了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加密數(shù)據(jù),就把明文的Key獲取了。這個聽起來好像挺玄乎的,不過是有這個可能性的,尤其是網(wǎng)上銀行這些東東最容易中招了。這樣看來,我們還要對PinKey和MacKey本身進行加密,不要讓人知道了。怎樣實現(xiàn),同樣是DES算法大顯身手的地方。我再找個Key對PinKey和MacKey進行一次加密,這樣你就看不到PinKey和MacKey的明文了,好,解決問題了。這時用來對PinKey和MacKey進行加密的Key就被我們稱為MasterKey,即主密鑰,用來加密其他密鑰的密鑰。不過,需要等一下,那MasterKey怎么辦,它是明文啊。再找個Key來加密MasterKey,那最終無論處理多少道,最后的那個Key肯定是明文,這樣看來,安全的問題還沒有解決啊。既然此路不通,那我們需要換個思維角度了,仔細想想怎樣處理明文的MasterKey。黑客程序只能竊取我軟件上的東西,如果我把MasterKey放到硬件里面怎么樣,黑客是沒能力跑到我硬件里面把MasterKey取出來的,當然,不排除道高一尺、魔高一丈的情況,但至少99.9的黑客都沒這能力的。那這樣不就解決了我們遇到的問題了嗎,只要把MasterKey放到硬件里面(一般是鍵盤的加密模塊里面)就好了。好,到這里,我們已經(jīng)不怕有人把報文中的關鍵信息獲取到了,總算是安全了。在最近,老是有人提到“硬加密”,這個有什么用呢?我上面不是已經(jīng)解決了加密的問題了嗎,還要這個概念干什么?看來我還是有些地方?jīng)]考慮到。我一直想的是將明文的密碼加密成密文,其中有個環(huán)節(jié)需要考慮下,明文的密碼是怎樣形成的,不就是我按鍵盤上面的數(shù)字形成的嗎。以前我的軟件處理是這樣的,鍵盤每按一下,我就把那個數(shù)字在程序里面先存起來,等到4位或6位密碼按完后,再把它們合在一起,再送給PinKey加密。那如果黑客程序直接把我的按鍵信息獲取,那他根本不用破解報文中用PinKey加密后的密碼,直接簡單的就把我輸入的密碼得到了,我前面費盡心思對密碼進行加密處理變得一點意義都沒有了。怎么辦?如果我把獲取按鍵的程序固化進入加密硬件(一般在鍵盤中),按鍵的數(shù)字根本不通過上層的軟件,直接一步進入硬件里面處理,等到按鍵按完了后,硬件直接把經(jīng)過一道處理的按鍵信息給我上層軟件,此時已經(jīng)是密文了,就相當于把前面計算PinBlock的處理移到硬件里面去了,那黑客就沒法獲取我的按鍵了。這種處理現(xiàn)在就被稱為硬加密,伴隨著EMV和3DES算法,變得越來越流行了,好像自助終端不支持硬加密就不行,連EMV也強制要求了。最近還有個名詞經(jīng)常被提到,就是3DES。為什么要提出3DES的概念呢?我在一篇文章中提到了3 DES的具體算法,其實推出3DES是因為原來的單DES算法隨著計算機硬件的速度提升,存在被破解的可能性,所以將算法進行了改進,改為3DES算法。但是對于我們理解金融行業(yè)的密鑰及加密機制來說,用什么算法都一樣。不同算法的差別只是怎樣對數(shù)據(jù)進行移位變換等具體處理而已。對于ATM交易安全性的考慮問題,系統(tǒng)通過pin加密,MAC效驗來保證系統(tǒng)交易數(shù)據(jù)的合法性及完整性,PIN BLOCK產(chǎn)生,PIN加密,MAC效驗都可在ATM的加密鍵盤進行。以下簡單解釋概念:1工作密鑰(WK)PIN Key:持卡人密碼的加密傳輸(TPK,ZPK,PVK)2MAC Key:用于交易報文的鑒別,保證數(shù)據(jù)完整性(TAK, ZAK)3COM Key: 用于交易報文的通訊加密/解密(TEK,ZEK)4密鑰交換密鑰(KEK)Zone Master Key:節(jié)點間交換工作密鑰時加密保護(ZMK)5Terminal Master Key:用于主機與金融終端交換工作密鑰(TMK)6本地主密鑰(LMK)Local Master Key:用于加密存儲其它密鑰系統(tǒng)密鑰的管理是保證整個系統(tǒng)交易安全的關鍵,三級密鑰管理體系:LMK(本地主密鑰) 最高層密鑰,用于加密TMK,ZMK TMK(終端主密鑰),ZMK(區(qū)域主密鑰) 交換密鑰,用于加密PIN KEY MAC KEY,COM KEY PIN KEY,MAC KEY,COM KEY PIN KEY用于加密密碼工作密鑰 MAC KEY 用于效驗報文 COM KEY 用于通訊加密 金融行業(yè)因為對比力敏感,所以對數(shù)據(jù)的加密也相當?shù)谋攘ψ⒊?。正在其外相關密鑰及加密方面的文章很少,并且分發(fā)正在各個銀行及公司的手外,正在網(wǎng)上沒無特意對那部門進行引見的。本文對金融行業(yè)的密鑰進行較深切的引見,包羅象到底什么是從密鑰()、傳輸密鑰(),為什么我們需要那些工具等。本文采納逃流溯本的體例,力圖讓對那感樂趣的人達到知其然,同時也知其所以然,而不是?;秀焙臅缘脦讉€概念和名詞。因為本文次如果針對對金融行業(yè)密鑰不是很熟悉的人,所以若是你對密鑰很熟悉就不必細心看了。好了,我們言規(guī)反傳。我們曉得,金融行業(yè)無很大都據(jù)要正在上傳送,包羅疇前放到從機,從自幫結尾到前放等,那些數(shù)據(jù)正在收集上傳來傳去,我們很容難就會想到平安性的問題,若是那些數(shù)據(jù)被人竊取或攔截下來,那我們如何敢正在銀行存錢了。阿誰問題正在計較機呈現(xiàn)時就被前人考慮到了,所以呈現(xiàn)了良多各類各樣的加解密。拋開那些不管,假設當初由我們本人來設想如何處置數(shù)據(jù)被竊取的情況。假設我們無一段數(shù)據(jù),是取款的報文,包羅一小我的磁卡號、密碼、取款金額,現(xiàn)正在需要將那些數(shù)據(jù)從一臺機械傳到前放機處置,那些數(shù)據(jù)是比力秘密的,若是被人竊取了,就可以或許用該卡號和密碼把帳戶外的錢取走。起首,我們可以或許想到用公用的銀行內部收集,外面的人無法獲得收集的拜候權。阿誰細心想想較著不成行的,因為一是不能保證外人必然沒法子進入銀行內部收集,二是銀行內部人員做案是沒法防行的。接滅,我們很容難想到,既然保證數(shù)據(jù)不被竊取的可能性很小,那我們何不變換一下思緒,數(shù)據(jù)避免不了被竊取,那我若是將數(shù)據(jù)處置下,讓你即便竊取到數(shù)據(jù),也是一些無用的亂碼,那樣不就處置問題了嗎。阿誰設法比力接近現(xiàn)正在的做法了,當前放機領受到了數(shù)據(jù),它必定是對數(shù)據(jù)進行反處置,即取端完全步伐相反的數(shù)據(jù)處置,即可獲得明文的數(shù)據(jù)。我們再進一步想想,若是因為某類啟事,報文外的取款金額被改變了,那樣就會導致出的錢和前放扣帳記實的錢不不合的情況,看來我們必需加上一個驗證機制,當前放機收到發(fā)送的一個報文時,可以或許確認報文外的數(shù)據(jù)正在收集傳輸過程外沒無被更悔改。如何實現(xiàn)?最簡單的,象計較機串口通信一樣,對通信數(shù)據(jù)每一位進行同或,獲得或,把或放正在正在通信數(shù)據(jù)后面,算是加上一個奇偶校驗位,收到數(shù)據(jù)同樣對數(shù)據(jù)每位進行同或,獲得或,再判斷下收到數(shù)據(jù)最后一位取算出來的可否不合。那類體例太簡單了,對于上面提到的到前放機的報文來說,沒什么用途,不外我們可以或許將對數(shù)據(jù)每一位同或的算法改成一個比力復純點的。因為算法曾經(jīng)出來了良多年了,并且正在金融行業(yè)也無普遍的,我們何不用算法進行處置,來處置上面的問題呢。我們理當體會算法(此處指單)的,就是用一個的對的數(shù)據(jù)進行處置,獲得加密后的數(shù)據(jù)。那我們用一個對上面的報文進行算法,獲得加密后的數(shù)據(jù),放到報文的最后,跟報文一路送到前放機,前放機收到報文后,同樣用對數(shù)據(jù)(不包羅最后的加密數(shù)據(jù))進行加密,得出的數(shù)據(jù),用該數(shù)據(jù)取發(fā)送過來的報文最后的數(shù)據(jù)比力,若是兩個數(shù)據(jù)不異,申明報文沒無外途被更悔改。再進一步,因為只可以或許對的數(shù)據(jù)進行加密,一個報文可不可,哪我們如何處置呢?只對報文開首的加密?阿誰是較著不夠的。我們可以或許那樣,先對報文的起頭加密,接滅對報文第二個加密,按序類推,不外那無問題,因為每個城市獲得同樣長度的加密后的數(shù)據(jù),我不能把那些數(shù)據(jù)都放到報文的后面,那報文的長度不變成兩倍長了。換個思緒,我先對報文第一個加密,獲得的加密后數(shù)據(jù),接滅再拿加密后的取報文第二個數(shù)據(jù)進行按位同或,獲得同樣長的數(shù)據(jù),我再用對加密,獲得加密后的數(shù)據(jù),再拿取報文第三個數(shù)據(jù)進行按位同或,同樣的處置按序類推。曲到最后會獲得一個的數(shù)據(jù),將阿誰數(shù)據(jù)放到報文的最后發(fā)到前放機,那樣報文的長度只添加了而未。阿誰算法就叫做算法。好了,到目前為行我們曾經(jīng)曉得了什么是算法,為什么需要它,接滅我們再看看經(jīng)常被提起的別的一個名詞。正在上面說到算法的時候,我們會寄望到其外進行加密算法時提到了一個,阿誰用來參取計較的就常被稱為,也無叫工做密鑰、過程密鑰的。我們繼續(xù)來處置和前放機間收集數(shù)據(jù)傳輸?shù)膯栴}。前面提到的算法對傳送的報文進行了處置,保證了正在收集傳輸過程外數(shù)據(jù)不會被成心或無意的篡改,可是,我們再進一步想想,若是仍然是上面提到的一個取款報文,若是想做案的話,我不改報文的內容,我只是截取報文的內容,因為內容里面無卡號和密碼,都是明文的形式,很容難就看出來哪些內容是卡號、哪些內容是密碼。無了卡號和密碼,我就好辦了,覓個讀卡器就可以或許很快的制出一馳磁卡,然后拿阿誰磁卡可以或許隨便取錢了,根柢不需要刪改報文,那樣你就算前放機對報文的校驗通過了,也只是保證了報文沒改動過,對于防行做案沒無實量上的協(xié)幫。那我們很容難想到,我再加上一道加密,那次我把零個存款的報文都用加密,將明文全數(shù)轉換成密文,然后送到前放機,那下好了吧。即便你把報文截取了也沒用,你拿滅那些密文也沒無用,你也沒無的密鑰來解密它,只要前放機才曉得密鑰。那是個好從意,確實防行了卡號和密碼等被人獲知的危險。那也是現(xiàn)正在遍及采納的做法,不外我們需要對阿誰做法進行一些改良。起首,我們要曉得用對數(shù)據(jù)加解密是耗時間的,出格是利用軟加密(下一步講什么是軟加密)的情況,速度是比力慢的。我們來想想,零個存款報文無需要每個數(shù)據(jù)都加密嗎,象報文外的什么流水號、號等動靜,對它們加密沒什么意義,進一步講,取款金額加密也沒意義,假設你取塊,可是你將報文改成了塊,導致從機只把你帳戶扣塊錢,你白賠了塊。阿誰聽起來挺劃算的,現(xiàn)實上是不成行的,因為那樣形成了帳務上的短款,銀行當然會查賬的,按照記實的軟件出鈔馳數(shù)和從機扣款金額,必定會把你查出來的,那那類掩耳盜鈴的做法,下場顯而難見,想必沒人那么傻。我們來考慮一個報文外到底什么動靜是需要加密的,目前一般的做法是只對帳號和密碼(也無只對密碼加密的)進行加密,其他的內容不加密的,明文就明文,沒什么大不了的。對帳號和密碼加密無個術語,我們可能都傳聞過,叫,即塊,就是對帳號和密碼進行加密處置后的一個密文數(shù)據(jù)塊。即然利用了算法來加密帳號和密碼,則必然無個來加密,那么我們就把阿誰稱為,就是特意來加密用戶帳戶和密碼的。至于如何進行加密形成最后的密文,無良多標準的,象、等標準,其實它們大同小同,就是正在對報文外的密碼進行一個預處置,再用來加密,次要的不同就是如何預處置而未,比如無的是密碼后面補,補夠位,就是類似那樣的預處置。到那里我們理當理解和了。通過和對報文進行了兩沉處置,根基上報文就是平安的了。若是我們對算法比力體會,就會曉得,若是想對加密后的密文解密,必需要曉得才行,所以說必然要保密。如何來保密呢?我們前面提到的無論是算仍是算塊,都是間接拿明文的來計較的,那么阿誰很容難被竊取的,比如無人正在機械上拆了個黑客法式,只需檢測到你正在用加密數(shù)據(jù),就把明文的獲取了。阿誰聽起來仿佛挺玄乎的,不外是無阿誰可能性的,出格是網(wǎng)上銀行那些東東最容難外招了。那樣看來,我們還要對和本身進行加密,不要讓人曉得了。如何實現(xiàn),同樣是算法大顯身手的處所。我再覓個對和進行一次加密,那樣你就看不到和的明文了,好,處置問題了。那時用來對和進行加密的就被我們稱為,即從密鑰,用來加密其他密鑰的密鑰。不外,需要等一下,那如何辦,它是明文啊。再覓個來加密,那最末無論處置幾多道,最后的阿誰必定是明文,那樣看來,平安的問題還沒無處置啊。既然此路不通,那我們需要換個思維角度了,細心想想如何處置明文的。黑客法式只能竊取我上的工具,若是我把放到軟件里面如何樣,黑客是沒能力跑到我軟件里面把取出來的,當然,不解除道高一尺、魔高一丈的情況,但至少的黑客都沒那能力的。那那樣不就處置了我們逢到的問題了嗎,只需把放到軟件里面(一般是鍵盤的加密模塊里面)就好了。好,到那里,我們曾經(jīng)不怕無人把報文外的環(huán)節(jié)動靜獲取到了,分算是平安了。正在比來,老是無人提到“軟加密”,阿誰無什么用呢?我上面不是曾經(jīng)處置了加密的問題了嗎,還要阿誰概念干什么?看來我仍是無些處所沒考慮到。我不竭想的是將明文的密碼加密成密文,其外無個環(huán)節(jié)需要考慮下,明文的密碼是如何形成的,不就是我按鍵盤上面的數(shù)字形成的嗎。以前我的軟件處置是那樣的,鍵盤每按一下,我就把阿誰數(shù)字正在法式里面先存起來,比及位或位密碼按完后,再把它們合正在一路,再送給加密。那若是黑客法式間接把我的按鍵動靜獲取,那他根柢不用破解報文外用加密后的密碼,間接簡單的就把我輸入的密碼獲得了,我前面費盡心思對密碼進行加密處置變得一點意義都沒無了。如何辦?若是我把獲取按鍵的法式固化進入加密軟件(一般正在鍵盤外),按鍵的數(shù)字根柢不通過上層的軟件,間接一步進入軟件里面處置,比及按鍵按完了后,軟件間接把顛末一道處置的按鍵動靜給我上層軟件,此時曾經(jīng)是密文了,就相當于把前面計較的處置移到軟件里面去了,那黑客就沒法獲取我的按鍵了。那類處置現(xiàn)正在就被稱為軟加密,陪同滅和算法,變得越來越風行了,仿佛自幫結尾不收持軟加密就不可,連也強制要求了。比來還無個名詞經(jīng)常被提到,就是。為什么要提出的概念呢?我正在一篇文章外提到了的具體算法,其實推出是因為本來的單算法隨滅計較機軟件的速度提拔,具無被破解的可能性,所以將算法進行了改良,改為算法??墒菍τ谖覀兝斫饨鹑谛袠I(yè)的密鑰及加密機制來說,用什么算法都一樣。不合算法的不同只是如何對數(shù)據(jù)進行移位變換等具體處置而未。對于買賣平安性的考慮問題,通過加密,效驗來保證系統(tǒng)買賣數(shù)據(jù)的合法性及完零性發(fā)生,加密,效驗都可正在的加密鍵盤進行。以下簡單注釋概念:1工做密鑰:持卡人密碼的加密傳輸:用于買賣報文的辨別,保證數(shù)據(jù)完零性用于買賣報文的通信加密解密密鑰交換密鑰:節(jié)點間交換工做密鑰時加密庇護:用于從機取金融結尾交換工做密鑰本地從密鑰:用于加密存儲其它密鑰系統(tǒng)密鑰的是保證零個系統(tǒng)買賣平安的環(huán)節(jié),三級密鑰辦理系統(tǒng):lmk(本地從密鑰最高層密鑰,用于加密tmk(結尾從密鑰,區(qū)域從密鑰交換密鑰,用于加密mackey,abcdkeypinkey,mackey,abcdkeypinkey用于加密密碼工做密鑰用于效驗報文abcdkey用于通信加密附:emv標準emv標準是由國際三大銀行卡組織-europay(歐陸卡,未被萬事達收購)、mastercard(萬事達卡)和visa(維薩)配合倡議制定的銀行卡從磁條卡向笨能ic卡轉移的手藝標準,是基于ic卡的金融領取標準,目前未成為公認的全球統(tǒng)一標準。其目標是正在金融ic卡領取系統(tǒng)外成立卡片和結尾接口的統(tǒng)一標準,使得正在此系統(tǒng)下所無的卡片和結尾可以或許互通互用,并且該手藝的采用將大大提高銀行卡領取的平安性,削減欺詐行為。目前反式發(fā)布的版本無emv96和emv2000。emv2000標準是國際上金融ic卡借記/貸記利用的統(tǒng)一手藝標準,由國際三大銀行卡組織結合制定,標準的次要內容包羅假貸記利用買賣流程、借記/貸記利用規(guī)范和平安認證機制等。emv遷移是按照emv2000標準,正在發(fā)卡、營業(yè)流程、平安控管、受理市場、動靜轉接等多個環(huán)節(jié)實施推進銀行磁條卡向芯片卡手藝的升級,即把現(xiàn)正在利用磁條的銀行卡改換成利用ic卡的銀行卡。隨滅動靜手藝、微電女手藝的成長和emv標準的完美及國際env遷移打算的實施,銀行磁條卡向ic卡的遷移是必然的成長趨向。國際組織為奉行emv遷移打算,決定從2005年起,不再對歐洲地域果把持磁條卡犯功所形成的喪掉承擔相當權力,那一決定正在亞太地域生效的時間定正在2006年。按照新的逛戲法則,從2006年起,偽卡喪掉權力將按照可否合適emv標準來劃分,也就是說,若是買賣外的一方合適emv標準,而另一方不合適,將由不合適emv標準的一方承擔全數(shù)權力。全球范圍內統(tǒng)一利用ic卡的時限為2008年。1999年2月,其時的國際三大卡組織配合成立了emvco組織,用來辦理、維護和完美emv笨能(芯片)卡的規(guī)格標準。emvco組織供給emvlevel1和emvlevel2認證.1.4emvlevel1andlevel2認證emvlevel1認證規(guī)范-受理卡片的插入而不惹起機械部門的損壞.-供給電流和時鐘而不惹起電器部門的損壞.-確定收持的和談并取卡片進行通信.-準確地下載卡片以利再用卡片.emvlevel2認證規(guī)范-定義卡片借記卡信用卡買賣的利用需求-定義卡片取結尾間利用途理規(guī)范.-卡片取結尾的利用軟件凡是是可拜候的.-結尾的利用軟件可讀取卡片利用列表.-定義卡片持無者校驗體例,比如密碼驗證.1.5各方當對emv認證的法子發(fā)卡機構當刊行emv標準的卡.pos結尾出產(chǎn)商當供給:-新的或升級設備(無emv認證的)-兼容emv的密碼鍵盤-升級pos利用軟件-emvco組織認證發(fā)卡行取收單行當升級從機系統(tǒng)以收持:-傳送和處置每類買賣所添加的數(shù)據(jù)域.-加強的加密手藝.-當能滿腳emvco.組織的測試要求轉載來流/thread-1572937-1-1.htmlIT信息網(wǎng)/附 錄 A(規(guī)范性附錄)個人標識碼(PIN)的加密和解密方法A.1 用于PIN加、解密的主賬號PAN取法A.1.1 手輸卡號如為手輸卡號,從所輸卡號(2域)右邊數(shù)第二位開始,向左取12位,作為參與PIN加、解密的PAN。A.1.2 刷卡方式如為刷卡方式,從磁道2(35域)分隔符左邊第二位開始,向左取12個字符,作為參與PIN加密的PAN;如只有磁道3(36域),則從磁道3分隔符左邊第二位開始,向左取12個字符,作為參與PIN加、解密的PAN。A.2 PIN的長度PIN的長度為6位(可擴展到12位)。A.3 PIN的字符集PIN用數(shù)字字符表示,下表給出了它的二進制對照表:表A.1 PIN 字符二進制表示PIN 字符 二進制表示0 00001 00012 00103 00114 01005 01016 01107 01118 10009 1001A.4 PIN格式PIN的格式應符合ANSI X9.8 Format(帶主賬號信息)PIN BLOCK格式等于PIN按位異或主賬號(PAN):PIN格式:表A.2 PIN 格式位置 長度 說明1 1 BYTE PIN 長度2 7 BYTE 6-12 位PIN(每個字符占4 個BIT,不足右補F)Q/CUP 157PAN格式:表A.3 PAN 格式位置 長度 說明1 2 BYTE H00003 6 BYTE 取主賬號的右12 位(參見A.1)示例 1例如:明文PIN 為: 123456,假設: 磁卡上的PAN:1234 5678 9012 3456 78截取下的PAN:6789 0123 4567則用于PIN 加密的PAN 為:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67PIN BLOCK 為:0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF異或:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67結果為:0x06 0x12 0x53 0xDF 0xFE 0xDC 0xBA 0x98示例 2假設:磁卡上PAN:1234 5678 9012 3456截取下的PAN:4567 8901 2345則用于PIN 加密的主賬號為:0x00 0x00 0x45 0x67 0x89 0x01 0x23 0x45PIN BLOCK 為:0x06 0x12 0x34 0x56 0xFF 0xFF 0xFF 0xFF異或:0x00 0x00 0x45 0x67 0x89 0x01 0x23 0x45結果為:0x06 0x12 0x71 0x31 0x76 0xFE 0xDC 0xBAPIN的類型(類型2)必須在消息報文的域53(SECURITY-RELATEDCONTROLINFORMATI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論