1. 程式人生 > >計算機網路 對稱加密與非對稱加密

計算機網路 對稱加密與非對稱加密

所謂對稱加密,就是加密金鑰與解密金鑰是相同的密碼體制,這種加密系統又稱為對稱金鑰系統

對稱加密模型如下圖所示:


使用者A向B傳送明文X,但通過加密演算法E運算後,就得到密文Y。

Y=EK(X)

圖中所示的加密和解密用的金鑰K是一串祕密的字串(或位元串)。在傳送過程中可能出現密文的截獲和篡改。

B利用解密演算法D運算和解密金鑰K,解出明文X。解密演算法是加密演算法的逆運算。在進行解密運算時如果不使用事先約定好的金鑰就無法解出明文。

Dk(Y)=DK(EK(X))= X

資料加密標準 DES 屬於對稱金鑰密碼體制,DES是一種分組密碼。在加密前先對整個明文進行分組。每一個組長為 64 位。

然後對每一個 64 位 二進位制資料進行加密處理,產生一組 64 位密文資料。

最後將各組密文串接起來,即得出整個的密文。使用的金鑰為 64 位(實際金鑰長度為 56 位,有 8 位用於奇偶校驗)。 

DES 的保密性僅取決於對金鑰的保密,而演算法是公開的。儘管人們在破譯 DES 方面取得了許多進展,但至今仍未能找到比窮舉搜尋金鑰更有效的方法。

DES 是世界上第一個公認的實用密碼演算法標準,它曾對密碼學的發展做出了重大貢獻。

DES之後出現了IDEA(International Data Encryption Algorithm),使用128為金鑰,因而更不容易被攻破。

非對稱加密

就是使用不同的加密金鑰與解密金鑰,又稱為公鑰密碼體制

現有最著名的公鑰密碼體制是RSA 體制,它基於數論中大數分解問題的體制,由美國三位科學家 Rivest, Shamir 和 Adleman 於 1976 年提出並在 1978 年正式發表的。

在公鑰密碼體制中,加密金鑰(即公鑰) PK 是公開資訊,而解密金鑰(即私鑰或祕鑰) SK 是需要保密的。

加密演算法 E 和解密演算法 D 也都是公開的。

雖然祕鑰 SK 是由公鑰 PK 決定的,但卻不能根據 PK計算出 SK。

公鑰加密模型如下:


傳送者 A 用 B 的公鑰 PKB對明文 X 加密(E 運算)後,在接收者 B 用自己的私鑰 SKB

 解密(D 運算),即可恢復出明文:

解密金鑰是接收者專用的祕鑰,對其他人都保密。加密金鑰是公開的,但不能用它來解密,即

加密和解密的運算可以對調,即

在計算機上可容易地產生成對的 PK 和 SK。從已知的 PK 實際上不可能推匯出 SK,即從 PK 到 SK 是“計算上不可能的”。加密和解密演算法都是公開的。

在公鑰密碼體制中,似乎只要每個使用者都具有其他使用者的公鑰,就可實現安全通訊,其實不然,設想使用者A要欺騙使用者B,A可以向B傳送一份偽造的是C傳送的報文,B如何知道這個公鑰不是C的呢?

這就需要有一個值得信賴的機構——即認證中心CA (Certification Authority),來將公鑰與其對應的實體(人或機器)進行繫結(binding)。

認證中心一般由政府出資建立。每個實體都有CA發來的證書(certificate),裡面有公鑰及其擁有者的標識資訊。此證書被 CA 進行了數字簽名。任何使用者都可從可信的地方獲得認證中心 CA 的公鑰,此公鑰用來驗證某個公鑰是否為某個實體所擁有。有的大公司也提供認證中心服務。

數字簽名

數字簽名必須保證以下三點:

(1) 報文鑑別——接收者能夠核實傳送者對報文的簽名;

(2) 報文的完整性——傳送者事後不能抵賴對報文的簽名;

(3) 不可否認——接收者不能偽造對報文的簽名。

現在已有多種實現各種數字簽名的方法。但採用公鑰演算法更容易實現。 


為了進行簽名,A用其私鑰SKA對報文X進行D運算。D運算本來叫做解密運算,雖然還沒有對X進行加密,但實際上沒關係,因為D運算只是為了得到某種不可讀的密文。A把經過D運算得到的密文傳送給B。B為了核實簽名,用A的公鑰進行E運算,還原出明文X。請注意,任何人用A的公鑰PKA進行E運算後都可以得出A傳送的明文。可見,上圖中D運算和E運算不是為了解密和加密,而是為了進行簽名和核實簽名。

下面分析一下為什麼數字簽名具有上述的三點功能:

因為除 A 外沒有別人能具有 A 的私鑰,所以除 A 外沒有別人能產生這個密文。因此 B 相信報文 X 是 A 簽名傳送的。

若 A 要抵賴曾傳送報文給 B,B 可將明文和對應的密文出示給第三者。第三者很容易用 A 的公鑰去證實 A 確實傳送 X 給 B。

反之,若 B 將 X 偽造成 X’,則 B 不能在第三者前出示對應的密文。這樣就證明了 B 偽造了報文。 

但是上述過程僅對報文進行了簽名,卻沒有加密。因為截獲了密文並知道傳送者身份的任何人,通過查閱手冊即可獲得傳送者的公鑰,因為能知道報文的內容。採用下圖所示的方法,就可同時實現祕密通訊和數字簽名:


報文鑑別

許多報文並不需要加密但卻需要數字簽名,以便讓報文的接收者能夠鑑別報文的真偽。然而對很長的報文進行數字簽名會使計算機增加很大的負擔(需要進行很長時間的運算。當我們傳送不需要加密的報文時,應當使接收者能用很簡單的方法鑑別報文的真偽。

報文摘要MD(Message Digest)是進行報文鑑別的簡單方法。


A 將報文 X 經過報文摘要演算法運算後得出很短的報文摘要 H。然後然後用自己的私鑰對 H 進行 D 運算,即進行數字簽名。得出已簽名的報文摘要 D(H)後,並將其追加在報文 X 後面傳送給 B。

B 收到報文後首先把已簽名的D(H) 和報文 X 分離。然後再做兩件事:

(1)用A的公鑰對 D(H) 進行E運算,得出報文摘要 H 。

(2)對報文 X 進行報文摘要運算,看是否能夠得出同樣的報文摘要 H。如一樣,就能以極高的概率斷定收到的報文是 A 產生的。否則就不是。

僅對短得多的定長報文摘要 H 進行數字簽名要比對整個長報文進行數字簽名要簡單得多,所耗費的計算資源也小得多。

但對鑑別報文 X 來說,效果是一樣的。也就是說,報文 X 和已簽名的報文摘要 D(H) 合在一起是不可偽造的,是可檢驗的和不可否認的。

報文摘要演算法就是一種雜湊函式。這種雜湊函式也叫做密碼編碼的檢驗和。報文摘要演算法是防止報文被人惡意篡改。

可以很容易地計算出一個長報文 X 的報文摘要 H,但要想從報文摘要 H 反過來找到原始的報文 X,則實際上是不可能的。

若想找到任意兩個報文,使得它們具有相同的報文摘要,那麼實際上也是不可能的。

MD5(Message-Digest Algorithm 5)已獲得了廣泛的應用。它對任意長的報文進行運算,然後得出128位的MD5報文摘要程式碼。

另一種標準叫做安全雜湊演算法SHA(Secure HashAlgorithm),它和MD5相似,但碼長為160位。SHA比MD5更安全,但計算起來也比MD5要慢些。

安全套接層SSL

SSL(Secure Socket Layer)為Netscape所研發,用以保障在Internet上資料傳輸之安全,利用資料加密技術,可確保資料在網路上之傳輸過程中不會被擷取及竊聽。

SSL協議位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。SSL可對全球資訊網客戶與伺服器之間傳送的資料進行加密和鑑別,它在雙方的聯絡階段(也就是握手階段)對將要使用的加密演算法(如DES或RSA等)和雙方共享的回話金鑰進行協商,完成客戶與伺服器之間的鑑別。在聯絡階段完成之後,所有傳送的資料都使用在聯絡階段商定的會話金鑰。

SSL不僅被所有常用的瀏覽器和全球資訊網伺服器所支援,而且也是運輸層安全協議TLS(Transport Layer Security)的基礎。


 在傳送方,SSL接受應用層的資料(如HTTP或IMAP報文),對資料進行加密,然後把加了密的資料送往TCP套接字。在接收方,SSL從TCP套接字讀取資料,解密後把資料交給應用層。

SSL提供一下三種服務:

(1)認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

(2)加密資料以防止資料中途被竊取;

(3)維護資料的完整性,確保資料在傳輸過程中不被改變。

SSL工作原理的示意圖如下:


SSH

SSH Secure Shell 的縮寫,SSH為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用 SSH 協議可以有效防止遠端管理過程中的資訊洩露問題。

傳統的網路服務程式,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網路上用明文傳送口令和資料,別有用心的人非常容易就可以截獲這些口令和資料。而且,這些服務程式的安全驗證方式也是有其弱點的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的伺服器接收你傳給伺服器的資料,然後再冒充你把資料傳給真正的伺服器。伺服器和你之間的資料傳送被“中間人”一轉手做了手腳之後,就會出現很嚴重的問題。通過使用SSH,可以把所有傳輸的資料進行加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個額外的好處就是傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、POP、甚至為PPP提供一個安全的“通道”。

從客戶端來看,SSH提供兩種級別的安全驗證。

第一種級別(基於口令的安全驗證

只要你知道自己帳號和口令,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連線的伺服器就是你想連線的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到“中間人”這種方式的攻擊。

第二種級別(基於密匙的安全驗證

需要依靠密匙,也就是你必須為自己建立一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連線到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公用密匙,然後把它和你傳送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就用公用密匙加密“質詢”(challenge)並把它傳送給客戶端軟體。客戶端軟體收到“質詢”之後就可以用你的私人密匙解密再把它傳送給伺服器。

用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網路上傳送口令。

第二種級別不僅加密所有傳送的資料,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒。

SSL與SSH雖然只有一個字母的差別,但是兩者不是一個範疇,如果硬要將兩者作比較,SSH和SSL的關係可以這麼理解, SSH是用SSL協議構建的一個類似telnet的應用,即:SSH = TELNET + SSL。

防火牆

防火牆是由軟體、硬體構成的系統,是一種特殊程式設計的路由器,用來在兩個網路之間實施接入控制策略。接入控制策略是由使用防火牆的單位自行制訂的,為的是可以最適合本單位的需要。

防火牆內的網路稱為“可信的網路”(trustednetwork),而將外部的因特網稱為“不可信的網路”(untrusted network)。防火牆可用來解決內聯網和外聯網的安全問題

 

防火牆的功能有兩個:阻止允許

“阻止”就是阻止某種型別的通訊量通過防火牆(從外部網路到內部網路,或反過來)。

“允許”的功能與“阻止”恰好相反。

防火牆必須能夠識別通訊量的各種型別。不過在大多數情況下防火牆的主要功能是“阻止”。

防火牆技術一般分為兩類:

(1) 網路級防火牆——用來防止整個網路出現外來非法的入侵。屬於這類的有分組過濾和授權伺服器。前者檢查所有流入本網路的資訊,然後拒絕不符合事先制訂好的一套準則的資料,而後者則是檢查使用者的登入是否合法。

(2)應用級防火牆——從應用程式來進行接入控制。通常使用應用閘道器或代理伺服器來區分各種應用。例如,可以只允許通過訪問全球資訊網的應用,而阻止 FTP 應用的通過。

分組過濾是靠查詢系統管理員所設定的表格來實現的。表格列出了可接受的、或必須進行阻攔的目的站和源站,以及其他的一些通過防火牆的規則。

我們知道,TCP的埠號指出了在TCP上面的應用層服務。例如,埠號23是TELNET,埠號119是USENET,等等。如果在因特網進入防火牆的分組過濾路由器中所有目的埠號為23的分組都進行阻攔,那麼所有外單位使用者就不能使用TELNET登入到本單位的主機。同理,如果某公司不願意其僱員在上班時間花費大量的時間去看因特網的USENET新聞,就可將目的埠號為119的分組阻攔住,使其無法傳送到因特網。

阻攔向外傳送的分組很複雜,因為有時它們不使用標準的埠號。例如FTP常常是動態地分配埠號。阻攔UDP更困難,因為事先不容易知道UDP想做什麼。許多分組過濾路由器乾脆將所有的UDP全部阻攔。

應用閘道器是從應用層的角度來檢查每一個分組。例如,一個郵件閘道器在檢查每一個郵件時,要根據郵件的首部或豹紋的大小,甚至報文內容(例如,有沒有某些像“導彈”、“核彈頭”等敏感詞彙)來確定該郵件能否通過防火牆。

相關推薦

計算機網路 對稱加密對稱加密

所謂對稱加密,就是加密金鑰與解密金鑰是相同的密碼體制,這種加密系統又稱為對稱金鑰系統。 對稱加密模型如下圖所示: 使用者A向B傳送明文X,但通過加密演算法E運算後,就得到密文Y。 Y=EK(X) 圖中所示的加密和解密用的金鑰K是一串祕密的字串(或位元串)。

對稱加密對稱加密

通過 lan pan 消息加密 ack 屬於 加密算法 效率 構建 1.對稱加密 對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。有時又叫傳統密碼算法,就是加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數的對稱算法中,加密密

幾個例子理解對稱加密對稱加密、公鑰私鑰、簽名驗籤、數字證書、HTTPS加密方式

# 原創,轉載請留言聯絡 為什麼會出現這麼多加密啊,公鑰私鑰啊,簽名啊這些東西呢?說到底還是保證雙方通訊的安全性與完整性。例如小明發一封表白郵件給小紅,他總不希望給別人看見吧。而各種各樣的技術就是為了保障通訊的安全。(本文務必從上到下看) 1.對稱加密與非對稱加密 對稱加密: 對稱加密是

golang[34]-區塊鏈-對稱加密對稱加密

對稱加密 對稱金鑰加密(英語:Symmetric-key algorithm)又稱為對稱加密、私鑰加密、共享金鑰加密,是密碼學中的一類加密演算法。這類演算法在加密和解密時使用相同的金鑰,或是使用兩個可以簡單地相互推算的金鑰。事實上,這組金鑰成為在兩個或多個成員間的共同祕密,以便維持專屬的通訊聯絡。與公開

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

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

對稱加密對稱加密結合應用

對稱加密與非對稱加密組合使用 明文+對稱金鑰=對稱加密後的明文 對稱金鑰+非對稱公鑰=非對稱加密後的對稱金鑰 非對稱私鑰+非對稱加密後的對稱金鑰=對稱金鑰 對稱金鑰+對稱加密後的明文=明文 注意 其中對稱金鑰是一次性的,每次操作都會生成新的對

php對稱加密對稱加密

對稱加密: <?php class mycrypt { public $pubkey; public $privkey; function __construct() { $

關於對稱加密對稱加密

1. 加密的需求 (1)保密這個很容易理解,就比如你寫的日記,不想被父母看到。(2)鑑別/認證這個就比如有個人說他是你爸爸,你如何鑑別他不是你爸爸呢?比如驗血嘛,就是個鑑別認證。(3)完整性完整性也

安全科普:理解SSL(https)中的對稱加密對稱加密

轉:http://www.freebuf.com/articles/system/37624.html 今天剛好為站點的後臺弄了下https,就來分享我瞭解的吧。 密碼學最早可以追溯到古希臘羅馬時代,那時的加密方法很簡單:替換字母。 早期的密碼學: 古希臘人用一種叫  的工具加密。更快的工具是 —:只

淺談對稱加密對稱加密

作為資訊保安領域的基石,資料加密演算法你或多或少應該用過。可你知道資料加密分成 **對稱加密** ( *symmetric encryption* ) 和 **非對稱加密** ( *asymmetric encryption* ) 兩種嗎?對稱加密與非對稱加密有什麼區別?各自適用於什麼場景? ## 對稱加密

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

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

對稱(DES/AES)對稱(RSA/SSL/數字證書)加密介紹及實際應用

行數據 服務端 版本 報道 pass edi 得到 參數 crc 本文不對具體的算法做深入研究,只是講解各種安全算法的原理和使用場景。 一、數據校驗算法 數據校驗,是為保護數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。當接收方用同樣的算法再算一次校驗值,如

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

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

對稱對稱加密

針對加密方式劃分為 對稱加密和非對稱加密 對稱加密:使用唯一祕鑰對資料進行加解密,其主要特點為速度快、使用方便、適合對大資料量進行加解密操作;主要缺點也比較明顯,需要事先約定祕鑰,當雙方通訊時就涉及到該祕鑰的交換,存在被截獲風險。 Aes演算法:將資料劃分為區塊,每個區塊

密碼學03--go語言對稱加密RSA演算法的實現

目錄 1.對稱加密的弊端 2.非對稱加密 2.1 非對稱加密使用場景 2.2 區分公私鑰 2.3 非對稱加密通訊流程 2.4 非對稱加密與對稱加密 3.非對稱加密RSA演算法 3.1 RSA演算法 3.2 RSA原理 3.3 RSA生成金鑰對流程

網路---Https和Http區別和對稱加密對稱加密

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

Java對稱對稱加密解密,AESRSA

加密技術可以分為對稱與非對稱兩種. 對稱加密,解密,即加密與解密用的是同一把祕鑰,常用的對稱加密技術有DES,AES等 而非對稱技術,加密與解密用的是不同的祕鑰,常用的非對稱加密技術有RSA等 為什麼要有非對稱加密,解密技術呢 假設這樣一種場景A要傳送一段訊息給B,但是又

程式設計師之網路安全系列(四):資料加密對稱祕鑰

系列目錄: 前文回顧 假如,明明和麗麗相互不認識,明明想給麗麗寫一封情書,讓隔壁老王送去 如何保證隔壁老王不能看到情書內容?(保密性) 如何保證隔壁老王不修改情書的內容?(完整性) 如何保證隔壁老王不冒充明明?(身份認證) 如何保證明明不能否認情書是自己寫的?(來源的不可否認) 但是上面的問題是明

HTTPS原理對稱加密DNS劫持

一直不明白HTTPS的加密原理。 因為,如果連線是不安全的,那麼如果伺服器把密匙傳送到客戶端的過程中,密匙就可能已經洩漏了。所以,這樣怎麼想也不明白。在多瞭解了一下以後,原來,HTTPS的基礎是非對稱加密技術。就是說,加密和解密必須使用不同的兩把鑰匙進行。 至於原理可以自

MD5 不可逆加密,Des對稱可逆加密 ,RSA對稱可逆加密 ,數字證書 SSL

md5算法 eric net 內容 href archive 9.png pre encrypt :MD5 不可逆加密2:Des對稱可逆加密3:RSA非對稱可逆加密4:數字證書 SSL                   Anker_張(博客園)http://www.cnb