密碼學

原文:Sololearn Cryptography教程
可能有翻譯不準確的地方,請批評指出!謝謝。

什麼是密碼學?

密碼學是一種協議構建和分析,爲了阻止第三方或者公衆訪問私人信息。信息安全包括很多方面,比如數據機密性,數據完整性,認證,不可抵賴性,是現代密碼學的核心。
現代密碼學非常依賴數學理論和計算科學,密碼學算法的設計圍繞計算的難度展開,使算法不容易被破解。
存在理論上的信息安全方案,即使擁有無限的算力,也無法被破解。
密碼學同樣在數字權限管理和數字媒體版權保護方面扮演重要角色。


Caesar Cipher凱撒密碼

凱撒密碼是已知最早也是最簡單的密碼,是一種替換類型的加密算法,每一個字母被向後偏移指定位數的字母代替。
例如,向右偏移3:

Plaintext: "defend the east wall of the castle"
Ciphertext: "efgfoe uif fbtu xbmm pg uif dbtumf"

Vigenere cipher維吉利亞密碼

Vigenere加密表
在這裏插入圖片描述
key是用戶定義的,同時是保密的,key重複的與原文字母一一對照,按加密表中的位置確定加密後的字符,解密反之。
例如:

       key: webwebweb
 plaintext: sololearn
ciphertext: osmwpfwvo

Hashing 哈希

哈希函數,是一種數學算法,從一個字符串生成哈希值,是唯一確定的。
哈希可以作爲一種驗證方法, 驗證信息傳輸過程中是否被修改。
哈希在數據庫中被用作索引,用於檢索items,因爲較短的哈希鍵相對於原值更容易被找到。

Hashed Passwords

服務端存儲密碼的哈希值,取代存儲原密碼,減小了當服務器被攻陷時,用戶密碼被泄露的風險。哈希值是不能被還原爲原密碼的,所以拿到密碼的哈希值也沒有用

Salted Passwords

黑客拿到用戶密碼的哈希表後,無法還原密碼,但是對於common passwords簡單的常用密碼,可以使用字典攻擊的方法破解密碼————對所有可能的簡單密碼做哈希運算,得到的哈希值與密碼哈希表做對照,匹配正確的密碼。
Salt是使字典攻擊更困難的一種方法。Salt和哈希函數都保存在服務器端,在做哈希運算之前,將Salt(一個隨機字符串)與密碼做連接。只要Salt有足夠的長度,就可以有效的阻止字典攻擊對簡單密碼的破解。因爲黑客生成所有可能用到的Salt和簡單密碼對應的單向hash值,這樣的計算量是非常巨大的。

需要注意的是,使用Salt僅僅起到的是對一個密碼文件的普通字典攻擊的保護,對單一密碼的協同攻擊並沒有作用。它可以保護相同密碼不被同時破解,而對於簡單密碼並不會有加強作用。


Symmetric encryption 對稱加密

加密和解密使用相同的密鑰,這也是對稱加密的主要缺點。凱撒密碼就是最簡單的對稱加密算法。
現代的加密系統仍然使用對稱加密算法完成對大多數信息的加密,對稱加密不光被用於加密,同時被用於對其他加密原語的實現。
AES(Advance Encryption Standard)是一個對稱分組密碼,他被美國政府使用,用於包含機密信息,在全世界的軟硬件中被廣泛使用。


Asymmetric encryption 非對稱加密

又叫public-key cryptography,使用一個密鑰對,public key是公開的,可以被廣泛的傳播,分發,而private key是不公開的。實現了兩個功能:使用公鑰驗證信息是否是私鑰擁有者發出;使用私鑰解密被公鑰加密的信息。
有些非對稱加密的算法實現方案,可以基於假定的數學問題的難度來證明是安全的,例如將兩個大素數的乘積分解或計算離散對數。
一些非對稱加密算法的例子

  • Diffie-Hellman key exchange protocol # 基於計算離散對數
  • DSS(Digital Signature Standard)
  • Various password-authenticated key agreement techniques
  • RSA encryption algorithm # 基於兩個大素數的乘積分解

非對稱加密更安全,但是對稱加密算法更快速,所以兩種算法經常被一起使用

Hash 函數同樣被用於很多加密系統


Digital signature數字簽名

數字簽名是用於呈現數字消息或文檔的真實性的數學方案。有效的數字簽名使收件人有理由相信該郵件是由已知發件人創建的(身份驗證)。
數字簽名是大多數加密協議套件的標準元素,通常用於軟件分發,金融交易和合同管理軟件。
實現方法有:
其中一種方法是使用您的私鑰加密特殊標記(可能包括您的姓名,ID或任何其他個人信息),只能使用您的公鑰解密,並將標記與您的消息一起發送。然後接收方可以使用發送方的公鑰檢查真實性
另一種方法是獲取消息的哈希碼並使用私鑰加密,然後將其與消息一起發送。此方法還使您有機會檢查消息的完整性。正如我們在散列課中看到的那樣,如果我們從消息中更改一個字符,則散列函數會爲我們提供完全不同的散列碼。


PGP(Pretty Good Privacy)是一種密碼系統,包括散列,對稱和非對稱加密,數字簽名等。

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