1. 程式人生 > >對稱加密、單向加密和非對稱加密

對稱加密、單向加密和非對稱加密

下文主要從加密演算法的特徵、常用加密演算法和加密工具等方面,梳理和比較對稱加密、單向加密和公鑰加密的概念及其之間的聯絡。

1. 對稱加密

採用單鑰密碼的加密方法,同一個金鑰可以同時用來加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。常用的單向加密演算法:

  • DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合;
  • 3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高;
  • AES(Advanced Encryption Standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高,支援128、192、256、512位金鑰的加密;
  • Blowfish

演算法特徵:

  • 1、加密方和解密方使用同一個金鑰;
  • 2、加密解密的速度比較快,適合資料比較長時的使用;
  • 3、金鑰傳輸的過程不安全,且容易被破解,金鑰管理也比較麻煩;

加密工具:

  • openssl,它使用了libcrypto加密庫、libssl庫即TLS/SSL協議的實現庫等。TLS/SSL是基於會話的、實現了身份認證、資料機密性和會話完整性的TLS/SSL庫。openssl官網
  • gpg

2. 單向雜湊加密

單向加密又稱為不可逆加密演算法,其金鑰是由加密雜湊函式生成的。單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有:

  • 1、MD5(Message Digest Algorithm 5):是RSA資料安全公司開發的一種單向雜湊演算法,非可逆,相同的明文產生相同的密文;
  • 2、SHA(Secure Hash Algorithm):可以對任意長度的資料運算生成一個160位的數值。其變種由SHA192,SHA256,SHA384等;
  • 3、CRC-32,主要用於提供校驗功能;

演算法特徵:

  • ① 輸入一樣,輸出必然相同;
  • ② 雪崩效應,輸入的微小改變,將會引起結果的巨大變化;
  • ③ 定長輸出,無論原始資料多大,結果大小都是相同的;
  • ④ 不可逆,無法根據特徵碼還原原來的資料;

下圖展示了sha1演算法的雪崩效應,微小的改變,引起結果的巨大變化。
sha1演算法的雪崩效應

加密工具:

  • md5sum
  • sha1sum
  • openssl dgst

3. 非對稱加密

非對稱金鑰加密也稱為公鑰加密,由一對公鑰和私鑰組成。公鑰是從私鑰提取出來的。可以用公鑰加密,再用私鑰解密,這種情形一般用於公鑰加密;也可以用私鑰加密,用公鑰解密,常用於數字簽名,因此非對稱加密的主要功能就是加密和數字簽名

特徵:

  • 祕鑰對,公鑰(public key)和私鑰(secret key)
  • 主要功能:加密和簽名
    • 傳送方用對方的公鑰加密,可以保證資料的機密性(公鑰加密);
    • 傳送方用自己的私鑰加密,可以實現身份驗證(數字簽名);

圖解非對稱加密的主要功能:加密解密和數字簽名
加密和解密
注意這裡John使用Mary的公鑰進行加密;
數字簽名
注意這裡John使用自己的私鑰進行加密;

公鑰加密演算法很少用來加密資料,速度太慢,通常用來實現身份驗證;事實上,非對稱加密的主要作用也就是身份驗證;

基於非對稱加密的特性,又產生了以下兩個問題。

問題1:如何確認通訊方證書的合法性呢?

藉助於第三方機構:CA(Certificate Authority)。CA為每個使用公開金鑰的使用者簽發一個含CA簽名的證書,該證書的作用是證明證書中的使用者合法擁有證書中的公開金鑰,CA機構的數字簽名使得攻擊者不能偽造和篡改證書。

CA自身也擁有一個證書和私鑰。任何人都可以得到CA的證書,並用該證書驗證它所簽發證書有效性。

假設機構A向CA發出一個證書籤發請求:(證書籤發流程)

  • CA首先生成一對公鑰和私鑰,並自簽署一個CA證書certificate;
  • A向CA提供自己的基本資訊和自己的公鑰;
  • CA先對A的基本資訊和公鑰計算一個特徵碼,然後再使用自己的私鑰對特徵碼進行加密,加密生成的字串(數字簽名)、A的公鑰、A的基本資訊共同組成了CA簽發的數字證書;

CA簽發證書
證書信任鏈

有了CA簽發的數字證書,就可以通過CA來確認證書擁有者的身份,也就解決了通訊中身份確認的問題。那身份確認完之後,如何保證資料的機密性呢?

問題2:通過CA實現了身份驗證,那如何保證資料的機密性呢?

保證資料的機密性,無非就是給資料加密,非對稱加密的加密速度慢,不適合對通訊資料進行加密,而在實際通訊過程中,身份確認完畢之後,通常使用對稱加密方式來加密資料。那如何協商對稱加密的祕鑰呢?通常有以下兩種方法。

方法1:祕鑰交換(Internet Key Exchange, IKE)演算法

Diffie-Hellman演算法祕鑰協商流程,假設A/B雙發進行通訊,

  • ① A/B通訊前,先生成p,g兩個大素數,作為生成數
  • ② A選定一個數x,B選定一個數y
  • ③ A/B加密結果如下:
    • A加密之後傳遞給B的內容: g^x%p –> B
    • B加密之後傳遞給A的內容: g^y%p –> A
    • 注意:網際網路上的使用者可以看到:p,g,g^x%p,g^y%p
  • ④ A/B獲得到資料之後解密得到相同的結果
    • A: (g^x%p)^x=g^xy%p
    • B: (g^y%p)^y=g^xy%p

圖解祕鑰交換
 Diffie–Hellman key exchange

這樣A/B就協商出了一個共同的祕鑰g^xy%p,A/B雙方使用非對稱加密確認完身份之後,就可以是用該祕鑰加密通訊資料了。

方法2:公鑰加密的方式協商祕鑰

① A隨機生成一個字串STR作為祕鑰,A先使用自己的私鑰加密STR得到STR1,A再使用B的公鑰加密得到STR2,A將STR2傳送給B;
② B接收到STR2,先使用B的公鑰私鑰解密,再使用A的公鑰解密,最後得到祕鑰STR;

這樣A、B就完成了祕鑰的協商,協商的祕鑰為隨機字串STR。

常用的非對稱加密演算法

  • RSA:由 RSA公司發明,是一個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的;既可以實現加密,又可以實現簽名
  • DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標準);
  • ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼;

ECC和RAS對比。ECC和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:
① 抗攻擊性強,相同的金鑰長度,其抗攻擊性要強很多倍。
② 計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。
③ 儲存空間佔用小,ECC的金鑰尺寸和系統引數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。
④ 頻寬要求低,當對長訊息進行加解密時,三類密碼系統有相同的頻寬要求,但應用於短訊息時ECC頻寬要求卻低得多。頻寬要求低使ECC在無線網路領域具有廣泛的應用前景。

Public Key Infrastructure (PKI)

Public Key Infrastructure

總結

加密方法通常需要具備機密性、完整性和身份確認的功能。對稱加密可以保證機密性且加密速度快,但是不能進行身份確認;非對稱加密因其加密速度慢,一般不會用做加密,而是用作為身份驗證。通常,非對稱加密和對稱加密、雜湊函式、祕鑰交換等結合使用,共同完成整個網路加密的過程,如:TLS/SSL。

參考

相關推薦

用戶登錄模塊進行必要的安全處理(MD5加密加鹽傳輸過程加密

sele clas 抓包 index.jsp sql語句 new 不存在 別人 com 1、首先簡談一下常規Web登錄模塊的開發(只為了實現簡單的登錄功能,未對數據庫字段進行加密處理以及傳輸過程中進行加密處理)   非安全性登錄模塊開發   使用JSP+MYSQL  

使用者登入模組進行必要的安全處理(MD5加密加鹽傳輸過程加密

1、首先簡談一下常規Web登入模組的開發(只為了實現簡單的登入功能,未對資料庫欄位進行加密處理以及傳輸過程中進行加密處理) 非安全性登入模組開發 使用JSP+MYSQL 資料庫表如下所示:      先用jsp頁面建立login.jsp和index.jsp

對稱金鑰密碼系統對稱金鑰密碼系統的基本概念

       最近在學習密碼學,雖然看完了一本很厚的專業書,可是說實話,對裡面的內容有很多還是不能理解的。我一直有這種感覺,當你越想快點了解一件事情的時候,你會發現你越是很難掌握它,這也許就是人們常說的”心急吃不了熱豆腐“吧。也罷,還是應該從最基礎的開始。以下將記錄我學習密

對稱加密單向加密對稱加密

下文主要從加密演算法的特徵、常用加密演算法和加密工具等方面,梳理和比較對稱加密、單向加密和公鑰加密的概念及其之間的聯絡。 1. 對稱加密 採用單鑰密碼的加密方法,同一個金鑰可以同時用來加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。常用的單向加密

對稱加密對稱加密數字簽名數字證書的區別

之前在面試的時候被問到了HTTPS,SSL這樣的知識點,也沒答上來,這裡也簡單整理一下。 首先還是來解釋一下基礎的東東: 對稱加密: 加密和解密都是用同一個金鑰 非對稱加密: 加密用公開的金鑰,解密用私鑰 (私鑰只有自己知道

如何使用gpg工具實現公鑰加密對稱加密對稱加密)?

gpg工具 對稱加密 公鑰加密 非對稱加密 使用gpg實現公鑰加密【對稱加密】1、 對稱加密file文件gpg -c filels file.gpg------------------------對稱加密過程------------------------輸入口令,兩次,例如centos再查看

對稱加密對稱加密

.com 對稱加密 alt str mage nbsp com strong bubuko 對稱加密和非對稱加密

第10章 網路安全(1)_對稱加密對稱加密

1 網路安全概述 1.1 計算機網路面臨的安全威協 (1)截獲:攻擊者從網路上竊聽他人的通訊內容,通常把這類攻擊稱為“截獲”。在被動攻擊中,攻擊者只是觀察和分析某一個協議資料單元(PDU)而不干擾資訊流。 (2)篡改:攻擊者篡改網路上傳遞的報文。這裡包括徹底中斷傳遞的報文,甚至把完

對 【對稱加密對稱加密以及CA】的理解(二)

非對稱加密更加安全但是費時費力,對稱加密雖然省時,快速但是不安全,於是就可以將它倆結合起來使用。 結合思路是這樣的:檔案傳輸用對稱加密,對稱加密的加密和解密用的都是同一個金鑰,用非對稱加密的公鑰對此對稱加密的金鑰進行加密,然後傳送出去,接收方用非對稱加密的私鑰對剛才用公鑰加密過的對稱加密的金鑰進

對 【對稱加密對稱加密以及CA】的理解(一)

最近申請了阿里雲的伺服器,進入了一個新的領域,當然一開始也是懵逼狀態,處於雲裡霧裡,決定將自己學習的計算機網路的相關知識複習一下。 對稱加密:即通訊雙方在對傳輸的檔案進行加密和解密時候,所用的是同一個金鑰。 優點:速度快,對稱性加密通常在訊息傳送方需要加密大量資料時使用,演算法公開、計算量小

最全加密演算法之對稱加密對稱加密

常見加密演算法 : DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合;  3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高; RC2和 RC4:用變長金鑰對大量資

對稱加密對稱加密的詳細說明

原文連結 為什麼要進行資料加密:       隨著人類社會逐漸步入資訊時代,資訊保安也越來越受到了關注。對計算機而言,資訊表現為各種各樣的資料,是否採用了適當的方法對資料進行加密,已成為保障資料安全的首要方法。為了保密,一般在網路上傳輸

網路---HttpsHttp區別對稱加密對稱加密

Https和Http區別 眾所周知,WEB服務存在http和https兩種通訊方式,http預設採用80作為通訊埠,對於傳輸採用不加密的方式,https預設採用443,對於傳輸的資料進行加密傳輸 目前主流的網站基本上開始預設採用HTTPS作為通訊方式,一切的考慮都基於對安全的要求,那麼如何對

Https的加密過程 / 對稱加密對稱加密

Https和Http區別 WEB服務存在http和https兩種通訊方式,http預設採用80作為通訊埠,對於傳輸採用不加密的方式,https預設採用443,對於傳輸的資料進行加密傳輸 目前主流的網站基本上開始預設採用HTTPS作為通訊方式,一切的考慮都基於對安全的要求,那麼如何對自己的網站

對稱加密對稱加密詳解

github首頁:區塊鏈學習有用連結和25本區塊鏈書籍可免費閱讀,覺得有用就fork或是star 地址:https://github.com/cancerts/study-blockchain-referrence 點選這 資料加密演算法主要分為兩大類:對稱加密和非對稱加密

Git基本命令-遠端 以及 對稱對稱加密區別

git 基本命令 引擎 程式碼在本地提交,可以實現版本回退和前進。但是如果本地磁碟損壞,程式碼丟失,所以 我們要把程式碼往另一臺電腦(遠端伺服器)存一份。好像網盤。實現程式碼在不同客戶端 (電腦、筆記本、手機)拷貝下載程式碼,提交程式碼到遠端伺服器。 ssh 非對稱加密 ss

對稱加密對稱加密理解對稱加密的java例子

package com.zl.test3; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.FileReader;

(1)java自帶軟體包javax.crypto的使用方法,對稱加密方法對稱加密方法

一般來講,在java上實現加密解密演算法,有3種方式。 1)自行實現演算法 2)使用java自帶的crypto軟體包 3)使用第三方庫 本文講述一下第二種使用方法。我最開始也是找了很多這方面的資料,但是總感覺還是缺乏一些細節。現將我的一些心得與大家分享。 本文給出的例子

Http協議與請求, Post請求與Get請求的區別,Base64URL編碼,md5,sha-1加密,對稱對稱加密,支付寶微信第三方支付

Http協議與請求 Post請求 Post請求與Get請求的區別 Get請求的引數是直接放在url後面的,而Post請求是放在請求體中的 Get請求引數的長度會根據瀏覽器的不同實現有一定限制,而Post請求引數長度沒有限制

計算機網路第六彈——對稱加密對稱加密

對稱祕鑰加密:加密和解密使用同一個祕鑰的方式,這種方式存在的最大問題就是如何安全的將祕鑰傳送給對方。非對稱加密:使用一堆非對稱祕鑰,即公鑰和私鑰,公鑰可以隨意釋出,私鑰只有自己知道,傳送密文的一方使用對