導航:首頁 > 文檔加密 > 加密領域競爭原理

加密領域競爭原理

發布時間:2023-06-15 18:55:15

㈠ 互聯網上的加密原理

互聯網上的加密方式主要分為對稱加密和非對稱加密二種,

採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
需要對加密和解密使用相同密鑰的加密演算法。由於其速度快,對稱性加密通常在消息發送方需要加密大量數據時使用。對稱性加密也稱為密鑰加密。
所謂對稱,就是採用這種加密方法的雙方使用方式用同樣的密鑰進行加密和解密。密鑰是控制加密及解密過程的指令。演算法是一組規則,規定如何進行加密和解密。
加密的安全性不僅取決於加密演算法本身,密鑰管理的安全性更是重要。因為加密和解密都使用同一個密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問題。
常用的對稱加密有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES演算法等

非對稱加密演算法需要二個秘鑰,公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。

明白了互聯網上的加密原理之後,下面來看看瀏覽器與伺服器交互時,瀏覽器想將數據加密後再發送給伺服器,那麼該怎麼做呢?伺服器首先要向瀏覽器出示一份數字證書,瀏覽器看到數字證書後,就可以使用數字證書裡面的公鑰加密數據,所以要想做瀏覽器和伺服器的加密數據傳輸,那麼首先得針對伺服器生成一份數字證書。然後再配置一下伺服器,讓伺服器收到瀏覽器的請求之後,會向瀏覽器出示它的數字證書。

SUN公司提供了製作證書的工具keytool, 在JDK 1.4以後的版本中都包含了這一工具,它的位置為<JAVA_HOME>\bin\keytool.exe

使用keytool生成一個名字為tomcat的證書,存放在.keystore這個密鑰庫中

㈡ 詳解加密技術概念、加密方法以及應用

隨著網路技術的發展,網路安全也就成為當今網路 社會 的焦點中的焦點,幾乎沒有人不在談論網路上的安全問題,病毒、黑客程序、郵件炸彈、遠程偵聽等這一切都無不讓人膽戰心驚。病毒、黑客的猖獗使身處今日網路 社會 的人們感覺到談網色變,無所適從。
但我們必需清楚地認識到,這一切一切的安全問題我們不可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因為任何反病毒程序都只能在新病毒發現之後才能開發出來,目前還沒有哪能一家反病毒軟體開發商敢承諾他們的軟體能查殺所有已知的和未知的病毒,所以我們不能有等網路安全了再上網的念頭,因為或許網路不能有這么一日,就象「矛」與「盾」,網路與病毒、黑客永遠是一對共存體。
現代的電腦加密技術就是適應了網路安全的需要而應運產生的,它為我們進行一般的電子商務活動提供了安全保障,如在網路中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術也不是什麼新生事物,只不過應用在當今電子商務、電腦網路中還是近幾年的 歷史 。下面我們就詳細介紹一下加密技術的方方面面,希望能為那些對加密技術還一知半解的朋友提供一個詳細了解的機會!
一、加密的由來
加密作為保障數據安全的一種方式,它不是現在才有的,它產生的 歷史 相當久遠,它是起源於要追溯於公元前2000年(幾個世紀了),雖然它不是現在我們所講的加密技術(甚至不叫加密),但作為一種加密的概念,確實早在幾個世紀前就誕生了。當時埃及人是最先使用特別的象形文字作為信息編碼的,隨著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來保護他們的書面信息。
近期加密技術主要應用於軍事領域,如美國獨立戰爭、美國內戰和兩次世界大戰。最廣為人知的編碼機器是German Enigma機,在第二次世界大戰中德國人利用它創建了加密信息。此後,由於Alan Turing和Ultra計劃以及其他人的努力,終於對德國人的密碼進行了破解。當初,計算機的研究就是為了破解德國人的密碼,人們並沒有想到計算機給今天帶來的信息革命。隨著計算機的發展,運算能力的增強,過去的密碼都變得十分簡單了,於是人們又不斷地研究出了新的數據加密方式,如利用ROSA演算法產生的私鑰和公鑰就是在這個基礎上產生的。
二、加密的概念
數據加密的基本過程就是對原來為明文的文件或數據按某種演算法進行處理,使其成為不可讀的一段代碼,通常稱為「密文」,使其只能在輸入相應的密鑰之後才能顯示出本來內容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的目的。該過程的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。
三、加密的理由
當今網路 社會 選擇加密已是我們別無選擇,其一是我們知道在互聯網上進行文件傳輸、電子郵件商務往來存在許多不安全因素,特別是對於一些大公司和一些機密文件在網路上傳輸。而且這種不安全性是互聯網存在基礎——TCP/IP協議所固有的,包括一些基於TCP/IP的服務;另一方面,互聯網給眾多的商家帶來了無限的商機,互聯網把全世界連在了一起,走向互聯網就意味著走向了世界,這對於無數商家無疑是夢寐以求的好事,特別是對於中小企業。為了解決這一對矛盾、為了能在安全的基礎上大開這通向世界之門,我們只好選擇了數據加密和基於加密技術的數字簽名。
加密在網路上的作用就是防止有用或私有化信息在網路上被攔截和竊取。一個簡單的例子就是密碼的傳輸,計算機密碼極為重要,許多安全防護體系是基於密碼的,密碼的泄露在某種意義上來講意味著其安全體系的全面崩潰。
通過網路進行登錄時,所鍵入的密碼以明文的形式被傳輸到伺服器,而網路上的竊聽是一件極為容易的事情,所以很有可能黑客會竊取得用戶的密碼,如果用戶是Root用戶或Administrator用戶,那後果將是極為嚴重的。
還有如果你公司在進行著某個招標項目的投標工作,工作人員通過電子郵件的方式把他們單位的標書發給招標單位,如果此時有另一位競爭對手從網路上竊取到你公司的標書,從中知道你公司投標的標的,那後果將是怎樣,相信不用多說聰明的你也明白。
這樣的例子實在是太多了,解決上述難題的方案就是加密,加密後的口令即使被黑客獲得也是不可讀的,加密後的標書沒有收件人的私鑰也就無法解開,標書成為一大堆無任何實際意義的亂碼。總之無論是單位還是個人在某種意義上來說加密也成為當今網路 社會 進行文件或郵件安全傳輸的時代象徵!
數字簽名就是基於加密技術的,它的作用就是用來確定用戶是否是真實的。應用最多的還是電子郵件,如當用戶收到一封電子郵件時,郵件上面標有發信人的姓名和信箱地址,很多人可能會簡單地認為發信人就是信上說明的那個人,但實際上偽造一封電子郵件對於一個通常人來說是極為容易的事。在這種情況下,就要用到加密技術基礎上的數字簽名,用它來確認發信人身份的真實性。
類似數字簽名技術的還有一種身份認證技術,有些站點提供入站FTP和WWW服務,當然用戶通常接觸的這類服務是匿名服務,用戶的權力要受到限制,但也有的這類服務不是匿名的,如某公司為了信息交流提供用戶的合作夥伴非匿名的FTP服務,或開發小組把他們的Web網頁上載到用戶的WWW伺服器上,現在的問題就是,用戶如何確定正在訪問用戶的伺服器的人就是用戶認為的那個人,身份認證技術就是一個好的解決方案。
在這里需要強調一點的就是,文件加密其實不只用於電子郵件或網路上的文件傳輸,其實也可應用靜態的文件保護,如PIP軟體就可以對磁碟、硬碟中的文件或文件夾進行加密,以防他人竊取其中的信息。
四、兩種加密方法
加密技術通常分為兩大類:「對稱式」和「非對稱式」。
對稱式加密就是加密和解密使用同一個密鑰,通常稱之為「Session Key 」這種加密技術目前被廣泛採用,如美國政府所採用的DES加密標准就是一種典型的「對稱式」加密法,它的Session Key長度為56Bits。
非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為「公鑰」和「私鑰」,它們兩個必需配對使用,否則不能打開加密文件。這里的「公鑰」是指可以對外公布的,「私鑰」則不能,只能由持有人一個人知道。它的優越性就在這里,因為對稱式的加密方法如果是在網路上傳輸加密文件就很難把密鑰告訴對方,不管用什麼方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的「公鑰」是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。
五、加密技術中的摘要函數(MAD、MAD和MAD)
摘要是一種防止改動的方法,其中用到的函數叫摘要函數。這些函數的輸入可以是任意大小的消息,而輸出是一個固定長度的摘要。摘要有這樣一個性質,如果改變了輸入消息中的任何東西,甚至只有一位,輸出的摘要將會發生不可預測的改變,也就是說輸入消息的每一位對輸出摘要都有影響。總之,摘要演算法從給定的文本塊中產生一個數字簽名(fingerprint或message digest),數字簽名可以用於防止有人從一個簽名上獲取文本信息或改變文本信息內容和進行身份認證。摘要演算法的數字簽名原理在很多加密演算法中都被使用,如SO/KEY和PIP(pretty good privacy)。
現在流行的摘要函數有MAD和MAD,但要記住客戶機和伺服器必須使用相同的演算法,無論是MAD還是MAD,MAD客戶機不能和MAD伺服器交互。
MAD摘要演算法的設計是出於利用32位RISC結構來最大其吞吐量,而不需要大量的替換表(substitution table)來考慮的。
MAD演算法是以消息給予的長度作為輸入,產生一個128位的"指紋"或"消息化"。要產生兩個具有相同消息化的文字塊或者產生任何具有預先給定"指紋"的消息,都被認為在計算上是不可能的。
MAD摘要演算法是個數據認證標准。MAD的設計思想是要找出速度更快,比MAD更安全的一種演算法,MAD的設計者通過使MAD在計算上慢下來,以及對這些計算做了一些基礎性的改動來解決安全性這一問題,是MAD演算法的一個擴展。
六、密鑰的管理
密鑰既然要求保密,這就涉及到密鑰的管理問題,管理不好,密鑰同樣可能被無意識地泄露,並不是有了密鑰就高枕無憂,任何保密也只是相對的,是有時效的。要管理好密鑰我們還要注意以下幾個方面:
1、密鑰的使用要注意時效和次數
如果用戶可以一次又一次地使用同樣密鑰與別人交換信息,那麼密鑰也同其它任何密碼一樣存在著一定的安全性,雖然說用戶的私鑰是不對外公開的,但是也很難保證私鑰長期的保密性,很難保證長期以來不被泄露。如果某人偶然地知道了用戶的密鑰,那麼用戶曾經和另一個人交換的每一條消息都不再是保密的了。另外使用一個特定密鑰加密的信息越多,提供給竊聽者的材料也就越多,從某種意義上來講也就越不安全了。
因此,一般強調僅將一個對話密鑰用於一條信息中或一次對話中,或者建立一種按時更換密鑰的機制以減小密鑰暴露的可能性。
2、多密鑰的管理
假設在某機構中有100個人,如果他們任意兩人之間可以進行秘密對話,那麼總共需要多少密鑰呢?每個人需要知道多少密鑰呢?也許很容易得出答案,如果任何兩個人之間要不同的密鑰,則總共需要4950個密鑰,而且每個人應記住99個密鑰。如果機構的人數是1000、10000人或更多,這種辦法就顯然過於愚蠢了,管理密鑰將是一件可怕的事情。
Kerberos提供了一種解決這個較好方案,它是由MIT發明的,使保密密鑰的管理和分發變得十分容易,但這種方法本身還存在一定的缺點。為能在網際網路上提供一個實用的解決方案,Kerberos建立了一個安全的、可信任的密鑰分發中心(Key Distribution Center,KDC),每個用戶只要知道一個和KDC進行會話的密鑰就可以了,而不需要知道成百上千個不同的密鑰。
假設用戶甲想要和用戶乙進行秘密通信,則用戶甲先和KDC通信,用只有用戶甲和KDC知道的密鑰進行加密 ,用戶甲告訴KDC他想和用戶乙進行通信,KDC會為用戶甲和用戶乙之間的會話隨機選擇一個對話密鑰,並生成一個標簽,這個標簽由KDC和用戶乙之間的密鑰進行加密,並在用戶甲啟動和用戶乙對話時,用戶甲會把這個標簽交給用戶乙。這個標簽的作用是讓用戶甲確信和他交談的是用戶乙,而不是冒充者。因為這個標簽是由只有用戶乙和KDC知道的密鑰進行加密的,所以即使冒充者得到用戶甲發出的標簽也不可能進行解密,只有用戶乙收到後才能夠進行解密,從而確定了與用戶甲對話的人就是用戶乙。
當KDC生成標簽和隨機會話密碼,就會把它們用只有用戶甲和KDC知道的密鑰進行加密,然後把標簽和會話鑰傳給用戶甲,加密的結果可以確保只有用戶甲能得到這個信息,只有用戶甲能利用這個會話密鑰和用戶乙進行通話。同理,KDC會把會話密碼用只有KDC和用戶乙知道的密鑰加密,並把會話密鑰給用戶乙。
用戶甲會啟動一個和用戶乙的會話,並用得到的會話密鑰加密自己和用戶乙的會話,還要把KDC傳給它的標簽傳給用戶乙以確定用戶乙的身份,然後用戶甲和用戶乙之間就可以用會話密鑰進行安全的會話了,而且為了保證安全,這個會話密鑰是一次性的,這樣黑客就更難進行破解了。同時由於密鑰是一次性由系統自動產生的,則用戶不必記那麼多密鑰了,方便了人們的通信。
七、數據加密的標准
隨著計算機硬體的速度越來越快,製造一台這樣特殊的機器的花費已經降到了十萬美元左右,而用它來保護十億美元的銀行,那顯然是不夠保險了。另一方面,如果只用它來保護一台普通伺服器,那麼DES確實是一種好的辦法,因為黑客絕不會僅僅為入侵一個伺服器而花那麼多的錢破解DES密文。
另一種非常著名的加密演算法就是RSA了,RSA(Rivest-Shamir-Adleman)演算法是基於大數不可能被質因數分解假設的公鑰體系。簡單地說就是找兩個很大的質數。一個對外公開的為「公鑰」(Prblic key) ,另一個不告訴任何人,稱為"私鑰」(Private key)。這兩個密鑰是互補的,也就是說用公鑰加密的密文可以用私鑰解密,反過來也一樣。
假設用戶甲要寄信給用戶乙,他們互相知道對方的公鑰。甲就用乙的公鑰加密郵件寄出,乙收到後就可以用自己的私鑰解密出甲的原文。由於別人不知道乙的私鑰,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面,由於每個人都知道乙的公鑰,他們都可以給乙發信,那麼乙怎麼確信是不是甲的來信呢?那就要用到基於加密技術的數字簽名了。
甲用自己的私鑰將簽名內容加密,附加在郵件後,再用乙的公鑰將整個郵件加密(注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉後簽上自己的簽名,從而篡改了簽名)。這樣這份密文被乙收到以後,乙用自己的私鑰將郵件解密,得到甲的原文和數字簽名,然後用甲的公鑰解密簽名,這樣一來就可以確保兩方面的安全了。
八、加密技術的應用
加密技術的應用是多方面的,但最為廣泛的還是在電子商務和VPN上的應用,下面就分別簡敘。
1、在電子商務方面的應用
電子商務(E-business)要求顧客可以在網上進行各種商務活動,不必擔心自己的信用卡會被人盜用。在過去,用戶為了防止信用卡的號碼被竊取到,一般是通過電話訂貨,然後使用用戶的信用卡進行付款。現在人們開始用RSA(一種公開/私有密鑰)的加密技術,提高信用卡交易的安全性,從而使電子商務走向實用成為可能。
許多人都知道NETSCAPE公司是Internet商業中領先技術的提供者,該公司提供了一種基於RSA和保密密鑰的應用於網際網路的技術,被稱為安全插座層(Secure Sockets Layer,SSL)。
也許很多人知道Socket,它是一個編程界面,並不提供任何安全措施,而SSL不但提供編程界面,而且向上提供一種安全的服務,SSL3.0現在已經應用到了伺服器和瀏覽器上,SSL2.0則只能應用於伺服器端。
SSL3.0用一種電子證書(electric certificate)來實行身份進行驗證後,雙方就可以用保密密鑰進行安全的會話了。它同時使用「對稱」和「非對稱」加密方法,在客戶與電子商務的伺服器進行溝通的過程中,客戶會產生一個Session Key,然後客戶用伺服器端的公鑰將Session Key進行加密,再傳給伺服器端,在雙方都知道Session Key後,傳輸的數據都是以Session Key進行加密與解密的,但伺服器端發給用戶的公鑰必需先向有關發證機關申請,以得到公證。
基於SSL3.0提供的安全保障,用戶就可以自由訂購商品並且給出信用卡號了,也可以在網上和合作夥伴交流商業信息並且讓供應商把訂單和收貨單從網上發過來,這樣可以節省大量的紙張,為公司節省大量的電話、傳真費用。在過去,電子信息交換(Electric Data Interchange,EDI)、信息交易(information transaction)和金融交易(financial transaction)都是在專用網路上完成的,使用專用網的費用大大高於互聯網。正是這樣巨大的誘惑,才使人們開始發展網際網路上的電子商務,但不要忘記數據加密。
2、加密技術在VPN中的應用
現在,越多越多的公司走向國際化,一個公司可能在多個國家都有辦事機構或銷售中心,每一個機構都有自己的區域網LAN(Local Area Network),但在當今的網路 社會 人們的要求不僅如此,用戶希望將這些LAN連結在一起組成一個公司的廣域網,這個在現在已不是什麼難事了。
事實上,很多公司都已經這樣做了,但他們一般使用租用專用線路來連結這些區域網 ,他們考慮的就是網路的安全問題。現在具有加密/解密功能的路由器已到處都是,這就使人們通過互聯網連接這些區域網成為可能,這就是我們通常所說的虛擬專用網(Virtual Private Network ,VPN)。當數據離開發送者所在的區域網時,該數據首先被用戶湍連接到互聯網上的路由器進行硬體加密,數據在互聯網上是以加密的形式傳送的,當達到目的LAN的路由器時,該路由器就會對數據進行解密,這樣目的LAN中的用戶就可以看到真正的信息了。

㈢ 【深度知識】區塊鏈之加密原理圖示(加密,簽名)

先放一張以太坊的架構圖:

在學習的過程中主要是採用單個模塊了學習了解的,包括P2P,密碼學,網路,協議等。直接開始總結:

秘鑰分配問題也就是秘鑰的傳輸問題,如果對稱秘鑰,那麼只能在線下進行秘鑰的交換。如果在線上傳輸秘鑰,那就有可能被攔截。所以採用非對稱加密,兩把鑰匙,一把私鑰自留,一把公鑰公開。公鑰可以在網上傳輸。不用線下交易。保證數據的安全性。

如上圖,A節點發送數據到B節點,此時採用公鑰加密。A節點從自己的公鑰中獲取到B節點的公鑰對明文數據加密,得到密文發送給B節點。而B節點採用自己的私鑰解密。

2、無法解決消息篡改。

如上圖,A節點採用B的公鑰進行加密,然後將密文傳輸給B節點。B節點拿A節點的公鑰將密文解密。

1、由於A的公鑰是公開的,一旦網上黑客攔截消息,密文形同虛設。說白了,這種加密方式,只要攔截消息,就都能解開。

2、同樣存在無法確定消息來源的問題,和消息篡改的問題。

如上圖,A節點在發送數據前,先用B的公鑰加密,得到密文1,再用A的私鑰對密文1加密得到密文2。而B節點得到密文後,先用A的公鑰解密,得到密文1,之後用B的私鑰解密得到明文。

1、當網路上攔截到數據密文2時, 由於A的公鑰是公開的,故可以用A的公鑰對密文2解密,就得到了密文1。所以這樣看起來是雙重加密,其實最後一層的私鑰簽名是無效的。一般來講,我們都希望簽名是簽在最原始的數據上。如果簽名放在後面,由於公鑰是公開的,簽名就缺乏安全性。

2、存在性能問題,非對稱加密本身效率就很低下,還進行了兩次加密過程。

如上圖,A節點先用A的私鑰加密,之後用B的公鑰加密。B節點收到消息後,先採用B的私鑰解密,然後再利用A的公鑰解密。

1、當密文數據2被黑客攔截後,由於密文2隻能採用B的私鑰解密,而B的私鑰只有B節點有,其他人無法機密。故安全性最高。
2、當B節點解密得到密文1後, 只能採用A的公鑰來解密。而只有經過A的私鑰加密的數據才能用A的公鑰解密成功,A的私鑰只有A節點有,所以可以確定數據是由A節點傳輸過來的。

經兩次非對稱加密,性能問題比較嚴重。

基於以上篡改數據的問題,我們引入了消息認證。經過消息認證後的加密流程如下:

當A節點發送消息前,先對明文數據做一次散列計算。得到一個摘要, 之後將照耀與原始數據同時發送給B節點。當B節點接收到消息後,對消息解密。解析出其中的散列摘要和原始數據,然後再對原始數據進行一次同樣的散列計算得到摘要1, 比較摘要與摘要1。如果相同則未被篡改,如果不同則表示已經被篡改。

在傳輸過程中,密文2隻要被篡改,最後導致的hash與hash1就會產生不同。

無法解決簽名問題,也就是雙方相互攻擊。A對於自己發送的消息始終不承認。比如A對B發送了一條錯誤消息,導致B有損失。但A抵賴不是自己發送的。

在(三)的過程中,沒有辦法解決交互雙方相互攻擊。什麼意思呢? 有可能是因為A發送的消息,對A節點不利,後來A就抵賴這消息不是它發送的。

為了解決這個問題,故引入了簽名。這里我們將(二)-4中的加密方式,與消息簽名合並設計在一起。

在上圖中,我們利用A節點的私鑰對其發送的摘要信息進行簽名,然後將簽名+原文,再利用B的公鑰進行加密。而B得到密文後,先用B的私鑰解密,然後 對摘要再用A的公鑰解密,只有比較兩次摘要的內容是否相同。這既避免了防篡改問題,有規避了雙方攻擊問題。因為A對信息進行了簽名,故是無法抵賴的。

為了解決非對稱加密數據時的性能問題,故往往採用混合加密。這里就需要引入對稱加密,如下圖:

在對數據加密時,我們採用了雙方共享的對稱秘鑰來加密。而對稱秘鑰盡量不要在網路上傳輸,以免丟失。這里的共享對稱秘鑰是根據自己的私鑰和對方的公鑰計算出的,然後適用對稱秘鑰對數據加密。而對方接收到數據時,也計算出對稱秘鑰然後對密文解密。

以上這種對稱秘鑰是不安全的,因為A的私鑰和B的公鑰一般短期內固定,所以共享對稱秘鑰也是固定不變的。為了增強安全性,最好的方式是每次交互都生成一個臨時的共享對稱秘鑰。那麼如何才能在每次交互過程中生成一個隨機的對稱秘鑰,且不需要傳輸呢?

那麼如何生成隨機的共享秘鑰進行加密呢?

對於發送方A節點,在每次發送時,都生成一個臨時非對稱秘鑰對,然後根據B節點的公鑰 和 臨時的非對稱私鑰 可以計算出一個對稱秘鑰(KA演算法-Key Agreement)。然後利用該對稱秘鑰對數據進行加密,針對共享秘鑰這里的流程如下:

對於B節點,當接收到傳輸過來的數據時,解析出其中A節點的隨機公鑰,之後利用A節點的隨機公鑰 與 B節點自身的私鑰 計算出對稱秘鑰(KA演算法)。之後利用對稱秘鑰機密數據。

對於以上加密方式,其實仍然存在很多問題,比如如何避免重放攻擊(在消息中加入 Nonce ),再比如彩虹表(參考 KDF機制解決 )之類的問題。由於時間及能力有限,故暫時忽略。

那麼究竟應該採用何種加密呢?

主要還是基於要傳輸的數據的安全等級來考量。不重要的數據其實做好認證和簽名就可以,但是很重要的數據就需要採用安全等級比較高的加密方案了。

密碼套件 是一個網路協議的概念。其中主要包括身份認證、加密、消息認證(MAC)、秘鑰交換的演算法組成。

在整個網路的傳輸過程中,根據密碼套件主要分如下幾大類演算法:

秘鑰交換演算法:比如ECDHE、RSA。主要用於客戶端和服務端握手時如何進行身份驗證。

消息認證演算法:比如SHA1、SHA2、SHA3。主要用於消息摘要。

批量加密演算法:比如AES, 主要用於加密信息流。

偽隨機數演算法:例如TLS 1.2的偽隨機函數使用MAC演算法的散列函數來創建一個 主密鑰 ——連接雙方共享的一個48位元組的私鑰。主密鑰在創建會話密鑰(例如創建MAC)時作為一個熵來源。

在網路中,一次消息的傳輸一般需要在如下4個階段分別進行加密,才能保證消息安全、可靠的傳輸。

握手/網路協商階段:

在雙方進行握手階段,需要進行鏈接的協商。主要的加密演算法包括RSA、DH、ECDH等

身份認證階段:

身份認證階段,需要確定發送的消息的來源來源。主要採用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA簽名)等。

消息加密階段:

消息加密指對發送的信息流進行加密。主要採用的加密方式包括DES、RC4、AES等。

消息身份認證階段/防篡改階段:

主要是保證消息在傳輸過程中確保沒有被篡改過。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。

ECC :Elliptic Curves Cryptography,橢圓曲線密碼編碼學。是一種根據橢圓上點倍積生成 公鑰、私鑰的演算法。用於生成公私秘鑰。

ECDSA :用於數字簽名,是一種數字簽名演算法。一種有效的數字簽名使接收者有理由相信消息是由已知的發送者創建的,從而發送者不能否認已經發送了消息(身份驗證和不可否認),並且消息在運輸過程中沒有改變。ECDSA簽名演算法是ECC與DSA的結合,整個簽名過程與DSA類似,所不一樣的是簽名中採取的演算法為ECC,最後簽名出來的值也是分為r,s。 主要用於身份認證階段

ECDH :也是基於ECC演算法的霍夫曼樹秘鑰,通過ECDH,雙方可以在不共享任何秘密的前提下協商出一個共享秘密,並且是這種共享秘鑰是為當前的通信暫時性的隨機生成的,通信一旦中斷秘鑰就消失。 主要用於握手磋商階段。

ECIES: 是一種集成加密方案,也可稱為一種混合加密方案,它提供了對所選擇的明文和選擇的密碼文本攻擊的語義安全性。ECIES可以使用不同類型的函數:秘鑰協商函數(KA),秘鑰推導函數(KDF),對稱加密方案(ENC),哈希函數(HASH), H-MAC函數(MAC)。

ECC 是橢圓加密演算法,主要講述了按照公私鑰怎麼在橢圓上產生,並且不可逆。 ECDSA 則主要是採用ECC演算法怎麼來做簽名, ECDH 則是採用ECC演算法怎麼生成對稱秘鑰。以上三者都是對ECC加密演算法的應用。而現實場景中,我們往往會採用混合加密(對稱加密,非對稱加密結合使用,簽名技術等一起使用)。 ECIES 就是底層利用ECC演算法提供的一套集成(混合)加密方案。其中包括了非對稱加密,對稱加密和簽名的功能。

<meta charset="utf-8">

這個先訂條件是為了保證曲線不包含奇點。

所以,隨著曲線參數a和b的不斷變化,曲線也呈現出了不同的形狀。比如:

所有的非對稱加密的基本原理基本都是基於一個公式 K = k G。其中K代表公鑰,k代表私鑰,G代表某一個選取的基點。非對稱加密的演算法 就是要保證 該公式 不可進行逆運算( 也就是說G/K是無法計算的 )。 *

ECC是如何計算出公私鑰呢?這里我按照我自己的理解來描述。

我理解,ECC的核心思想就是:選擇曲線上的一個基點G,之後隨機在ECC曲線上取一個點k(作為私鑰),然後根據k G計算出我們的公鑰K。並且保證公鑰K也要在曲線上。*

那麼k G怎麼計算呢?如何計算k G才能保證最後的結果不可逆呢?這就是ECC演算法要解決的。

首先,我們先隨便選擇一條ECC曲線,a = -3, b = 7 得到如下曲線:

在這個曲線上,我隨機選取兩個點,這兩個點的乘法怎麼算呢?我們可以簡化下問題,乘法是都可以用加法表示的,比如2 2 = 2+2,3 5 = 5+5+5。 那麼我們只要能在曲線上計算出加法,理論上就能算乘法。所以,只要能在這個曲線上進行加法計算,理論上就可以來計算乘法,理論上也就可以計算k*G這種表達式的值。

曲線上兩點的加法又怎麼算呢?這里ECC為了保證不可逆性,在曲線上自定義了加法體系。

現實中,1+1=2,2+2=4,但在ECC演算法里,我們理解的這種加法體系是不可能。故需要自定義一套適用於該曲線的加法體系。

ECC定義,在圖形中隨機找一條直線,與ECC曲線相交於三個點(也有可能是兩個點),這三點分別是P、Q、R。

那麼P+Q+R = 0。其中0 不是坐標軸上的0點,而是ECC中的無窮遠點。也就是說定義了無窮遠點為0點。

同樣,我們就能得出 P+Q = -R。 由於R 與-R是關於X軸對稱的,所以我們就能在曲線上找到其坐標。

P+R+Q = 0, 故P+R = -Q , 如上圖。

以上就描述了ECC曲線的世界裡是如何進行加法運算的。

從上圖可看出,直線與曲線只有兩個交點,也就是說 直線是曲線的切線。此時P,R 重合了。

也就是P = R, 根據上述ECC的加法體系,P+R+Q = 0, 就可以得出 P+R+Q = 2P+Q = 2R+Q=0

於是乎得到 2 P = -Q (是不是與我們非對稱演算法的公式 K = k G 越來越近了)。

於是我們得出一個結論,可以算乘法,不過只有在切點的時候才能算乘法,而且只能算2的乘法。

假若 2 可以變成任意個數進行想乘,那麼就能代表在ECC曲線里可以進行乘法運算,那麼ECC演算法就能滿足非對稱加密演算法的要求了。

那麼我們是不是可以隨機任何一個數的乘法都可以算呢? 答案是肯定的。 也就是點倍積 計算方式。

選一個隨機數 k, 那麼k * P等於多少呢?

我們知道在計算機的世界裡,所有的都是二進制的,ECC既然能算2的乘法,那麼我們可以將隨機數k描 述成二進制然後計算。假若k = 151 = 10010111

由於2 P = -Q 所以 這樣就計算出了k P。 這就是點倍積演算法 。所以在ECC的曲線體系下是可以來計算乘法,那麼以為這非對稱加密的方式是可行的。

至於為什麼這樣計算 是不可逆的。這需要大量的推演,我也不了解。但是我覺得可以這樣理解:

我們的手錶上,一般都有時間刻度。現在如果把1990年01月01日0點0分0秒作為起始點,如果告訴你至起始點為止時間流逝了 整1年,那麼我們是可以計算出現在的時間的,也就是能在手錶上將時分秒指針應該指向00:00:00。但是反過來,我說現在手錶上的時分秒指針指向了00:00:00,你能告訴我至起始點算過了有幾年了么?

ECDSA簽名演算法和其他DSA、RSA基本相似,都是採用私鑰簽名,公鑰驗證。只不過演算法體系採用的是ECC的演算法。交互的雙方要採用同一套參數體系。簽名原理如下:

在曲線上選取一個無窮遠點為基點 G = (x,y)。隨機在曲線上取一點k 作為私鑰, K = k*G 計算出公鑰。

簽名過程:

生成隨機數R, 計算出RG.

根據隨機數R,消息M的HASH值H,以及私鑰k, 計算出簽名S = (H+kx)/R.

將消息M,RG,S發送給接收方。

簽名驗證過程:

接收到消息M, RG,S

根據消息計算出HASH值H

根據發送方的公鑰K,計算 HG/S + xK/S, 將計算的結果與 RG比較。如果相等則驗證成功。

公式推論:

HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG

在介紹原理前,說明一下ECC是滿足結合律和交換律的,也就是說A+B+C = A+C+B = (A+C)+B。

這里舉一個WIKI上的例子說明如何生成共享秘鑰,也可以參考 Alice And Bob 的例子。

Alice 與Bob 要進行通信,雙方前提都是基於 同一參數體系的ECC生成的 公鑰和私鑰。所以有ECC有共同的基點G。

生成秘鑰階段:

Alice 採用公鑰演算法 KA = ka * G ,生成了公鑰KA和私鑰ka, 並公開公鑰KA。

Bob 採用公鑰演算法 KB = kb * G ,生成了公鑰KB和私鑰 kb, 並公開公鑰KB。

計算ECDH階段:

Alice 利用計算公式 Q = ka * KB 計算出一個秘鑰Q。

Bob 利用計算公式 Q' = kb * KA 計算出一個秘鑰Q'。

共享秘鑰驗證:

Q = ka KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'

故 雙方分別計算出的共享秘鑰不需要進行公開就可採用Q進行加密。我們將Q稱為共享秘鑰。

在以太坊中,採用的ECIEC的加密套件中的其他內容:

1、其中HASH演算法採用的是最安全的SHA3演算法 Keccak 。

2、簽名演算法採用的是 ECDSA

3、認證方式採用的是 H-MAC

4、ECC的參數體系採用了secp256k1, 其他參數體系 參考這里

H-MAC 全程叫做 Hash-based Message Authentication Code. 其模型如下:

以太坊 的 UDP通信時(RPC通信加密方式不同),則採用了以上的實現方式,並擴展化了。

首先,以太坊的UDP通信的結構如下:

其中,sig是 經過 私鑰加密的簽名信息。mac是可以理解為整個消息的摘要, ptype是消息的事件類型,data則是經過RLP編碼後的傳輸數據。

其UDP的整個的加密,認證,簽名模型如下:

㈣ 簡述對稱加密演算法的基本原理

對稱加密是計算機加密領域最古老也是最經典的加密標准。雖然對稱加密被認為不再是安全的加密方式,但是直到現在,還看不到它被淘汰的跡象。在很多非網路化的加密環境中,對稱加密足以滿足人們的需要。

對稱加密採用單密鑰加密方式,不論是加密還是解密都是用同一個密鑰,即「一把鑰匙開一把鎖」。對稱加密的好處在於操作簡單、管理方便、速度快。它的缺點在於密鑰在網路傳輸中容易被竊聽,每個密鑰只能應用一次,對密鑰管理造成了困難。對稱加密的實現形式和加密演算法的公開性使它依賴於密鑰的安全性,而不是演算法的安全性。

一個對稱加密系統由五個部分組成,可以表述為

S={M,C,K,E,D}

各字母的含義如下:

M:明文空間,所有明文的集合。

C:密文空間,全體密文的集合。

K:密鑰空間,全體密鑰的集合。

E:加密演算法。

D:解密演算法。

㈤ 現代密碼學加密原理

密碼學是在區塊鏈技術中承擔著非常重要的角色,但其實,在互聯網中,也大量的使用著密碼學的技術,本文將介紹現代密碼學中的早期加密方法,這將有助於我們理解區塊鏈中的復雜演算法。

第二次大戰之後,從軍方演化而來的互聯網慢慢的進入了尋常百姓家,我們能夠將一切事物都電子化處理,交易也不例外,於是電子銀行也出現了,所有交易都可以通過網路進行。隨著互聯網用戶越來越多,新的問題產生了,加密需要雙方共享一個秘密的隨機數,也就是秘鑰,但從未謀面的兩個人,如何就此共享密鑰達成一致,而又不讓第三方監聽這知道呢?這將是現代密碼學的目標。

1976年,維特菲爾德和馬丁赫爾曼找到了一種巧妙的解決方法,讓我們用顏色為比喻來講解該技巧是如何實現的:

首先,明確我們的目標,發送者和接受者就秘密顏色達成一致,而不讓竊聽者知道,於是需要採用一種技巧,該技巧基於兩點:

一、混合兩種顏色得到第三種顏色很容易;

二、得到這種混合色後,想在此基礎上知道原來的顏色就很難了, 這就是鎖的原理。

朝一個方向容易,朝反方向難,這被稱作是單向函數。解決方案是這樣的,首先,他們公開對某種顏色達成一致,假設是黃色,然後發送者和接收者隨機選取私有顏色,混到公共的黃色中,從而掩飾掉他們的私有顏色,並且將混合顏色發給接收者,接收者知道自己的私有顏色,並將它的混合顏色發給發送者,

然後就是技巧的關鍵了,發送者和接收者將各自私有顏色加入到另一個人的混合色中,然後得到一種共享秘密顏色,此時,竊聽者無法確定這種顏色,她必須有一種私有顏色才能確定,技巧就是這樣,對密碼學的世界中, 我們需要一個數值的運算過程,這個過程向單一方向很容易,反方向會很難。

我們需要一種朝一方向易,反方向難的數值過程,於是密碼學家找到了模算數,也就是取余的函數,(比如46除12的余數是10)。

假設我們考慮用質數做模型,比如17,我們找到17的一個原根,這里是3,它具有如下重要性質,取不同冪次時,結果會在時鍾上均勻分布,3是一個生成元,取3的X次方,結果會等可能地出現在0和17中間任何整數上。

但相反的過程就難了,比如給定12,要求這是3的多少次方,這被稱為離散對數問題,這樣我們就有了單向函數,一個方向計算很容易,但反方向就很難了,已知12,我們只能採用試錯法,求出匹配的質數。

這有多難呢?如果數字很小,這還很容易,但模數是長達數百位的質數,那麼,想解密是不切實際的,即便藉助世界上最強大的計算機,要遍歷所有可能的情況,也需要上千年的時間,單向函數的強度取決於反向過程所需要的時間。

解決方案是這樣的,首先,發送者和接收者公開質模數和生成元,這里的例子中也就是17和3,然後發送者選擇一個私有的隨機數,比如15,計算315 mod 17(結果為6),然後公開將此結果發送給接收者,之後接收者選擇自己的私有隨機數,比如13,計算313mod 17(結果為12),然後公開將此結果發送給對方。

關鍵在於,將接收者的公開結果,取她的私有數字次方,以獲得共享密鑰,這里是10,接收者將發送者的公開結果,取她的私有數字次方,結果得到相同的共享密鑰,可能大家還不好理解,但他們實際上進行了相同的運算。

考慮發送者,她從接收者接收到的是12,來自313 mod 17,所以她的計算實際上是3∧13∧15 mod 17,而接收者,他從發送者那裡接收6,來自315mod17,所以他的計算實際上是3∧15∧13mod17,兩種計算結果是相同的,只是指數的順序不同,調換指數順序,結果不會改變,他們的結果都是,3取兩人私有數字次冪,沒有這些私有數字,15或13,第三方將無法求出結果。

第三方會被困在離散對數問題之中,數字足夠大時,實踐中,她在合理時限內,幾乎不可能破解,這就解決了交換密鑰的問題,這可以同偽隨機數生成器結合使用,為從未謀面的人提供通信加密。

現在區塊鏈常用的演算法,如sha256,都是繼承單向函數的設計思維,一個方向計算容易,反過來幾乎不能破解,來保證安全。

㈥ 加密的原理什麼

加密有兩種方式:對稱密鑰加密和非對稱密鑰加密:
1. 對稱密鑰加密原理
在加密傳輸中最初是採用對稱密鑰方式,也就是加密和解密都用相同的密鑰。
2. 非對稱密鑰加密原理 正因為對稱密鑰加密方法也不是很安全,於是想到了一種稱之為「非對稱密鑰」加密(也稱公鑰加密)方法。所謂非對稱密鑰加密是指加密和解密用不同的密鑰,其中一個稱之為公鑰,可以對外公開,通常用於數據加密,另一個相對稱之為私鑰,是不能對外公布的,通常用於數據解密。而且公/私鑰必須成對使用,也就是用其中一個密鑰加密的數據只能由與其配對的另一個密鑰進行解密。這樣用公鑰加密的數據即使被人非法截取了,因為他沒有與之配對的私鑰(私鑰僅發送方自己擁有),也不能對數據進行解密,確保了數據的安全。

㈦ 常見加密演算法原理及概念

在安全領域,利用密鑰加密演算法來對通信的過程進行加密是一種常見的安全手段。利用該手段能夠保障數據安全通信的三個目標:

而常見的密鑰加密演算法類型大體可以分為三類:對稱加密、非對稱加密、單向加密。下面我們來了解下相關的演算法原理及其常見的演算法。

對稱加密演算法採用單密鑰加密,在通信過程中,數據發送方將原始數據分割成固定大小的塊,經過密鑰和加密演算法逐個加密後,發送給接收方;接收方收到加密後的報文後,結合密鑰和解密演算法解密組合後得出原始數據。由於加解密演算法是公開的,因此在這過程中,密鑰的安全傳遞就成為了至關重要的事了。而密鑰通常來說是通過雙方協商,以物理的方式傳遞給對方,或者利用第三方平台傳遞給對方,一旦這過程出現了密鑰泄露,不懷好意的人就能結合相應的演算法攔截解密出其加密傳輸的內容。

對稱加密演算法擁有著演算法公開、計算量小、加密速度和效率高得特定,但是也有著密鑰單一、密鑰管理困難等缺點。

常見的對稱加密演算法有:
DES:分組式加密演算法,以64位為分組對數據加密,加解密使用同一個演算法。
3DES:三重數據加密演算法,對每個數據塊應用三次DES加密演算法。
AES:高級加密標准演算法,是美國聯邦政府採用的一種區塊加密標准,用於替代原先的DES,目前已被廣泛應用。
Blowfish:Blowfish演算法是一個64位分組及可變密鑰長度的對稱密鑰分組密碼演算法,可用來加密64比特長度的字元串。

非對稱加密演算法採用公鑰和私鑰兩種不同的密碼來進行加解密。公鑰和私鑰是成對存在,公鑰是從私鑰中提取產生公開給所有人的,如果使用公鑰對數據進行加密,那麼只有對應的私鑰才能解密,反之亦然。
下圖為簡單非對稱加密演算法的常見流程:

發送方Bob從接收方Alice獲取其對應的公鑰,並結合相應的非對稱演算法將明文加密後發送給Alice;Alice接收到加密的密文後,結合自己的私鑰和非對稱演算法解密得到明文。這種簡單的非對稱加密演算法的應用其安全性比對稱加密演算法來說要高,但是其不足之處在於無法確認公鑰的來源合法性以及數據的完整性。
非對稱加密演算法具有安全性高、演算法強度負復雜的優點,其缺點為加解密耗時長、速度慢,只適合對少量數據進行加密,其常見演算法包括:
RSA :RSA演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰,可用於加密,也能用於簽名。
DSA :數字簽名演算法,僅能用於簽名,不能用於加解密。
DSS :數字簽名標准,技能用於簽名,也可以用於加解密。
ELGamal :利用離散對數的原理對數據進行加解密或數據簽名,其速度是最慢的。

單向加密演算法常用於提取數據指紋,驗證數據的完整性。發送者將明文通過單向加密演算法加密生成定長的密文串,然後傳遞給接收方。接收方在收到加密的報文後進行解密,將解密獲取到的明文使用相同的單向加密演算法進行加密,得出加密後的密文串。隨後將之與發送者發送過來的密文串進行對比,若發送前和發送後的密文串相一致,則說明傳輸過程中數據沒有損壞;若不一致,說明傳輸過程中數據丟失了。單向加密演算法只能用於對數據的加密,無法被解密,其特點為定長輸出、雪崩效應。常見的演算法包括:MD5、sha1、sha224等等,其常見用途包括:數字摘要、數字簽名等等。

密鑰交換IKE(Internet Key Exchange)通常是指雙方通過交換密鑰來實現數據加密和解密,常見的密鑰交換方式有下面兩種:
1、公鑰加密,將公鑰加密後通過網路傳輸到對方進行解密,這種方式缺點在於具有很大的可能性被攔截破解,因此不常用;
2、Diffie-Hellman,DH演算法是一種密鑰交換演算法,其既不用於加密,也不產生數字簽名。DH演算法的巧妙在於需要安全通信的雙方可以用這個方法確定對稱密鑰。然後可以用這個密鑰進行加密和解密。但是注意,這個密鑰交換協議/演算法只能用於密鑰的交換,而不能進行消息的加密和解密。雙方確定要用的密鑰後,要使用其他對稱密鑰操作加密演算法實際加密和解密消息。DH演算法通過雙方共有的參數、私有參數和演算法信息來進行加密,然後雙方將計算後的結果進行交換,交換完成後再和屬於自己私有的參數進行特殊演算法,經過雙方計算後的結果是相同的,此結果即為密鑰。
如:

在整個過程中,第三方人員只能獲取p、g兩個值,AB雙方交換的是計算後的結果,因此這種方式是很安全的。

公鑰基礎設施是一個包括硬體、軟體、人員、策略和規程的集合,用於實現基於公鑰密碼機制的密鑰和證書的生成、管理、存儲、分發和撤銷的功能,其組成包括:簽證機構CA、注冊機構RA、證書吊銷列表CRL和證書存取庫CB。
PKI採用證書管理公鑰,通過第三方可信任CA中心,把用戶的公鑰和其他用戶信息組生成證書,用於驗證用戶的身份。
公鑰證書是以數字簽名的方式聲明,它將公鑰的值綁定到持有對應私鑰的個人、設備或服務身份。公鑰證書的生成遵循X.509協議的規定,其內容包括:證書名稱、證書版本、序列號、演算法標識、頒發者、有效期、有效起始日期、有效終止日期、公鑰 、證書簽名等等的內容。

CA證書認證的流程如下圖,Bob為了向Alice證明自己是Bob和某個公鑰是自己的,她便向一個Bob和Alice都信任的CA機構申請證書,Bob先自己生成了一對密鑰對(私鑰和公鑰),把自己的私鑰保存在自己電腦上,然後把公鑰給CA申請證書,CA接受申請於是給Bob頒發了一個數字證書,證書中包含了Bob的那個公鑰以及其它身份信息,當然,CA會計算這些信息的消息摘要並用自己的私鑰加密消息摘要(數字簽名)一並附在Bob的證書上,以此來證明這個證書就是CA自己頒發的。Alice得到Bob的證書後用CA的證書(自簽署的)中的公鑰來解密消息摘要,隨後將摘要和Bob的公鑰發送到CA伺服器上進行核對。CA在接收到Alice的核對請求後,會根據Alice提供的信息核對Bob的證書是否合法,如果確認合法則回復Alice證書合法。Alice收到CA的確認回復後,再去使用從證書中獲取的Bob的公鑰加密郵件然後發送給Bob,Bob接收後再以自己的私鑰進行解密。

㈧ 數據加密原理是什麼 數據解密原理介紹【詳解】

數據加密和解密,數據加密和解密原理是什麼?

隨著Internet 的普及,大量的數據、文件在Internet 傳送,因此在客觀上就需要一種強有力的安全措施來保護機密數據不被竊取或篡改。我們有幾種方法來加密數據流。所有這些方法都可以用軟體很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密演算法的(當同時有原文和密文時,破譯加密演算法雖然也不是很容易,但已經是可能的了) 。最好的加密演算法對系統性能幾乎沒有影響,並且還可以帶來其他內在的優點。例如,大家都知道的pkzip ,它既壓縮數據又加密數據。又如,dbms 的一些軟體包總是包含一些加密方法以使復制文件這一功能對一些敏感數據是無效的,或者需要用戶的密碼。所有這些加判啟悔密演算法都要有高效的加密和解密能力。幸運的是,在所有的加密演算法中最簡單的一種就是“置換表”演算法,這種演算法也能很好達到加密的需要。每一個數據段(總是一個位元組) 對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密後的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86 cpu 系列就有一個指令‘xlat’在硬體級來完成這樣的工作。這種加密演算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密演算法對於黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。對這種“置換表”方式的一個改進就是使用2 個或者更多的“置換表”,這些表都是基於數據流中位元組的位置的,或者基於數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾旁皮次變換。通過使用更多的“置換表”,並且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a 表,對所有的奇數位置使用b 表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。與使用“置換表”相類似“, 變換數據位置”也在計算機加密中使用。但是,這需要更多的執行時間。從輸入中讀入明文放到一個buffer 中,再在buffer 中對他們重排序,然後按這個順序再輸出。解密程序按相反的順序還原數據。這種方法總是和一些別的加密演算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient 可以變為listen ,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經變化了。但是,還有一種更好的加密演算法,只有計算機可以做,就是字/ 位元組循環移位和xor 操作。如果我們把一個字或位元組在一個數據流內做循環移位,使用多個或變化的方向(左移或右移) ,就可以迅速的產生一個加密的數據流。這種方法是很好的,破譯它就更加困難! 而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產生一系列的數字,我們可以使用fibbonaci 數列。對數列所產生的數做模運算(例如模3) ,得到一個結果,然後循環移位這個結果的次數,將使破譯次密碼變的幾乎不可能! 但是,使用fibbonaci 數列這種偽隨機的掘正方式所產生的密碼對我們的解密程序來講是非常容易的。在一些情況下,我們想能夠知道數據是否已經被篡改了或被破壞了,這時就需要產生一些校驗碼,並且把這些校驗碼插入到數據流中。這樣做對數據的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數據或程序是否加過密,是否有數字簽名。所以,加密程序在每次load 到內存要開始執行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查! 很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數據。因此,在一些反病毒或殺病毒軟體中一定要使用加密技術。

循環冗餘校驗是一種典型的校驗數據的方法。對於每一個數據塊,它使用位循環移位和xor 操作來產生一個16 位或32 位的校驗和,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用於文件的傳輸,例如xmodem - crc。這是方法已經成為標准,而且有詳細的文檔。但是,基於標准crc 演算法的一種修改演算法對於發現加密數據塊中的錯誤和文件是否被病毒感染是很有效的。

一個好的加密演算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,並用它來加密明文,不同的密碼或密鑰產生不同的密文。這又分為兩種方式:對稱密鑰演算法和非對稱密鑰演算法。所謂對稱密鑰演算法就是加密解密都使用相同的密鑰,非對稱密鑰演算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa 加密方法都是非對稱加密演算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數學理論上講,幾乎沒有真正不可逆的演算法存在。例如,對於一個輸入‘a’執行一個操作得到結果‘b’,那麼我們可以基於‘b’,做一個相對應的操作,導出輸入‘a’。在一些情況下,對於每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數為0) 。對於一個沒有定義的操作來講,基於加密演算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密演算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。

rsa 加密演算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至於在現實上是不可行的。加密演算法本身也是很慢的,這使得使用rsa 演算法加密大量的數據變的有些不可行。這就使得一些現實中加密演算法都基於rsa 加密演算法。pgp 演算法(以及大多數基於rsa 演算法的加密方法) 使用公鑰來加密一個對稱加密演算法的密鑰,然後再利用一個快速的對稱加密演算法來加密數據。這個對稱演算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。

我們舉一個例子: 假定現在要加密一些數據使用密鑰‘12345’。利用rsa 公鑰,使用rsa 演算法加密這個密鑰‘12345’,並把它放在要加密的數據的前面(可能後面跟著一個分割符或文件長度,以區分數據和密鑰) ,然後,使用對稱加密演算法加密正文,使用的密鑰就是‘12345’。當對方收到時,解密程序找到加密過的密鑰,並利用rsa 私鑰解密出來,然後再確定出數據的開始位置,利用密鑰‘12345’來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。但並不是經過加密的數據就是絕對安全的,數據加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現實上是不可能的,尤其是短時間內。

㈨ 網路安全中加密和解密的原理是什麼

對數據在網路傳輸中的保護 加密演算法 為防止劫包偷取信息而加了密碼 只有知道解開的演算法才能看
如hash DES

閱讀全文

與加密領域競爭原理相關的資料

熱點內容
老韓綜app怎麼看不了了 瀏覽:227
只有一個程序員的體驗 瀏覽:321
用伺服器地址怎麼有網 瀏覽:550
路由器伺服器昵稱是什麼 瀏覽:713
程序員男友消失了 瀏覽:399
程序員搜索框自動提示 瀏覽:26
android44api20 瀏覽:675
adb刷recovery命令 瀏覽:695
廣聯達正版加密鎖可以補辦嗎 瀏覽:943
java程序員一天多少行代碼 瀏覽:947
喪屍危機java 瀏覽:123
華為手機怎麼去除app標記未讀信息 瀏覽:855
java監控文件夾 瀏覽:807
群控伺服器主機怎麼轉變普通電腦 瀏覽:707
手機怎麼調整app大小 瀏覽:455
加密門禁卡揭秘 瀏覽:139
詞釋pdf 瀏覽:993
安卓手機上如何停止自動續費 瀏覽:882
加密編碼摘要 瀏覽:787
疫情命令黨 瀏覽:498