永久領域加密
在安全領域,利用密鑰加密演算法來對通信的過程進行加密是一種常見的安全手段。利用該手段能夠保障數據安全通信的三個目標:
而常見的密鑰加密演算法類型大體可以分為三類:對稱加密、非對稱加密、單向加密。下面我們來了解下相關的演算法原理及其常見的演算法。
對稱加密演算法採用單密鑰加密,在通信過程中,數據發送方將原始數據分割成固定大小的塊,經過密鑰和加密演算法逐個加密後,發送給接收方;接收方收到加密後的報文後,結合密鑰和解密演算法解密組合後得出原始數據。由於加解密演算法是公開的,因此在這過程中,密鑰的安全傳遞就成為了至關重要的事了。而密鑰通常來說是通過雙方協商,以物理的方式傳遞給對方,或者利用第三方平台傳遞給對方,一旦這過程出現了密鑰泄露,不懷好意的人就能結合相應的演算法攔截解密出其加密傳輸的內容。
對稱加密演算法擁有著演算法公開、計算量小、加密速度和效率高得特定,但是也有著密鑰單一、密鑰管理困難等缺點。
常見的對稱加密演算法有:
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接收後再以自己的私鑰進行解密。
⑵ 詳解加密技術概念、加密方法以及應用
隨著網路技術的發展,網路安全也就成為當今網路 社會 的焦點中的焦點,幾乎沒有人不在談論網路上的安全問題,病毒、黑客程序、郵件炸彈、遠程偵聽等這一切都無不讓人膽戰心驚。病毒、黑客的猖獗使身處今日網路 社會 的人們感覺到談網色變,無所適從。
但我們必需清楚地認識到,這一切一切的安全問題我們不可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因為任何反病毒程序都只能在新病毒發現之後才能開發出來,目前還沒有哪能一家反病毒軟體開發商敢承諾他們的軟體能查殺所有已知的和未知的病毒,所以我們不能有等網路安全了再上網的念頭,因為或許網路不能有這么一日,就象「矛」與「盾」,網路與病毒、黑客永遠是一對共存體。
現代的電腦加密技術就是適應了網路安全的需要而應運產生的,它為我們進行一般的電子商務活動提供了安全保障,如在網路中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術也不是什麼新生事物,只不過應用在當今電子商務、電腦網路中還是近幾年的 歷史 。下面我們就詳細介紹一下加密技術的方方面面,希望能為那些對加密技術還一知半解的朋友提供一個詳細了解的機會!
一、加密的由來
加密作為保障數據安全的一種方式,它不是現在才有的,它產生的 歷史 相當久遠,它是起源於要追溯於公元前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中的用戶就可以看到真正的信息了。
⑶ 十大常見密碼加密方式
一、密鑰散列
採用MD5或者SHA1等散列演算法,對明文進行加密。嚴格來說,MD5不算一種加密演算法,而是一種摘要演算法。無論多長的輸入,MD5都會輸出一個128位(16位元組)的散列值。而SHA1也是流行的消息摘要演算法,它可以生成一個被稱為消息摘要的160位(20位元組)散列值。MD5相對SHA1來說,安全性較低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。
二、對稱加密
採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密。對稱加密演算法中常用的演算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
三、非對稱加密
非對稱加密演算法是一種密鑰的保密方法,它需要兩個密鑰來進行加密和解密,這兩個密鑰是公開密鑰和私有密鑰。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。非對稱加密演算法有:RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。
四、數字簽名
數字簽名(又稱公鑰數字簽名)是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領域的技術來實現的,用於鑒別數字信息的方法。
五、直接明文保存
早期很多這樣的做法,比如用戶設置的密碼是「123」,直接就將「123」保存到資料庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能採取的是這種方式。
六、使用MD5、SHA1等單向HASH演算法保護密碼
使用這些演算法後,無法通過計算還原出原始密碼,而且實現比較簡單,因此很多互聯網公司都採用這種方式保存用戶密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。
七、特殊的單向HASH演算法
由於單向HASH演算法在保護密碼方面不再安全,於是有些公司在單向HASH演算法基礎上進行了加鹽、多次HASH等擴展,這些方式可以在一定程度上增加破解難度,對於加了「固定鹽」的HASH演算法,需要保護「鹽」不能泄露,這就會遇到「保護對稱密鑰」一樣的問題,一旦「鹽」泄露,根據「鹽」重新建立彩虹表可以進行破解,對於多次HASH,也只是增加了破解的時間,並沒有本質上的提升。
八、PBKDF2
該演算法原理大致相當於在HASH演算法基礎上增加隨機鹽,並進行多次HASH運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。
九、BCrypt
BCrypt 在1999年就產生了,並且在對抗 GPU/ASIC 方面要優於 PBKDF2,但是我還是不建議你在新系統中使用它,因為它在離線破解的威脅模型分析中表現並不突出。
十、SCrypt
SCrypt 在如今是一個更好的選擇:比 BCrypt設計得更好(尤其是關於內存方面)並且已經在該領域工作了 10 年。另一方面,它也被用於許多加密貨幣,並且我們有一些硬體(包括 FPGA 和 ASIC)能實現它。 盡管它們專門用於采礦,也可以將其重新用於破解。
⑷ [簡述AES高級加密標准]簡述加密和解密技術的工作機制
1 引言 隨著網際網路的發展,信息傳輸及存儲的安全問題成為影響網際網路應用發展的重要因素。信息安全技術也就成為了人們研究網際網路應用的新熱點。 信息安全的研究包括密碼理論與技術、安全協議睜檔野與技術、安全體系結構理論、信息對抗理論與技術、網路安全與安全產品等領域,其中密碼演算法的理論與實現研究是信息安全研究的基礎。
2 AES加密標准
1977年1月公布的數據加密標准DES(Data Encrption Standard)經過20年的實踐應用後,現在已被認為是不可靠的。1997年1月美國國家標准和技術研究所(NIST)發布了高級加密標准(AES- FIPS)的研發計劃,並於同年9月正式發布了徵集候選演算法公告[1],NIST希望確定一種保護敏感信息的公開、免費並且全球通用的演算法作為AES,以代替DES。NIST對演算法的基本要求是:演算法必須是私鑰體制的分組密碼,支持128位分組長度和129、192、256bits密鑰長度。
3 AES的研究現狀
從1997年NIST發布了高級加密標准AES的研發計劃到現在,對AES的研究大致可以分成三個階段。第一階段是從1997到2000年,研究的主要方向是提出候選演算法並對各候選演算法的性能進行分析。在此期間共提出了十五個候選演算法,最終Rijndael演算法勝出並用於AES中。Rijndael演算法是一種蠢塌可變分組長度和密鑰長度的迭代型分組密碼,它的分組長度和密鑰長度均可獨立地指定為128bits、192bits、256bits,它以其多方面的優良性能,成為AES的最佳選擇。Rijndael演算法能抵抗現在的所有己知密碼攻擊,它的密鑰建立時間極短且靈活性強,它極低的內存要求使其非常適合在存儲器受限的環境中使用,悉喊並且表現出很好的性能。第二階段是從2000年Rijndael演算法勝出後到2001年NIST發布FIPS PUBS 197文件前。在此階段對AES的研究轉到了對Rijndael演算法的研究和分析、設計AES的工作模式上。第三階段是從FIPS PUBS 197發布到現在。在此階段,研究的方向可以分成兩個主要方向:一個是繼續研究Rijndael演算法本身的性能,特別是其安全性分析;另一個就是AES的實現和應用的研究。
演算法設計主要研究演算法設計遵循的原則和整體結構,為性能分析提供了一條途徑。從演算法的結構上分析演算法性能是簡單有效的,研究演算法整體結構上的缺陷為提出新的密碼分析方法提供新的手段。另一方面,研究AES的演算法設計對研發新的分組密碼提供了設計原則和參考。目前分組數據加密演算法的整體結構有兩大類:Feistel網路、非平衡Feistel網路和SP網路。
性能分析主要研究演算法的各項特性,性能分析主要可以分為實現分析和密碼分析兩類。實現分析主要研究AES演算法可實現的能力。當前實現性分析主要集中在AES的硬、軟體實現的難易度和實現演算法的效率等領域中。密碼分析則是在理論上對現有加密演算法進行研究的主要方向。密碼分析主要研究AES演算法抵抗現有己知密碼攻擊的能力,即演算法的安全性分析。當前主要攻擊手段有:強力攻擊、差分密碼分析[2][3]、 線性密碼分析[4]、Square攻擊和插值攻擊等。
但是隨著密碼分析技術的不斷發展,積分分析、功耗分析和代數攻擊等新的密碼分析手段陸續出現。它們己成為密碼分析新的研究方向[5]。
4 AES的實現
對於AES實現的研究主要集中在軟體實現和硬體實現兩個領域中。AES標准所選擇的Rijndael演算法遵循了分組密碼設計的實現性原則,十分方便在軟、硬體上實現。從AES實現的角度上看,當前研究的主要方向在各個演算法步驟的優化實現。演算法步驟針對不同的實現環境進行優化後,在應用中能獲取更好的實際數據加密效果。其主要的研究成果集中在S-盒的生成演算法優化、輪變換過程優化和密鑰擴展優化三個方面。下面就軟體實現和硬體實現在這三個方面的研究現狀做一個簡單介紹:
(1) 在微機上通過軟體實現。這是利用AES演算法保障計算機信息安全,特別是網路中信息傳輸與存儲安全的主要途徑。在軟體實現中,輪變換過程優化則是軟體實現演算法優化的主要研究方向。密鑰擴展優化也是研究的重點之一。AES所提供的密鑰擴展方案保證了密鑰擴展過程中的雪崩效應,也保證了密鑰擴展方案的易實現性。此外,將其他的理論研究應用到分組數據加密演算法中,也是實現研究的一個重要方向。
(2) 通過硬體晶元實現。AES演算法對於存儲空間的要求較小,演算法過程相對比較簡單,特別是經過有針對性的實現演算法優化和精簡後很易於利用硬體電路實現,因此現在許多相關的商業產品都是基於密碼晶元的。
5 AES研究意義
目前,DES加密標准正在逐漸淡出加密標準的舞台,新加密標准AES正在獲得越來越多的重視及應用。面對未來的發展,對AES產品的需求是非常巨大的。因此,對AES實現的探討和研究具有很大的理論意義和實踐意義。
――――――――――
參考文獻
[1]褚振勇,翁木雲.FPGA設計及應用.西安電子科技大學出版社,2002,7.
[2]李玉山,來新泉.電子系統集成設計技術.電子工業出版社,2002,10.
[3]牛風舉,劉元成,朱明程.基於IP復用的數字IC設計技術,2003,9.
[4]Joan Daemon, Vincent Rijmen.高級加密標准(AES)演算法:Rijndael的設計.谷大武,徐勝波,譯.清華大學出版社,2003,3.
[5]Bruce Schneie.應用密碼學:協議、演算法與C源程序.昊世忠,祝世雄,張文政,等,譯.機械工業出版社,2000,1.
作者簡介:李佳(1976-),女,河北唐山人,講師,北京科技大學工程碩士,主要研究網路數據安全。
⑸ 常見的加密演算法、原理、優缺點、用途
在安全領域,利用密鑰加密演算法來對通信的過程進行加密是一種常見的安全手段。利用該手段能夠保障數據安全通信的三個目標:
而常見的密鑰加密演算法類型大體可以分為三類:對稱加密、非對稱加密、單向加密。下面我們來了解下相關的演算法原理及其常見的演算法。
在加密傳輸中最初是採用對稱密鑰方式,也就是加密和解密都用相同的密鑰。
1.對稱加密演算法採用單密鑰加密,在通信過程中,數據發送方將原始數據分割成固定大小的塊,經過密鑰和加密演算法逐個加密後,發送給接收方
2.接收方收到加密後的報文後,結合解密演算法使用相同密鑰解密組合後得出原始數據。
圖示:
非對稱加密演算法採用公鑰和私鑰兩種不同的密碼來進行加解密。公鑰和私鑰是成對存在,公鑰是從私鑰中提取產生公開給所有人的,如果使用公鑰對數據進行加密,那麼只有對應的私鑰(不能公開)才能解密,反之亦然。N 個用戶通信,需要2N個密鑰。
非對稱密鑰加密適合對密鑰或身份信息等敏感信息加密,從而在安全性上滿足用戶的需求。
1.甲使用乙的公鑰並結合相應的非對稱演算法將明文加密後發送給乙,並將密文發送給乙。
2.乙收到密文後,結合自己的私鑰和非對稱演算法解密得到明文,得到最初的明文。
圖示:
單向加密演算法只能用於對數據的加密,無法被解密,其特點為定長輸出、雪崩效應(少量消息位的變化會引起信息摘要的許多位變化)。
單向加密演算法常用於提取數據指紋,驗證數據的完整性、數字摘要、數字簽名等等。
1.發送者將明文通過單向加密演算法加密生成定長的密文串,然後傳遞給接收方。
2.接收方將用於比對驗證的明文使用相同的單向加密演算法進行加密,得出加密後的密文串。
3.將之與發送者發送過來的密文串進行對比,若發送前和發送後的密文串相一致,則說明傳輸過程中數據沒有損壞;若不一致,說明傳輸過程中數據丟失了。
圖示:
MD5、sha1、sha224等等
密鑰交換IKE(Internet Key Exchange)通常是指雙方通過交換密鑰來實現數據加密和解密
常見的密鑰交換方式有下面兩種:
將公鑰加密後通過網路傳輸到對方進行解密,這種方式缺點在於具有很大的可能性被攔截破解,因此不常用
DH演算法是一種密鑰交換演算法,其既不用於加密,也不產生數字簽名。
DH演算法通過雙方共有的參數、私有參數和演算法信息來進行加密,然後雙方將計算後的結果進行交換,交換完成後再和屬於自己私有的參數進行特殊演算法,經過雙方計算後的結果是相同的,此結果即為密鑰。
如:
安全性
在整個過程中,第三方人員只能獲取p、g兩個值,AB雙方交換的是計算後的結果,因此這種方式是很安全的。
答案:使用公鑰證書
公鑰基礎設施是一個包括硬體、軟體、人員、策略和規程的集合
用於實現基於公鑰密碼機制的密鑰和證書的生成、管理、存儲、分發和撤銷的功能
簽證機構CA、注冊機構RA、證書吊銷列表CRL和證書存取庫CB。
公鑰證書是以數字簽名的方式聲明,它將公鑰的值綁定到持有對應私鑰的個人、設備或服務身份。公鑰證書的生成遵循X.509協議的規定,其內容包括:證書名稱、證書版本、序列號、演算法標識、頒發者、有效期、有效起始日期、有效終止日期、公鑰 、證書簽名等等的內容。
1.客戶A准備好要傳送的數字信息(明文)。(准備明文)
2.客戶A對數字信息進行哈希(hash)運算,得到一個信息摘要。(准備摘要)
3.客戶A用CA的私鑰(SK)對信息摘要進行加密得到客戶A的數字簽名,並將其附在數字信息上。(用私鑰對數字信息進行數字簽名)
4.客戶A隨機產生一個加密密鑰(DES密鑰),並用此密鑰對要發送的信息進行加密,形成密文。 (生成密文)
5.客戶A用雙方共有的公鑰(PK)對剛才隨機產生的加密密鑰進行加密,將加密後的DES密鑰連同密文一起傳送給乙。(非對稱加密,用公鑰對DES密鑰進行加密)
6.銀行B收到客戶A傳送過來的密文和加過密的DES密鑰,先用自己的私鑰(SK)對加密的DES密鑰進行解密,得到DES密鑰。(用私鑰對DES密鑰解密)
7.銀行B然後用DES密鑰對收到的密文進行解密,得到明文的數字信息,然後將DES密鑰拋棄(即DES密鑰作廢)。(解密文)
8.銀行B用雙方共有的公鑰(PK)對客戶A的數字簽名進行解密,得到信息摘要。銀行B用相同的hash演算法對收到的明文再進行一次hash運算,得到一個新的信息摘要。(用公鑰解密數字簽名)
9.銀行B將收到的信息摘要和新產生的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過。(對比信息摘要和信息)
答案是沒法保證CA的公鑰沒有被篡改。通常操作系統和瀏覽器會預制一些CA證書在本地。所以發送方應該去那些通過認證的CA處申請數字證書。這樣是有保障的。
但是如果系統中被插入了惡意的CA證書,依然可以通過假冒的數字證書發送假冒的發送方公鑰來驗證假冒的正文信息。所以安全的前提是系統中不能被人插入非法的CA證書。
END