密碼原理
對加密演算法的要求
密碼分類
總結
what is a digital signature?.背景文章大意
舉例應用數字證書
的例項—https協議。
總結密碼演算法本身不能作為安全解決方案,而是構建解決方案的模組。金鑰是輸入到密碼演算法中的秘密引數。
加密以某種方式將訊息變換成對任何不知道如何做逆變換的人都不可理解的人。
由加密函式及相應的解密函式所表示的變換被稱為密碼。
只有金鑰應該保密。給定明文訊息的密文依賴於加密演算法和金鑰。加密演算法公開,用金鑰加密碼演算法引數化。
它能用一種方法把明文轉化成密文,使只有指定的接收者(持有解密秘鑰的人)才能被密文恢復成明文。
最好的密碼演算法可以防止攻擊者在知道明文和密文的情況下推測出金鑰。
對稱金鑰密碼
單鑰加密的情況下,金鑰只有一把,所以金鑰的儲存變得很重要。一旦金鑰洩漏,密碼也就被破解(一對一)。
通用的單鑰加密演算法為des(data encryption standard)。3des 通過增加金鑰長度來有效 抵抗對des的密碼分析。該種方法實現較慢,ibm設計之初考慮用硬體實現。正在被aes(advanced encryption standard)取代,該演算法實現較快,不需太多記憶體,適用於小型移動裝置。
公鑰密碼
雙鑰加密的原理如下:
a
)公鑰和私鑰是一一對應的關係,有一把公鑰就必然有一把與之對應的、獨一無二的私鑰,反之亦成立。b)
所有的(公鑰,
私鑰)對都是不同的。c)
用公鑰可以解開私鑰加密的資訊,反之亦成立。d)
同時生成公鑰和私鑰應該相對比較容易,但是從公鑰推算出私鑰,應該是很困難或者是不可能的
任何人都可以通過公鑰為私鑰擁有者加密訊息(多對一)。
私鑰金鑰與加密演算法加密訊息,通過公鑰解密訊息。這個性質可以用作認證,該種訊息只能由私鑰擁有者發出。
公鑰用來加密資訊,私鑰用來數字簽名。
通用的雙鑰加密演算法為rsa( rivest-shamir -adleman ) ,依賴於 大數因子分解極大的計 算開銷。
認證碼
背景:加密演算法本身不能提供資料的完整性,認證碼用於包含在被傳輸的訊息中,驗證訊息的真實性和資料的完整性。認證碼類似於校驗和、迴圈冗餘碼,為了支援認證,認證碼包含一些原始訊息不需要保密證據
來證明建立該認證碼的人知道乙個只有所聲稱的訊息的傳送方才知道的秘密
。如:證據是金鑰加密的值,而秘密可能是金鑰。
加密訊息摘要
實際應用中,保密性用對稱密碼要密碼實現,它比公鑰密碼快得多。並且將認證碼包含在加密過程中的開銷很小,認證碼增強了安全性。
參看認證碼. ↩
參看數字簽名. ↩
數字簽名與數字加密
數字簽名主要經過以下幾個過程 資訊傳送者使用一單向雜湊函式 hash函式 對資訊生成資訊摘要 資訊傳送者使用自己的私鑰簽名資訊摘要 資訊傳送者把資訊本身和已簽名的資訊摘要一起傳送出去 資訊接收者通過使用與資訊傳送者使用的同乙個單向雜湊函式 hash函式 對接收的資訊本身生成新的資訊摘要,再使用資訊傳...
加密與數字簽名
加密與數字簽名 加密與數字簽名 一 加密 資料加密技術從技術上的實現分為在軟體和硬體兩方面。按作用不同,資料加密技術主要分為資料傳輸 資料儲存 資料完整性的鑑別以及金鑰管理技術這四種。在網路應用中一般採取兩種加密形式 對稱金鑰和公開金鑰,採用何種加密演算法則要結合具體應用環境和系統,而不能簡單地根據...
openssl DSA 數字簽名與簽名驗證
與rsa不同,dsa的主要功能是做數字簽名與簽名驗證。dsa不具備對資料進行加密解密的功能,因此在使用上面請注意。往往有很多使用者誤認為非對稱加密演算法都可以對資料進行加解密處理,其實不然,dsa就是乙個很好的例子。使用c c 呼叫openssl crypt庫進行dsa測試,如下 gcc o tes...