The Cryptography API, or How to Keep a Secret (二)

加密

當進行數據加密時,明文消息(plain-text message)在被編碼後會看起來象完全隨機的二進制數據,以至於沒有密鈅就很難將其轉化爲原來的消息。本文中使用如下定義:

  • 消息(Message:指任何數據塊。消息可以是ASCII文本,一個數據庫文件或者任何你要安全存儲或者傳輸的數據。
  • 明文(Plain text:指沒有被加密的數據。
  • 密文(Cipher text:指被加密過的數據。

一旦消息被加密,它就可以存儲在非安全的介質上或者通過非安全的網絡傳輸而仍然保持安全。之後,消息可以解密回原來的格式。圖2圖解了這個過程:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />CSDN_Dev_Image_2004-2-61627190.gif

2 . 加密、解密消息

當加密消息時,要使用加密密鈅(encryption key 這就類型於用一把鑰匙去鎖一把鎖一樣。當解密這個消息時,必須用相應的解密密鈅(decryption key)。對解密密鈅的嚴格限制訪問非常重要,因爲任何拿到它的人可以解開用相應的加密密鈅加密的所有消息。

可能有點不可思議,但數據加密/解密就是這麼簡單。真正的難點是安全的保存密鈅和安全的將密鈅傳輸到其它人那。這部分已經超出了本文的範圍,我建議讀者去讀文章"Exchanging Cryptographic Keys"的相應部分,文章在Win32 Cryptography API文檔中(MSDN Library, Platform, SDK, DDK 文檔)

有兩種主要的加密算法:對稱算法(symmetric algorithms)與公鈅算法(public-key algorithms [也叫做非對稱算法(asymmetric algorithms] 使用對稱算法的系統有時歸入傳統型( conventional)中。

算法

對稱算法是最普遍的加密算法類型。它們叫“對稱”是因爲使用相同的密鈅進行加密與解密。與使用公鈅算法的密鈅不同,對稱密鈅是經常變化的。因爲這個原因,此處將它們歸於會話密鈅。與公鈅算法相比,對稱算法非常快,因此最適於加密大量數據的情況。一些最常用的對稱加密算法是 RC2 RC4,與數據加密標準(Data Encryption Standard DES)。(譯註:單重DES因密鈅長度已不適應當前的加密環境,最好不用。可以使用三重DES,或者AES

公鈅(非對稱)算法使用一對不同的密鈅:一個公鈅和一個私鈅。私鈅由密鈅對的所有者自己保存,公鈅可以自由分發給所有要求得到的人。如果用一個密鈅加密一個消息,必須用另一個密鈅解密此消息。公鈅算法很慢, 要比對稱算法慢數千倍。因此它們一般僅用來加密會話密鈅。它們也用來對消息進行數字簽名(digitally sign),下一部分會討論這個內容。最常用的公鈅加密算法之一是RSA Public-Key Cipher

文件簽名

數字簽名Digital signatures用在你要以明文形式分發一個消息,並且你想要讓接收者能夠驗證這個消息自從離開你手後沒有被篡改過。對消息簽名並不會改變消息,它僅生成一個可附着在消息上或者單獨傳輸的數字簽名。

數字簽名使用公鈅算法生成。使用私鈅來生成,並且使用相對應的公鈅來驗證。圖3 圖解了這一過程:

CSDN_Dev_Image_2004-2-61627192.gif

3 驗證簽名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章