DES
單鑰密碼體制:加密解密用同一把密鑰;不足在於密鑰的管理和傳送
SHA和MD5
消息摘要:數據塊生成一個數字指紋,不管數據塊的大小長度。
RSA
公鑰密碼:公開的加密密鑰,不公開的解密密鑰。
數字簽名DSA
對數字指紋進行RSA加密。兩個優點,發送者不能抵賴(如何保證?),接受者可以驗證正確性,因爲加密密鑰是公開的。
數字簽名使用私鑰來簽名的。
PKI原理
PKI 即公共密鑰體系。它利用公共密鑰算法的特點,建立一套證書發放、管理和使用的體系,來支持和完成網絡系統中的身份認證、信息加密、保證數據完整性和抗抵賴性。PKI 體系可以有多種不同的體系結構、實現方法和通信協議。
公共(非對稱)密鑰算法使用加密算法和一對密鑰:一個公共密鑰(公鑰,public key)和一個私有密鑰(私鑰,private key)。其基本原理是:由一個密鑰進行加密的信息內容,只能由與之配對的另一個密鑰才能進行解密。公鑰可以廣泛地發給與自己有關的通信者,私鑰則需要十分安全地存放起來。使用中,甲方可以用乙方的公鑰對數據進行加密並傳送給乙方,乙方可以使用自己的私鑰完成解密。公鑰通過電子證書與其擁有者的姓名、工作單位、郵箱地址等捆綁在一起,由權威機構(CA,
Certificate Authority)認證、發放和管理。把證書交給對方時就把自己的公鑰傳送給了對方。證書也可以存放在一個公開的地方,讓別人能夠方便地找到和下載。
公共密鑰方法還提供了進行數字簽名的辦法:簽字方對要發送的數據提取摘要並用自己的私鑰對其進行加密;接收方驗證簽字方證書的有效性和身份,用簽字方公鑰進行解密和驗證,確認被簽字的信息的完整性和抗抵賴性。
公共密鑰方法通常結合使用對稱密鑰(單密鑰)方法,由計算效率高的對稱密鑰方法對文件和數據進行加密。
目前在 Internet 上主要使用 RSA 公共密鑰方法,密鑰長度 512 或 1024 位,是廣泛使用的 SSL/TLS 和S/MIME 等安全通信協議的基礎。
加密
數據加密技術從技術上的實現分爲在軟件和硬件兩方面。按作用不同,數據加密技術主要分爲數據傳輸、數據存儲、數據完整性的鑑別以及密鑰管理技術這四種。
在網絡應用中一般採取兩種加密形式:對稱密鑰和公開密鑰,採用何種加密算法則要結合具體應用環境和系統,而不能簡單地根據其加密強度來作出判斷。因爲除了加密算法本身之外,密鑰合理分配、加密效率與現有系統的結合性,以及投入產出分析都應在實際環境中具體考慮。
對於對稱密鑰加密。其常見加密標準爲DES等,當使用DES時,用戶和接受方採用64位密鑰對報文加密和解密,當對安全性有特殊要求時,則要採取IDEA和三重DES等。作爲傳統企業網絡廣泛應用的加密技術,祕密密鑰效率高,它採用KDC來集中管理和分發密鑰並以此爲基礎驗證身份,但是並不適合Internet環境。
在Internet中使用更多的是公鑰系統。即公開密鑰加密,它的加密密鑰和解密密鑰是不同的。一般對於每個用戶生成一對密鑰後,將其中一個作爲公鑰公開,另外一個則作爲私鑰由屬主保存。常用的公鑰加密算法是RSA算法,加密強度很高。具體作法是將數字簽名和數據加密結合起來。發送方在發送數據時必須加上數據簽名,做法是用自己的私鑰加密一段與發送數據相關的數據作爲數字簽名,然後與發送數據一起用接收方密鑰加密。當這些密文被接收方收到後,接收方用自己的私鑰將密文解密得到發送的數據和發送方的數字簽名,然後,用發佈方公佈的公鑰對數字簽名進行解密,如果成功,則確定是由發送方發出的。數字簽名每次還與被傳送的數據和時間等因素有關。由於加密強度高,而且並不要求通信雙方事先要建立某種信任關係或共享某種祕密,因此十分適合Internet網上使用。
常規密鑰密碼體制
所謂常規密鑰密碼體制,即加密密鑰與解密密鑰是相同的。
在早期的常規密鑰密碼體制中,典型的有代替密碼,其原理可以用一個例子來說明:
將字母a,b,c,d,…,w,x,y,z的自然順序保持不變,但使之與D,E,F,G,…,Z,A,B,C分別對應(即相差3個字符)。若明文爲student則對應的密文爲VWXGHQW(此時密鑰爲3)。
由於英文字母中各字母出現的頻度早已有人進行過統計,所以根據字母頻度表可以很容易對這種代替密碼進行破譯。
數據加密標準DES
DES算法原是IBM公司爲保護產品的機密於1971年至1972年研製成功的,後被美國國家標準局和國家安全局選爲數據加密標準,並於1977年頒佈使用。ISO也已將DES作爲數據加密標準。
DES對64位二進制數據加密,產生64位密文數據。使用的密鑰爲64位,實際密鑰長度爲56位(有8位用於奇偶校驗)。解密時的過程和加密時相似,但密鑰的順序正好相反。
DES的保密性僅取決於對密鑰的保密,而算法是公開的。DES內部的複雜結構是至今沒有找到捷徑破譯方法的根本原因。現在DES可由軟件和硬件實現。美國AT&T首先用LSI芯片實現了DES的全部工作模式,該產品稱爲數據加密處理機DEP。
公開密鑰密碼體制
公開密鑰(public key)密碼體制出現於1976年。它最主要的特點就是加密和解密使用不同的密鑰,每個用戶保存着一對密鑰 公開密鑰PK和祕密密鑰SK,因此,這種體制又稱爲雙鑰或非對稱密鑰密碼體制。
在這種體制中,PK是公開信息,用作加密密鑰,而SK需要由用戶自己保密,用作解密密鑰。加密算法E和解密算法D也都是公開的。雖然SK與PK是成對出現,但卻不能根據PK計算出SK。公開密鑰算法的特點如下:
1、用加密密鑰PK對明文X加密後,再用解密密鑰SK解密,即可恢復出明文
寫爲:DSK(EPK(X))=X
2、加密密鑰不能用來解密,即DPK(EPK(X))≠X
3、在計算機上可以容易地產生成對的PK和SK。
4、從已知的PK實際上不可能推導出SK。
5、加密和解密的運算可以對調,即:EPK(DSK(X))=X
在公開密鑰密碼體制中,最有名的一種是RSA體制。它已被ISO/TC97的數據加密技術分委員會SC20推薦爲公開密鑰數據加密標準。
數字簽名
數字簽名技術是實現交易安全的核心技術之一,它的實現基礎就是加密技術。在這裏,我們介紹數字簽名的基本原理。
以往的書信或文件是根據親筆簽名或印章來證明其真實性的。但在計算機網絡中傳送的報文又如何蓋章呢?這就是數字簽名所要解決的問題。數字簽名必須保證以下幾點:
接收者能夠覈實發送者對報文的簽名;發送者事後不能抵賴對報文的簽名;接收者不能僞造對報文的簽名。
現在已有多種實現各種數字簽名的方法,但採用公開密鑰算法要比常規算法更容易實現。下面就來介紹這種數字簽名。
發送者A用其祕密解密密鑰SKA對報文X進行運算,將結果DSKA(X)傳送給接收者B。B用已知的A的公開加密密鑰得出EPKA(DSKA(X))=X。因爲除A外沒有別人能具有A的解密密鑰SKA,所以除A外沒有別人能產生密文DSKA(X)。這樣,報文X就被簽名了。 用私鑰加密發送給對方。對方只能用自己的公鑰打開。以實現覈實發送者對報文的簽名。
假若A要抵賴曾發送報文給B。B可將X及DSKA(X)出示給第三者。第三者很容易用PKA去證實A確實發送消息X給B。反之,如果是B將X僞造成X',則B不能在第三者面前出示DSKA(X')。這樣就證明B僞造了報文。可以看出,實現數字簽名也同時實現了對報文來源的鑑別。
但是上述過程只是對報文進行了簽名。對傳送的報文X本身卻未保密。因爲截到密文DSKA(X)並知道發送者身份的任何人,通過查問手冊即可獲得發送者的公開密鑰PKA,因而能夠理解報文內容。則可同時實現祕密通信和數字簽名。SKA和SKB分別爲A和B的祕密密鑰,而PKA和PKB分別爲A和B的公開密鑰。
密鑰的管理
對稱密鑰加密方法致命的一個弱點就是它的密鑰管理十分困難,因此它很難在電子商務的實踐中得到廣泛的應用。在這一點上,公開密鑰加密方法佔有絕對的優勢。不過,無論實施哪種方案,密鑰的管理都是要考慮的問題。當網絡擴得更大、用戶增加更多時尤其如此。一家專門從事安全性諮詢的公司Cypress Consulting的總裁CyArdoin說:“在所有加密方案中,都必須有人來管理密鑰。”
目前,公認的有效方法是通過密鑰分配中心KDC來管理和分配公開密鑰。每個用戶只保存自己的祕密密鑰和KDC的公開密鑰PKAS。用戶可以通過KDC獲得任何其他用戶的公開密鑰。
首先,A向KDC申請公開密鑰,將信息(A,B)發給KDC。KDC返回給A的信息爲(CA,CB),其中,CA=DSKAS(A,PKA,T1),CB=DSKAS(B,PKB,T2)。CA和CB稱爲證書(Certificate),分別含有A和B的公開密鑰。KDC使用其解密密鑰SKAS對CA和CB進行了簽名,以防止僞造。時間戳T1和T2的作用是防止重放攻擊。
最後,A將證書CA和CB傳送給B。B獲得了A的公開密鑰PKA,同時也可檢驗他自己的公開密鑰PKB。
PKI的主要目的是通過自動管理密鑰跟證書,可以爲用戶建立起一個安全的網絡運行環境,使用戶可以在多種應用環境下方便的使用加密和數字簽名技術,從而保證網上數據的機密性,完整性,有效性。
數據的機密性是指數據在傳輸過程中不能被非授權者偷看
數據的完整性是指數據在傳輸過程中不能被非法的竄改
數據的有效性是指數據不能被隨便否認
一個有效的PKI系統必須是安全的,透明的,用戶在獲得加密和數字簽名服務時,是不需要詳細瞭解PKI怎樣管理證書和密鑰的。
密鑰是一種用來加密或解密信息的值,即使算法是公開的,也不會破壞其安全性,因爲數據如果沒有密鑰則無法讀取。
PKI 是一種新的安全技術,它由公鑰加密技術,數字證書,證書發放機構(CA),註冊權威機構(RA)等基本成分共同組成。
數字證書用於internet intranet extranet 上的用戶身份驗證
CA是一個可信任的實體,它根據CA頒發策略負責發佈,更新和吊銷證書
註冊權威機構RA 接受用戶的請求,負責將用戶的有關申請信息存檔備案,並存儲在數據庫中,等待審覈,並將審覈通過的證書請求發送給證書頒發機構。RA分擔了CA的部分任務,管理更方便。
比較成熟的對稱加密 DES 3DES IDEA
非對稱加密的特點
密鑰是成對出現的,這兩個密鑰互不相同,兩個密鑰可以互相機密和解密
不能根據一個密鑰來推算得出另一個密鑰
公鑰對外公開,私鑰只有私鑰的持有人才知道
私鑰應該由密鑰的持有人妥善保管
接收方生成一對密鑰(公鑰和私鑰),並將公鑰向外傳遞公開
得到該公鑰的發送方使用接收方的公鑰,對信息進行加密後,再發送給接受方
接受方受到信息後,再用自己的私鑰對信息進行解密
非對稱加密算法的保密性比較好,它消除了最終用戶交換密鑰的需要,但加密和解密花費時間長,速度慢,它不適合對文件加密,而只適合用於少量數據進行加密。因爲,在實際應用中,將非對稱加密和對稱加密混合使用。
發送方用對稱加密的方法,將文件加密後傳給對方
發送方再將對稱密鑰(即發送方和接受方應該共同擁有的密鑰)通過非對稱加密的方法加密後傳給對方
接收方使用私鑰解密得到對稱密鑰
用對稱密鑰解密去解讀對稱加密的密文,從而得到明文信息
公認的非對稱加密算法是 RSA 算法
我發給的人。確保不被別人所得到。是利用加密算法
給我的人。我確定是這個人發的。用的是數字簽名。有不可抵賴性
HASH算法也稱爲雜湊算法,這是一個簡單的不可逆過程。HASH算法在確保文件的完整性和不可更改性上也有和好的用途。
輸入一個長度不固定的字符串,返回一串固定長度的字符串,又稱爲HASH值,通常也稱爲雜湊值(HASH Value)
每一個消息輸入單項雜湊函數中,將產生一個雜湊值,這個雜湊值可以保證輸入消息的唯一性(不同雜湊值表示不同輸入消息)
如果通過一個不安全的傳輸通道的消息在傳輸前的雜湊值和消息經傳輸後的雜湊值相同,那麼可以認爲接受到的信息在很高的概率上與發送消息是相同的,從而可以保證傳輸消息的完整性
在某一特定的時間內,無法查找經HASH操作後生成特定HASH值的原報文。
也無法查找兩個經HASH操作後生成相同HASH值的不同報文
HASH 算法常用的有SHA 和 MD5
數據加密只能保證所發送的數據的機密性,確不能完全保證數據的完整性和不可抵賴性,即不能保證數據在傳遞過程中不被人篡改和不被人冒名頂替發送。
數字簽名提供了身份驗證和數據完整性,使接受方可確認該發送方的身份標識,並證實消息在傳遞過程中內容沒有被篡改。這樣可以防止某個消息的發送方試圖通過替換另一個用戶的身份發送消息。
消息有簽發者即發送方自己簽名發送,簽名者不能否認或難以否認
消息自簽發到接受這段過程中未曾做過修改,簽發的消息是真實的。
數字簽名頁可以用於時間戳,即可以同時簽署消息發送的時間。用戶可以用他的私鑰簽名消息和生成時間戳,證實該消息在某一段時間中存在。數字簽名同樣可以用來確認某一公鑰屬於某人。因爲對消息進行數字簽名時,可以產生一個代表該消息的消息摘要。該消息摘要通過發送方的私鑰加密的,接受方可以使用發送方的公鑰進行解密。
發送方簽名某個消息時,將創建一個消息摘要(用HASH算法)
發送方用自己的私鑰加密消息摘要
將消息摘要做爲消息的附件和消息一起發送給接收方
當接收方收到消息後,就用該發送方的公鑰解密此消息摘要
同時,接受方再用發送方的公鑰解密消息,然後用同樣的算法創建出一個新的消息摘要,並將他與解密的消息摘要進行比較。
如果兩個消息摘要互相匹配,則可保證完整性,簽名就會認爲是有效的。
過程
發送方
1 原文+隨機密鑰(對稱)--用隨機密鑰加密原文
2 原文+HASH 算法--消息摘要
3 隨機密鑰(對稱)+接受方的公鑰--只有接受方的私鑰才能打開取得對稱密鑰
4 消息摘要+發送方私鑰--接受方用發送方公鑰解開取得摘要消息
以上四個過程最後生成了 加密數據和加密的摘要消息
接受方
1 首先用自己的私鑰解開發送過來的加密的對稱密鑰
2 取得對稱密鑰就可以解開加密的原文
3 用發送方的公鑰解開加密的消息摘要
4 用解開的原文用同樣的HASH算法算出一個消息摘要
5 對比傳過來的在發送方的消息摘要和現在接受的文章的消息摘要是否匹配。匹配則說明信息沒有被改動過。
其中使用了對稱密鑰 非對稱的公鑰 私鑰 還有HASH 算法
數據經過了加密。如果想解開數據就必須有接受方的私鑰。可是私鑰是不傳輸的。所以很難破解數據。但是這個加密是使用接受方的公鑰加密的。而公鑰是公開的。所以有人可以採用接受方的公鑰再僞造數據部分。這樣和數據摘要一起發給接受方。因爲是採用接受方公鑰所加密的。所以接受方可以打開被篡改的數據。可是這種篡改的數據再經過HASH算法無法跟發送過來的消息摘要相同。從而被證明是篡改的或被有損的。而因爲消息摘要是用發送方的私鑰來加密的。如果要僞造就必須有發送方的私鑰。而發送方的私鑰也是不在網絡上傳送的。這樣只有得到雙方的私鑰才能僞造。
數字簽名一般不採用非對稱加密算法 RSA等。而是發送方對整個數據進行變換,得到一個值,將其作爲消息摘要和簽名,接受者使用發送者的公鑰對消息摘要進行解密運算。如果其結果與原摘要一致,則此數字簽名有效,證明對方的身份是真實的。一般數字簽名中使用的加密算法有HASH算法,安全的HASH算法等。再HASH算法中,目前比較多的是MD5。
接受方還必須有一個機制,以確保密鑰對是屬於真正的發送者的。而不是屬於沒個發送方的模仿者的。這是通過受信任的第三方頒發的證書來完成的,該證書證實了公鑰所有者的身份標識。