我們在網上付錢的信息是如何保證安全的(一)?

友情提示:本文確實有點長但非常容易理解

我們在網上付錢的信息是如何保證安全的(一)?

1

我們在網上付錢的時候,實際上付的並不是真的錢,而是電子數據形式的“信息”。

這些信息分三種:

一種是明明白白的信息,叫“明文”。

一種是加了密的信息,叫“密文”。

一種是隻有收款方和付款方才知道的信息,叫“密鑰”

以上這三個東西是什麼關係哪?

“明文”和“密鑰”這兩個東西經過一系列計算,就能得到“密文”。明白?

好了,在網上付錢的時候,最基本的信息流程如下圖所示:

我們在網上付錢的信息是如何保證安全的(一)?

網上付錢基本信息流程

付款方發出“明文M”,可是網絡這麼複雜,把付款信息如此裸體一般的發出來,實在不安全。所以需要加密器來加一下密,怎麼加?用一個“密鑰K1”來加。

加完了之後,這個“密文”就被髮給了收款方,問題是收款方看不懂,怎麼辦?就用解密器解一下嘍,怎麼解?用“密鑰K2”來解。

2

關於“密鑰”這個東西,我們要多說一點。

我們在網上付錢的信息是如何保證安全的(一)?

如果加密的密鑰(如K1)和解密的密鑰(如K2)是完全一樣的(K1=K2,),就叫“對稱密鑰加密”。這種情況下,只要保證只有收付款雙方知道密鑰,別人誰也不知道,就可以了。

常見的對稱密鑰加密方法:DES、RC4、IDEA等,這裡不多展開。“對稱密鑰加密”的優點:簡單、快。缺點:密鑰要經常換,而且付款方需要找到一個安全靠譜的方式把密鑰送給收款方,要不然解不了密,白費勁。還有就是,看下這圖:

我們在網上付錢的信息是如何保證安全的(一)?

三方兩兩付款

如果3方兩兩通信,就意味著每個人都要手握兩把密鑰才行。比如:A手裡要拿著AB的密鑰,這個密鑰僅僅AB知道。A手裡還要拿著AC的密鑰,這個密鑰僅僅AC知道。那如果有1000方哪?500萬方哪?3億方哪?這就很難搞了。

3

接著說,如果加密的密鑰(如K1)和解密的密鑰(如K2)不一樣,就叫“非對稱密鑰加密”。雖然不一樣,但K1和K2在數學上是有關係的(這裡暫時不需要知道它們到底是啥數學關係)。

K1和K2組成了一對密鑰,叫“密鑰對”,簡稱“K對”

有了一對“密鑰對”之後,會將其中的一個密鑰深深藏在自己手裡,這個就叫“私鑰”。另外一個密鑰則公開出去,想給誰都行,這個就叫“公鑰”。

吶吶吶,重點來了:由於存在數學關係,我們用“公鑰”、“私鑰”中的一個加密,就能用另一個來解密。

再回到網上付錢基本信息流程圖:

我們在網上付錢的信息是如何保證安全的(一)?

網上付錢基本信息流程

當付款方A和收款方B互換了彼此的公鑰後(公鑰可以隨便給),

付款方A手裡有三個東西:

(1)A的私鑰(藏著)

(2)A的公鑰(送出去)

(3)B的公鑰(B送過來的)

收款方B手裡也有三個東西:

(1)B的私鑰(藏著)

(2)B的公鑰(送出去)

(3)A的公鑰(A送過來的)

還記得嗎,“密鑰對”由一個公鑰和一個私鑰組成,用其中一個加密,另一個就能解密。

所以,A手中其實有兩對“密鑰對”,B手裡也是兩對“密鑰對”,如下圖(簡稱“超級重要圖”)所示。

提示:請認真記住這張圖,因為這張圖在後續的數篇文章中將會反反覆覆N次用到。

我們在網上付錢的信息是如何保證安全的(一)?

超級重要圖

4

“非對稱密鑰加密”兩個非常重要的作用:

(1)加密。

請看著前文提到的“超級重要圖”。

付款方A,用“B的公鑰”來加密,所以,收款方B可以用“B的私鑰”來解密。

(2)確認身份。

付款方A,用“A的私鑰”來加密,收款方B如果想解密,就必須有“A的公鑰”。

好了,如果收款方B發現,收到的密文,只能用A的公鑰才能解密,別的都不行。這就說明,這個密文必然是用A的私鑰加密的,而A的私鑰全世界就只有A自己手裡才有,所以,密文肯定是A發的。

“非對稱密鑰加密”的優點是:可以確認身份,這是“對稱密鑰加密”做不到的。而且公鑰可以隨便發,自己牢牢藏好自己的私鑰就可以。缺點是:慢,不太適合即時付款。

5

最後說說,為什麼“非對稱密鑰加密”慢?

我們在網上付錢的信息是如何保證安全的(一)?

我們來看看最常見的非對稱密鑰加密方法:RSA,是怎麼計算的。

第一步:隨機選出2個足夠大的質數P、Q。

第二步:算出P*Q=N

第三步:找出一個小於N的數E,這個E必須與【(P-1)*(Q-1)】互為質數

第四步:找出一個數D,這個D必須滿足:(E*D)和【(P-1)*(Q-1)】相除之後的餘數是1

此時:

(N,E)就是公鑰

(N,D)就是私鑰

明文:“C的D次方”和N相除之後的餘數

密文:“M的E次方”和N相除之後的餘數

我們在網上付錢的信息是如何保證安全的(一)?

內容已經很多了,今天就寫到這裡。不過,現實在網絡支付遠沒有這麼簡單。

我們在網上付錢的信息是如何保證安全的(一)?

在下一篇文章《我們在網上付錢的信息是如何保證安全的(二)》中我會講到,為了更安全,如何把“密鑰”放進一個數字做的“數字信封”中,以及如果把支付信息給“藏起來”只露出一個“數字摘要”。


分享到:


相關文章: