1. 程式人生 > >加密與安全

加密與安全

ecc 因式分解 別人 得到 全世界 加密文件 三次 解密 整數

1.加密算法

加密算法一般分為對稱加密和非對稱加密

對稱加密就是加密和解密使用同一個密鑰,通常稱之為“Session Key ”這種加密技術在當今被廣泛采用,如美國政府所采用的DES加密標準就是一種典型的“對稱式”加密法,它的Session Key長度為56bits。

常見的對稱加密算法有:

  • DES:又被稱為美國數據加密標準,1972年由美國IBM公司研制,明文按64位進行分組,密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位, 使得每個密鑰都有奇數個1)分組後的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。美國國家標準局倡導的AES即將作為新標準取代DES。
  • 3DES:3DES(即Triple DES)是DES向AES過渡的加密算法,它使用3條56位的密鑰對數據進行三次加密。是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設計出分組加密算法。比起最初的DES,3DES更為安全。
  • AES:高級加密標準(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府采用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標準由美國國家標準與技術研究院(NIST)於2001年11月26日發布於FIPS PUB 197,並在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。
  • RC2:RC2是由著名密碼學家Ron Rivest設計的一種傳統對稱分組加密算法,它可作為DES算法的建議替代算法。它的輸入和輸出都是64比特。密鑰的長度是從1字節到128字節可變,但目前的實現是8字節(1998年)。
  • RC4:RC4加密算法是大名鼎鼎的RSA三人組中的頭號人物Ronald Rivest在1987年設計的密鑰長度可變的流加密算法簇。之所以稱其為簇,是由於其核心部分的S-box長度可為任意,但一般為256字節。該算法的速度可以達到DES加密的10倍左右,且具有很高級別的非線性。RC4起初是用於保護商業機密的。但是在1994年9月,它的算法被發布在互聯網上,也就不再有什麽商業機密了。RC4也被叫做ARC4(Alleged RC4——所謂的RC4),因為RSA從來就沒有正式發布過這個算法。分布式代碼管理網站Github從2015年1月5日將停止對RC4的支持,RC4作為一種老舊的驗證和加密算法易於受到黑客攻擊。這意味著,用戶在使用Windows XP系統上的IE瀏覽器時將無法進入github.com網站
  • RC5:RC5分組密碼算法是1994由麻薩諸塞技術研究所的Ronald L. Rivest教授發明的,並由RSA實驗室分析。它是參數可變的分組密碼算法,三個可變的參數是:分組大小、密鑰大小和加密輪數。在此算法中使用了三種運算:異或、加和循環。
  • IDEA:國際數據加密算法(IDEA)是上海交通大學教授來學嘉與瑞士學者James Massey聯合提出的。它在1990年正式公布並在以後得到增強。這種算法是在DES算法的基礎上發展出來的,類似於三重DES。發展IDEA也是因為感到DES具有密鑰太短等缺點。IDEA的密鑰為128位,這麽長的密鑰在今後若幹年內應該是安全的。由於IDEA是在美國之外提出並發展起來的,避開了美國法律上對加密技術的諸多限制,因此,有關IDEA算法和實現技術的書籍都可以自由出版和交流,可極大地促進IDEA的發展和完善。但由於該算法出現的時間不長,針對它的攻擊也還不多,還未經過較長時間的考驗。因此,尚不能判斷出它的優勢和缺陷。

非對稱加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這裏的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優越性就在這裏,因為對稱式的加密方法如果是在網絡上傳輸加密文件就很難不把密鑰告訴對方,不管用什麽方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。 公鑰密碼體制即非對稱加密根據其所依據的難題一般分為三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸為離散對數類。 常見的非對稱加密算法有:
  • RSA:RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美國公布,當時他們三人都在麻省理工學院工作實習。RSA就是他們三人姓氏開頭字母拼在一起組成的。RSA算法基於一個十分簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。RSA算法是第一個能同時用於加密和數字簽名的算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現今的三十多年裏,經歷了各種攻擊的考驗,逐漸為人們接受,截止2017年被普遍認為是最優秀的公鑰方案之一。
  • ElGamal算法:是一種較為常見的加密算法,它是基於1985年提出的公鑰密碼體制和橢圓曲線加密體系。既能用於數據加密也能用於數字簽名,其安全性依賴於計算有限域上離散對數這一難題。
  • ECC:橢圓曲線加密體系

加密與安全