密碼學定義
密碼學是隱藏或編碼信息的過程,以便只有消息的預期對象才能讀取它。密碼學藝術已經(jīng)用于編碼消息數(shù)千年,并繼續(xù)用于銀行卡,計算機密碼和電子商務。
現(xiàn)代加密技術包括支持加密和解密信息的算法和密碼,例如 128 位和 256 位加密密鑰?,F(xiàn)代密碼,如高級加密標準(AES),被認為幾乎牢不可破。
常見的加密定義是編碼信息的做法,以確保只有為其編寫消息的人才能讀取和處理信息。這種網(wǎng)絡安全實踐,也稱為密碼學,結合了計算機科學、工程和數(shù)學等各種學科,以創(chuàng)建隱藏消息真正含義的復雜代碼。
密碼學可以追溯到古埃及象形文字,但對于保護傳輸中的通信和信息以及防止其被不受信任的各方讀取仍然至關重要。它使用算法和數(shù)學概念,通過加密密鑰和數(shù)字簽名等技術將消息轉換為難以破譯的代碼,以保護數(shù)據(jù)隱私、信用卡交易、電子郵件和網(wǎng)頁瀏覽。
密碼學的重要性
密碼學對于保護數(shù)據(jù)和用戶、確保機密性以及防止網(wǎng)絡犯罪分子攔截敏感的公司信息仍然很重要。加密的常見用途和示例包括:
隱私和保密
個人和組織每天都使用加密技術來保護他們的隱私,并對他們的對話和數(shù)據(jù)保密。加密通過使用只有發(fā)件人和收件人知道的密鑰的算法來加密已發(fā)送的消息,從而確保機密性。一個常見的例子是消息傳遞工具WhatsApp,它加密人與人之間的對話,以確保他們不會被黑客入侵或攔截。
加密還可以保護瀏覽,例如使用虛擬專用網(wǎng)絡 (VPN),它使用加密隧道、非對稱加密以及公鑰和私鑰共享密鑰。
身份驗證
與密碼學如何確認消息的真實性類似,它也可以證明發(fā)送和接收的信息的完整性。加密可確保信息在存儲過程中或在發(fā)件人和預期收件人之間傳輸過程中不會更改。例如,數(shù)字簽名可以檢測軟件分發(fā)和金融交易中的偽造或篡改。
不可否認性
密碼學確認消息發(fā)送者的責任和責任,這意味著他們以后在創(chuàng)建或傳輸信息時不能否認他們的意圖。數(shù)字簽名就是一個很好的例子,因為它們確保發(fā)件人不能聲稱他們創(chuàng)建的消息、合同或文檔是欺詐性的。此外,在電子郵件不可否認性中,電子郵件跟蹤可確保發(fā)件人無法拒絕發(fā)送郵件,收件人無法拒絕接收郵件。
密鑰交換
密鑰交換是用于在發(fā)件人和收件人之間共享加密密鑰的方法。
加密算法的類型
有許多類型的加密算法可用。它們的復雜性和安全性各不相同,具體取決于通信類型和所共享信息的敏感性。
密鑰加密
密鑰加密(也稱為對稱加密)使用單個密鑰來加密和解密消息。發(fā)件人使用密鑰加密純文本消息,并將其發(fā)送給收件人,然后收件人使用相同的密鑰對其進行解密并解鎖原始純文本消息。
流密碼
流密碼隨時處理單個位或字節(jié),并使用反饋機制不斷更改密鑰。自同步流密碼通過識別解密在位密鑰流中的位置,確保解密過程與加密過程保持同步。同步流密碼獨立于消息流生成密鑰流,并在發(fā)送方和接收方生成相同的密鑰流函數(shù)。
分組密碼
分組密碼一次加密一個固定大小的數(shù)據(jù)塊。當使用相同的密鑰時,它將始終將明文數(shù)據(jù)塊加密為相同的密文。一個很好的例子是Feistel密碼,它使用密鑰擴展,排列和替換的元素在密碼中造成巨大的混亂和擴散。
加密和解密的階段即使不相同,也是相似的,這意味著反轉密鑰可以減少在軟件或硬件中實現(xiàn)密碼所需的代碼大小和電路。
公鑰加密
公鑰加密(PKC)或非對稱加密使用數(shù)學函數(shù)來創(chuàng)建異常難以破解的代碼。它使人們能夠通過不安全的通信通道進行安全通信,而無需密鑰。例如,代理重新加密使代理實體能夠將數(shù)據(jù)從一個公鑰重新加密到另一個公鑰,而無需訪問明文或私鑰。
常見的PKC類型是乘法與因式分解,它采用兩個大的素數(shù)并將它們相乘以創(chuàng)建一個巨大的結果數(shù)字,這使得破譯變得困難。PKC 的另一種形式是冪與對數(shù),例如 256 位加密,它增加了保護,以至于即使是每秒能夠搜索數(shù)萬億種組合的計算機也無法破解它。
PKC 的通用形式使用兩個在數(shù)學上相關的鍵,但不能確定任何一個鍵。簡而言之,發(fā)件人可以使用其私鑰加密其明文消息,然后收件人使用發(fā)件人的公鑰解密密文。
用于數(shù)字簽名和密鑰交換的常見 PKC 算法包括:
RSA
RSA 是第一個并且仍然是最常見的 PKC 實現(xiàn)。該算法以其麻省理工學院數(shù)學家Ronald Rivest,Adi Shamir和Leonard Adleman的名字命名,用于數(shù)據(jù)加密,數(shù)字簽名和密鑰交換。它使用一個大數(shù),這是分解兩個選定的素數(shù)的結果。攻擊者不可能計算出主要因素,這使得RSA特別安全。
ECC
(Elliptic Curve Cryptography)ECC是一種基于密碼學中使用橢圓曲線的 PKC 算法。它專為計算能力或內存有限的設備而設計,用于加密互聯(lián)網(wǎng)流量。ECC的常見用途是嵌入式計算機,智能手機和比特幣等加密貨幣網(wǎng)絡,它消耗RSA所需存儲空間和帶寬的10%左右。
數(shù)字簽名算法 (DSA)
DSA (Digital Signature Algorithm)是一種允許在郵件身份驗證中使用數(shù)字簽名的標準。它由美國國家標準與技術研究院 (NIST) 于 1991 年推出,以確保創(chuàng)建數(shù)字簽名的更好方法。
基于身份的加密 (IBE)
IBE(Identity-based Encryption)國際教育局是一個PKC系統(tǒng),它允許根據(jù)用戶的身份(如電子郵件地址)從唯一信息中計算公鑰。然后,受信任的第三方或私鑰生成器使用加密算法來計算相應的私鑰。這使用戶能夠創(chuàng)建自己的私鑰,而無需擔心分發(fā)公鑰。
公鑰加密標準 (PKCS)
所有 PKC (Public Key Cryptography Standards )算法和使用都受 RSA Data Security 設計的一組標準和準則的約束。具體如下:
PKCS #1 或 RFC 8017:RSA 加密標準
PKCS #3:迪菲-赫爾曼密鑰協(xié)議標準
PKCS #5 和 PKCS #5 v2.1 或 RFC 8018:基于密碼的密碼學標準
PKCS #6:擴展證書語法標準(由 X.509v3 取代)
PKCS #7 或 RFC 2315:加密消息語法標準
PKCS #8 或 RFC 5958:私鑰信息語法標準
PKCS #9 或 RFC 2985:選定的屬性類型
PKCS #10 或 RFC 2986:認證請求語法標準
PKCS #11:加密令牌接口標準
PKCS #12 或 RFC 7292:個人信息交換語法標準
PKCS #13:橢圓曲線加密標準
PKCS #14:偽隨機數(shù)生成標準
PKCS #15:加密令牌信息格式標準
Diffie-Hellman and Key Exchange Algorithm (KEA)
Diffie-Hellman算法由斯坦福大學教授Martin Hellman和他的研究生Whitfield Diffie于1976年設計,他們被認為負責引入PKC概念。它用于秘密密鑰交換,需要兩個人就一個大的質數(shù)達成一致。