非對稱演算法,散列(Hash)以及認證的那些事

來源:互聯網
上載者:User

標籤:加密   解密   金融   支付   簽名   

轉載請註明出處

http://blog.csdn.net/pony_maggie/article/details/35389657


作者:小馬



這幾個概念在金融電子支付領域用得比較多,我忽然覺得把它們串起來一起講,層層引入,可能更好理解一些。希望能以最簡單樸實的方式講明白他們之間的關係。

 

一非對稱演算法

關於非對稱演算法,你只要知道下面這些就行了,密鑰是一對,一個叫公開金鑰,一個叫私密金鑰,前者公開,後者保密。假設你有一對公私密金鑰,給你一串資料,你可以用私密金鑰加密,然後把密文和公開金鑰都放出去,別人可以用這個公開金鑰解密。同樣反過來,別人也可以用這個公開金鑰加密一串資料,你用對應的私密金鑰解密。可以用來表示:



 


二 散列

散列也叫雜湊,學過資料結構的人對這個概念都不陌生。簡單來講,給你一串資料A,這個資料可以很長,你通過一個演算法把它們轉變成一個很短的固定長度(不管源串有多長)的另一串資料B。這個過程就叫散列,資料B叫資料A的散列值(或者叫雜湊值,或者叫摘要)。

 

再深入一些。大部分情況下,A和B是一一對應的(這也是我們希望的),也就是說,如果我還有個A1,那麼它的散列值B1和B不會相等。但是理想豐滿,現實讓人反感,B1有可能和B相等。這種現象有個學名叫”碰撞”,增加散列值的位元是防碰撞的一個方法,因為很自然位元越長,完全相同的機率就越小。目前認為超過128位的散列值都能很好的防碰撞。後面我們講到簽名時,假定是沒有碰撞的。

 

最後再補充一點,散列具有無法復原性,也就是你沒法從B還原回A,即使散列演算法是公開的。

 

 

三數位簽章

 生活中我們用簽名代表自己的身份,比如領導簽署一個檔案,大家看到這個簽名,就確認是這個領導簽的,就代表他本人。簽名只佔用很小的資訊(一般是兩個字或三個字,日本人的可能長一些),卻能表示你整個人的資訊,這種思想確實意義很大,我們把它用在電子化的簽名過程,也就是數位簽章。

 

數位簽章的過程是這樣的,比如小明有一串資料A要發給小紅,小明先用散列產生一個A的摘要B,然後把B用一個私密金鑰加密後附在A的後面發給小紅,小紅有公開金鑰(因為是公開的),她先用這個公開金鑰解密A後面的資料得到B,然後自己把A散列一些算出一個B1, 比較B1和B如果相等,首先能說明資料是小明發過來的,因為只有小明才有私密金鑰,其次能說明A在傳輸過程中沒有被改過,因為如果修改過,散列值肯定不相等。上述過程可以用說明:

 

 

 

可能有有會有問題,資料A似乎沒有加密?,確實是這樣,因為這個不是小紅所關心的,小紅只關心這個資料是不是小明發的,資料的內容沒那麼重要。其實也不難理解,就跟你去超市刷卡購物一樣,小票需要你簽字作為對賬的憑證,人們只關心這個簽名是不是你本人的,對於小票的內容沒這麼關心。

 

四認證

 

仔細想想上面的驗證簽名的過程,似乎天衣無縫。但其實有個問題,小紅的公開金鑰是哪來的?有人說這個不是公開的嗎,隨便哪都可以,可以是問別人要的,可以是網上找的。其實不然,驗簽的前提,是小紅已經假設她手上的公開金鑰和小明的私密金鑰是一對的。如果小王產生一對非法的公私密金鑰對,然後給小紅公開金鑰,給她說這是小明的,就會產生問題了。所以小紅要有明確的途徑確認她的公開金鑰是合法的。


打個比方,一個人站在你面前,你沒法判斷他是好人還是壞人,但是如果法院告訴你這個人是殺人犯,你肯定會選擇相信,因為法院是權威機構。同樣的,對於公開金鑰這樣的”公開的敏感資訊”,也需要一個權威機構來認定。這個機構叫CA(certification authority)。這樣小紅只要是從CA拿的公開金鑰,就可以認為它是合法的了。

 

CA一般不會直接下發公開金鑰,它通常把公開金鑰資訊和一些附加資訊(比如公開金鑰產生的日期,有效期間等)一起按照一定的格式組織起來下發,這種組織起來的資料就叫做認證。認證的作用就是它有一定的格式,這個格式還是個標準,全世界都用它,這樣就很方便傳播。目前用得比較多的認證就是著名的x.509。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.