1、對(duì)稱加密與非對(duì)稱加密
所謂對(duì)稱加密,就是加密密鑰與解密密鑰是相同的密碼體制拧粪,這種加密系統(tǒng)又稱為對(duì)稱密鑰系統(tǒng)橱野。
對(duì)稱加密模型如下圖所示:
用戶A向B發(fā)送明文X朽缴,但通過加密算法E運(yùn)算后,就得到密文Y水援。
圖中所示的加密和解密用的密鑰K是一串秘密的字符串(或比特串)密强。在傳送過程中可能出現(xiàn)密文的截獲和篡改。
B利用解密算法D運(yùn)算和解密密鑰K蜗元,解出明文X或渤。解密算法是加密算法的逆運(yùn)算。在進(jìn)行解密運(yùn)算時(shí)如果不使用事先約定好的密鑰就無法解出明文奕扣。
數(shù)據(jù)加密標(biāo)準(zhǔn) DES 屬于對(duì)稱密鑰密碼體制薪鹦,DES是一種分組密碼。在加密前先對(duì)整個(gè)明文進(jìn)行分組。每一個(gè)組長(zhǎng)為 64 位池磁。
然后對(duì)每一個(gè) 64 位 二進(jìn)制數(shù)據(jù)進(jìn)行加密處理奔害,產(chǎn)生一組 64 位密文數(shù)據(jù)。
最后將各組密文串接起來地熄,即得出整個(gè)的密文华临。使用的密鑰為 64 位(實(shí)際密鑰長(zhǎng)度為 56 位,有 8 位用于奇偶校驗(yàn))离斩。
DES 的保密性僅取決于對(duì)密鑰的保密银舱,而算法是公開的。盡管人們?cè)谄谱g DES 方面取得了許多進(jìn)展跛梗,但至今仍未能找到比窮舉搜索密鑰更有效的方法寻馏。
DES 是世界上第一個(gè)公認(rèn)的實(shí)用密碼算法標(biāo)準(zhǔn),它曾對(duì)密碼學(xué)的發(fā)展做出了重大貢獻(xiàn)核偿。
DES之后出現(xiàn)了IDEA(International Data Encryption Algorithm)诚欠,使用128為密鑰,因而更不容易被攻破漾岳。
非對(duì)稱加密就是使用不同的加密密鑰與解密密鑰轰绵,又稱為公鑰密碼體制。
現(xiàn)有最著名的公鑰密碼體制是RSA 體制尼荆,它基于數(shù)論中大數(shù)分解問題的體制左腔,由美國(guó)三位科學(xué)家 Rivest, Shamir 和 Adleman 于 1976 年提出并在 1978 年正式發(fā)表的。
在公鑰密碼體制中捅儒,加密密鑰(即公鑰) PK 是公開信息液样,而解密密鑰(即私鑰或秘鑰) SK 是需要保密的。
加密算法 E 和解密算法 D 也都是公開的巧还。
雖然秘鑰 SK 是由公鑰 PK 決定的鞭莽,但卻不能根據(jù) PK 計(jì)算出 SK。
公鑰加密模型如下:
發(fā)送者 A 用 B 的公鑰 PKB 對(duì)明文 X 加密(E 運(yùn)算)后麸祷,在接收者 B 用自己的私鑰 SKB 解密(D 運(yùn)算)澎怒,即可恢復(fù)出明文:
解密密鑰是接收者專用的秘鑰,對(duì)其他人都保密阶牍。加密密鑰是公開的喷面,但不能用它來解密,即
加密和解密的運(yùn)算可以對(duì)調(diào)荸恕,即
在計(jì)算機(jī)上可容易地產(chǎn)生成對(duì)的 PK 和 SK乖酬。從已知的 PK 實(shí)際上不可能推導(dǎo)出 SK,即從 PK 到 SK 是“計(jì)算上不可能的”融求。加密和解密算法都是公開的咬像。
在公鑰密碼體制中,似乎只要每個(gè)用戶都具有其他用戶的公鑰,就可實(shí)現(xiàn)安全通信县昂,其實(shí)不然肮柜,設(shè)想用戶A要欺騙用戶B,A可以向B發(fā)送一份偽造的是C發(fā)送的報(bào)文倒彰,B如何知道這個(gè)公鑰不是C的呢审洞?
這就需要有一個(gè)值得信賴的機(jī)構(gòu)——即認(rèn)證中心CA (Certification Authority),來將公鑰與其對(duì)應(yīng)的實(shí)體(人或機(jī)器)進(jìn)行綁定待讳。
認(rèn)證中心一般由政府出資建立芒澜。每個(gè)實(shí)體都有CA 發(fā)來的證書(certificate),里面有公鑰及其擁有者的標(biāo)識(shí)信息创淡。此證書被 CA 進(jìn)行了數(shù)字簽名痴晦。任何用戶都可從可信的地方獲得認(rèn)證中心 CA 的公鑰,此公鑰用來驗(yàn)證某個(gè)公鑰是否為某個(gè)實(shí)體所擁有琳彩。有的大公司也提供認(rèn)證中心服務(wù)誊酌。
2、數(shù)字簽名
數(shù)字簽名必須保證以下三點(diǎn):
- 報(bào)文鑒別——接收者能夠核實(shí)發(fā)送者對(duì)報(bào)文的簽名露乏;
- 報(bào)文的完整性——發(fā)送者事后不能抵賴對(duì)報(bào)文的簽名碧浊;
- 不可否認(rèn)——接收者不能偽造對(duì)報(bào)文的簽名。
現(xiàn)在已有多種實(shí)現(xiàn)各種數(shù)字簽名的方法瘟仿。但采用公鑰算法更容易實(shí)現(xiàn)箱锐。
為了進(jìn)行簽名,A用其私鑰SKA對(duì)報(bào)文X進(jìn)行D運(yùn)算劳较。D運(yùn)算本來叫做解密運(yùn)算瑞躺,雖然還沒有對(duì)X進(jìn)行加密,但實(shí)際上沒關(guān)系兴想,因?yàn)镈運(yùn)算只是為了得到某種不可讀的密文。A把經(jīng)過D運(yùn)算得到的密文傳送給B赡勘。B為了核實(shí)簽名嫂便,用A的公鑰進(jìn)行E運(yùn)算,還原出明文X闸与。請(qǐng)注意毙替,任何人用A的公鑰PKA進(jìn)行E運(yùn)算后都可以得出A發(fā)送的明文〖#可見厂画,上圖中D運(yùn)算和E運(yùn)算不是為了解密和加密,而是為了進(jìn)行簽名和核實(shí)簽名拷邢。
下面分析一下為什么數(shù)字簽名具有上述的三點(diǎn)功能:
因?yàn)槌?A 外沒有別人能具有 A 的私鑰袱院,所以除 A 外沒有別人能產(chǎn)生這個(gè)密文。因此 B 相信報(bào)文 X 是 A 簽名發(fā)送的。
若 A 要抵賴曾發(fā)送報(bào)文給 B忽洛,B 可將明文和對(duì)應(yīng)的密文出示給第三者腻惠。第三者很容易用 A 的公鑰去證實(shí) A 確實(shí)發(fā)送 X 給 B。
反之欲虚,若 B 將 X 偽造成 X’集灌,則 B 不能在第三者前出示對(duì)應(yīng)的密文。這樣就證明了 B 偽造了報(bào)文复哆。
但是上述過程僅對(duì)報(bào)文進(jìn)行了簽名欣喧,卻沒有加密。因?yàn)榻孬@了密文并知道發(fā)送者身份的任何人梯找,通過查閱手冊(cè)即可獲得發(fā)送者的公鑰唆阿,因?yàn)槟苤缊?bào)文的內(nèi)容。采用下圖所示的方法初肉,就可同時(shí)實(shí)現(xiàn)秘密通信和數(shù)字簽名:
3酷鸦、報(bào)文鑒別
許多報(bào)文并不需要加密但卻需要數(shù)字簽名,以便讓報(bào)文的接收者能夠鑒別報(bào)文的真?zhèn)窝烙健H欢鴮?duì)很長(zhǎng)的報(bào)文進(jìn)行數(shù)字簽名會(huì)使計(jì)算機(jī)增加很大的負(fù)擔(dān)(需要進(jìn)行很長(zhǎng)時(shí)間的運(yùn)算臼隔。當(dāng)我們傳送不需要加密的報(bào)文時(shí),應(yīng)當(dāng)使接收者能用很簡(jiǎn)單的方法鑒別報(bào)文的真?zhèn)巍?/p>
報(bào)文摘要MD(Message Digest)是進(jìn)行報(bào)文鑒別的簡(jiǎn)單方法妄壶。
A 將報(bào)文 X 經(jīng)過報(bào)文摘要算法運(yùn)算后得出很短的報(bào)文摘要 H摔握。然后然后用自己的私鑰對(duì) H 進(jìn)行 D 運(yùn)算,即進(jìn)行數(shù)字簽名丁寄。得出已簽名的報(bào)文摘要 D(H)后氨淌,并將其追加在報(bào)文 X 后面發(fā)送給 B。
B 收到報(bào)文后首先把已簽名的 D(H) 和報(bào)文 X 分離伊磺。然后再做兩件事:
- 用A的公鑰對(duì) D(H) 進(jìn)行E運(yùn)算盛正,得出報(bào)文摘要 H 。
- 對(duì)報(bào)文 X 進(jìn)行報(bào)文摘要運(yùn)算屑埋,看是否能夠得出同樣的報(bào)文摘要 H豪筝。如一樣,就能以極高的概率斷定收到的報(bào)文是 A 產(chǎn)生的摘能。否則就不是续崖。
僅對(duì)短得多的定長(zhǎng)報(bào)文摘要 H 進(jìn)行數(shù)字簽名要比對(duì)整個(gè)長(zhǎng)報(bào)文進(jìn)行數(shù)字簽名要簡(jiǎn)單得多,所耗費(fèi)的計(jì)算資源也小得多团搞。
但對(duì)鑒別報(bào)文 X 來說严望,效果是一樣的。也就是說逻恐,報(bào)文 X 和已簽名的報(bào)文摘要 D(H) 合在一起是不可偽造的像吻,是可檢驗(yàn)的和不可否認(rèn)的峻黍。
報(bào)文摘要算法就是一種散列函數(shù)。這種散列函數(shù)也叫做密碼編碼的檢驗(yàn)和萧豆。報(bào)文摘要算法是防止報(bào)文被人惡意篡改奸披。
可以很容易地計(jì)算出一個(gè)長(zhǎng)報(bào)文 X 的報(bào)文摘要 H,但要想從報(bào)文摘要 H 反過來找到原始的報(bào)文 X涮雷,則實(shí)際上是不可能的阵面。
若想找到任意兩個(gè)報(bào)文,使得它們具有相同的報(bào)文摘要洪鸭,那么實(shí)際上也是不可能的样刷。
MD5(Message-Digest Algorithm 5)已獲得了廣泛的應(yīng)用。它對(duì)任意長(zhǎng)的報(bào)文進(jìn)行運(yùn)算览爵,然后得出128位的MD5報(bào)文摘要代碼置鼻。
另一種標(biāo)準(zhǔn)叫做安全散列算法SHA(Secure Hash Algorithm),它和MD5相似蜓竹,但碼長(zhǎng)為160位箕母。SHA比MD5更安全,但計(jì)算起來也比MD5要慢些俱济。
4嘶是、安全套接層SSL
SSL(Secure Socket Layer)為Netscape所研發(fā),用以保障在Internet上數(shù)據(jù)傳輸之安全蛛碌,利用數(shù)據(jù)加密技術(shù)聂喇,可確保數(shù)據(jù)在網(wǎng)絡(luò)上之傳輸過程中不會(huì)被截取及竊聽。
SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間蔚携,為數(shù)據(jù)通訊提供安全支持希太。SSL可對(duì)萬維網(wǎng)客戶與服務(wù)器之間傳送的數(shù)據(jù)進(jìn)行加密和鑒別,它在雙方的聯(lián)絡(luò)階段(也就是握手階段)對(duì)將要使用的加密算法(如DES或RSA等)和雙方共享的回話密鑰進(jìn)行協(xié)商酝蜒,完成客戶與服務(wù)器之間的鑒別誊辉。在聯(lián)絡(luò)階段完成之后团南,所有傳送的數(shù)據(jù)都使用在聯(lián)絡(luò)階段商定的會(huì)話密鑰倍靡。
SSL不僅被所有常用的瀏覽器和萬維網(wǎng)服務(wù)器所支持,而且也是運(yùn)輸層安全協(xié)議TLS(Transport Layer Security)的基礎(chǔ)滚秩。
在發(fā)送方远豺,SSL接受應(yīng)用層的數(shù)據(jù)(如HTTP或IMAP報(bào)文),對(duì)數(shù)據(jù)進(jìn)行加密坞嘀,然后把加了密的數(shù)據(jù)送往TCP套接字躯护。在接收方,SSL從TCP套接字讀取數(shù)據(jù)丽涩,解密后把數(shù)據(jù)交給應(yīng)用層棺滞。
SSL提供一下三種服務(wù):
- 認(rèn)證用戶和服務(wù)器裁蚁,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
- 加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊燃套肌枉证;
- 維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中不被改變移必。
SSL工作原理的示意圖如下:
5室谚、SSH
SSH 為 Secure Shell 的縮寫,SSH為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議崔泵。SSH 是目前較可靠秒赤,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題憎瘸。
傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序入篮,如:ftp、pop和telnet在本質(zhì)上都是不安全的幌甘,因?yàn)樗鼈冊(cè)诰W(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù)潮售,別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且锅风,這些服務(wù)程序的安全驗(yàn)證方式也是有其弱點(diǎn)的酥诽,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式遏弱, 就是“中間人”冒充真正的服務(wù)器接收你傳給服務(wù)器的數(shù)據(jù)盆均,然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被“中間人”一轉(zhuǎn)手做了手腳之后漱逸,就會(huì)出現(xiàn)很嚴(yán)重的問題泪姨。通過使用SSH,可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密饰抒,這樣“中間人”這種攻擊方式就不可能實(shí)現(xiàn)了肮砾,而且也能夠防止DNS欺騙和IP欺騙。使用SSH袋坑,還有一個(gè)額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的仗处,所以可以加快傳輸?shù)乃俣取SH有很多功能枣宫,它既可以代替Telnet婆誓,又可以為FTP、POP也颤、甚至為PPP提供一個(gè)安全的“通道”洋幻。
從客戶端來看,SSH提供兩種級(jí)別的安全驗(yàn)證翅娶。
- 第一種級(jí)別(基于口令的安全驗(yàn)證)
只要你知道自己帳號(hào)和口令文留,就可以登錄到遠(yuǎn)程主機(jī)好唯。所有傳輸?shù)臄?shù)據(jù)都會(huì)被加密,但是不能保證你正在連接的服務(wù)器就是你想連接的服務(wù)器燥翅∑锔荩可能會(huì)有別的服務(wù)器在冒充真正的服務(wù)器,也就是受到“中間人”這種方式的攻擊森书。
- 第二種級(jí)別(基于密匙的安全驗(yàn)證)
需要依靠密匙靶端,也就是你必須為自己創(chuàng)建一對(duì)密匙,并把公用密匙放在需要訪問的服務(wù)器上拄氯。如果你要連接到SSH服務(wù)器上躲查,客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行安全驗(yàn)證译柏。服務(wù)器收到請(qǐng)求之后镣煮,先在該服務(wù)器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過來的公用密匙進(jìn)行比較鄙麦。如果兩個(gè)密匙一致典唇,服務(wù)器就用公用密匙加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件】韪客戶端軟件收到“質(zhì)詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器介衔。
用這種方式,你必須知道自己密匙的口令骂因。但是炎咖,與第一種級(jí)別相比,第二種級(jí)別不需要在網(wǎng)絡(luò)上傳送口令寒波。
第二種級(jí)別不僅加密所有傳送的數(shù)據(jù)乘盼,而且“中間人”這種攻擊方式也是不可能的(因?yàn)樗麤]有你的私人密匙)。但是整個(gè)登錄的過程可能需要10秒俄烁。
SSL與SSH雖然只有一個(gè)字母的差別绸栅,但是兩者不是一個(gè)范疇,如果硬要將兩者作比較页屠,SSH和SSL的關(guān)系可以這么理解粹胯, SSH是用SSL協(xié)議構(gòu)建的一個(gè)類似telnet的應(yīng)用,即:SSH = TELNET + SSL辰企。
6风纠、防火墻
防火墻是由軟件、硬件構(gòu)成的系統(tǒng)牢贸,是一種特殊編程的路由器议忽,用來在兩個(gè)網(wǎng)絡(luò)之間實(shí)施接入控制策略。接入控制策略是由使用防火墻的單位自行制訂的十减,為的是可以最適合本單位的需要栈幸。
防火墻內(nèi)的網(wǎng)絡(luò)稱為可信的網(wǎng)絡(luò)”,而將外部的因特網(wǎng)稱為不可信的網(wǎng)絡(luò)帮辟。防火墻可用來解決內(nèi)聯(lián)網(wǎng)和外聯(lián)網(wǎng)的安全問題速址。
防火墻的功能有兩個(gè):阻止和允許。
“阻止”就是阻止某種類型的通信量通過防火墻(從外部網(wǎng)絡(luò)到內(nèi)部網(wǎng)絡(luò)由驹,或反過來)芍锚。“允許”的功能與“阻止”恰好相反蔓榄。
防火墻必須能夠識(shí)別通信量的各種類型并炮。不過在大多數(shù)情況下防火墻的主要功能是“阻止”。
防火墻技術(shù)一般分為兩類:
- 網(wǎng)絡(luò)級(jí)防火墻——用來防止整個(gè)網(wǎng)絡(luò)出現(xiàn)外來非法的入侵甥郑。屬于這類的有分組過濾和授權(quán)服務(wù)器逃魄。前者檢查所有流入本網(wǎng)絡(luò)的信息,然后拒絕不符合事先制訂好的一套準(zhǔn)則的數(shù)據(jù)澜搅,而后者則是檢查用戶的登錄是否合法伍俘。
- 應(yīng)用級(jí)防火墻——從應(yīng)用程序來進(jìn)行接入控制。通常使用應(yīng)用網(wǎng)關(guān)或代理服務(wù)器來區(qū)分各種應(yīng)用勉躺。例如癌瘾,可以只允許通過訪問萬維網(wǎng)的應(yīng)用,而阻止 FTP 應(yīng)用的通過饵溅。
分組過濾是靠查找系統(tǒng)管理員所設(shè)置的表格來實(shí)現(xiàn)的妨退。表格列出了可接受的、或必須進(jìn)行阻攔的目的站和源站蜕企,以及其他的一些通過防火墻的規(guī)則咬荷。
我們知道,TCP的端口號(hào)指出了在TCP上面的應(yīng)用層服務(wù)糖赔。例如萍丐,端口號(hào)23是TELNET,端口號(hào)119是USENET放典,等等逝变。如果在因特網(wǎng)進(jìn)入防火墻的分組過濾路由器中所有目的端口號(hào)為23的分組都進(jìn)行阻攔,那么所有外單位用戶就不能使用TELNET登錄到本單位的主機(jī)奋构。同理壳影,如果某公司不愿意其雇員在上班時(shí)間花費(fèi)大量的時(shí)間去看因特網(wǎng)的USENET新聞,就可將目的端口號(hào)為119的分組阻攔住弥臼,使其無法發(fā)送到因特網(wǎng)宴咧。
阻攔向外發(fā)送的分組很復(fù)雜,因?yàn)橛袝r(shí)它們不使用標(biāo)準(zhǔn)的端口號(hào)径缅。例如FTP常常是動(dòng)態(tài)地分配端口號(hào)掺栅。阻攔UDP更困難烙肺,因?yàn)槭孪炔蝗菀字繳DP想做什么。許多分組過濾路由器干脆將所有的UDP全部阻攔氧卧。
應(yīng)用網(wǎng)關(guān)是從應(yīng)用層的角度來檢查每一個(gè)分組桃笙。例如,一個(gè)郵件網(wǎng)關(guān)在檢查每一個(gè)郵件時(shí)沙绝,要根據(jù)郵件的首部或豹紋的大小搏明,甚至報(bào)文內(nèi)容(例如,有沒有某些像“導(dǎo)彈”闪檬、“核彈頭”等敏感詞匯)來確定該郵件能否通過防火墻星著。