國際標(biāo)準(zhǔn)化組織ISO對計(jì)算機(jī)網(wǎng)絡(luò)安全的定義
為數(shù)據(jù)處理系統(tǒng)建立和采用的安全防范技術(shù),以保護(hù)計(jì)算機(jī)硬件、軟件和數(shù)據(jù)不因偶然和惡意的原因遭到破壞、更改和泄露
網(wǎng)絡(luò)安全威脅主要表現(xiàn)在
? 非授權(quán)訪問
? 信息泄露或丟失
? 破壞數(shù)據(jù)完整性
? 拒絕服務(wù)攻擊DoS
? 利用網(wǎng)絡(luò)傳播病毒等
網(wǎng)絡(luò)安全包括五個基本要素
? 機(jī)密性
? 完整性
? 可用性
? 可控性
? 可審查性
網(wǎng)絡(luò)安全的分類
根據(jù)安全需求將其分為以下幾個部分
? 數(shù)據(jù)保密
? 數(shù)據(jù)完整性
? 身份驗(yàn)證
? 授權(quán)
? 不可抵賴和不可否認(rèn)
例如A給B發(fā)過數(shù)據(jù),因此A不能抵賴和否認(rèn)曾經(jīng)給B發(fā)過數(shù)據(jù)
根據(jù)解決手段可以分為以下幾個
? 病毒防范
? 防火墻
? 存取控制(用戶是可以進(jìn)行讀功能、寫功能還是兼?zhèn)渥x寫功能)
? 身份鑒別
? 安全綜合解決方案
? 根據(jù)威脅來源將其分為網(wǎng)絡(luò)攻擊行為、安全漏洞及惡意代碼等類別
密碼學(xué)
密碼學(xué)包括密碼編碼學(xué)和密碼分析學(xué)
? 密碼編碼學(xué):密碼體制的設(shè)計(jì)學(xué)
? 密碼分析學(xué):在未知密碼的情況下從密文推演出明文的技術(shù)
相關(guān)術(shù)語
明文:信息的原始形式(plianttext,記為P)
密文:明文加密后的形式(ciphertext,記為C)
加密:明文變成密文的過程(encrypt,記為E),加密通常是由加密算法實(shí)現(xiàn)的
解密:密文還原成明文的過程(decrypt,記為D),解密通常是由解密算法來實(shí)現(xiàn)的
密鑰:為了有效地控制加密和解密算法的實(shí)現(xiàn),在其處理過程中要有通信雙方掌握的專門信息參與,這種專門信息稱為密鑰(key,記為K)
根據(jù)密鑰的特點(diǎn),密碼體制分為
非對稱密鑰體制和對稱密鑰體制兩種
1.對稱密鑰
又稱為傳統(tǒng)密鑰、秘密密鑰、私鑰加密(由加密和解密雙方秘密保管,不能讓第三方得到)、單鑰密鑰加密算法。即信息的發(fā)送方和接收方用一個密鑰去加密和解密數(shù)據(jù)。它的最大優(yōu)勢是加/解密速度快,適合于對大數(shù)據(jù)量進(jìn)行加密,對稱加密的一大缺點(diǎn)是密鑰的管理與分配,換句話說,如何把密鑰發(fā)送到需要解密你的消息的人的手里是一個問題。在發(fā)送密鑰的過程中,密鑰有很大的風(fēng)險會被黑客們攔截?,F(xiàn)實(shí)中通常的做法是將對稱加密的密鑰進(jìn)行非對稱加密,然后傳送給需要它的人。對稱密鑰體制的核心是加密和解密采用相同的密鑰。保密性僅取決于對密鑰的保密,而算法是公開的
對稱密鑰加密算法的執(zhí)行過程

?只有在發(fā)送方和接收方處才能得到明文,在網(wǎng)絡(luò)傳輸?shù)倪^程中一直是密文的狀態(tài)
替代密碼
將字母a,b,c,d,......,w,x,y,z的自然順序保持不變,但使之與D,E,F,G,......,X,A,B,C分別對應(yīng):
密鑰為3
例如:明文caesar cipher對應(yīng)的密文為FDHVDU FLSKHU
置換密碼
按照某一規(guī)則重新排列消息中的比特或字符的順序,密鑰的目的是對列編號
密鑰:CIPHER
順序:145326
舉例:
明文
attack
begins
at two
密文 abaaitcnw tgtetkso
對稱密鑰加密算法分為兩類:
? 一次只對明文中的單個位(或字節(jié))運(yùn)算的算法,稱為序列算法、序列密碼或流密碼(stream cipher)
? 對明文的一組位進(jìn)行運(yùn)算(這些位組稱為分組),稱為塊密碼或分組密碼(block cipher)
分組密碼體制

數(shù)據(jù)加密標(biāo)準(zhǔn)DES
DES是世界上第一個公認(rèn)的實(shí)用密碼算法標(biāo)準(zhǔn),是一種典型的分組加密算法。加密前,先對整個的明文進(jìn)行分組,每一個組長64位;使用密鑰64位,對每一個64位分組進(jìn)行加密處理。最后將各組密文串接,得出整個的密文

DES經(jīng)過總共16輪的替代和換位的變換后,使得密碼分析者無法獲得該算法一般特性以外更多的信息
新一代加密標(biāo)準(zhǔn)AES
AES是一個迭代的、對稱密鑰分組的密碼。算法可以使用128、192和256位密鑰,并且用128位分組加密和解密數(shù)據(jù),算法迭代次數(shù)由分組長度和密鑰長度共同決定

AES算法在每一輪都采用置換和代替并行地處理整個數(shù)據(jù)分組,這個分組被編排為一個稱作狀態(tài)陣列的4x4字節(jié)矩陣。AES算法的加密實(shí)際上就是對輸入狀態(tài)陣列進(jìn)行一系列運(yùn)算纏身輸出的過程

2.非對稱加密算法
公開密鑰體制的方法也叫做非對稱加密算法,需要公開密鑰(public key)和私有密鑰(private key)兩個密鑰。非對稱加密為數(shù)據(jù)的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則可以發(fā)給任何請求它的人。非對稱加密使用這對密鑰中的一個進(jìn)行加密,而解密則需要另一個密鑰。公開密鑰(加密密鑰)和非對稱加密解密算法是公開的,但私有密鑰(解密密鑰)是保密的,由密鑰的主人妥善保管。公開密鑰體制中最著名的是RSA算法
比如,你向銀行請求公鑰,銀行將公鑰發(fā)給你,你使用公鑰對消息加密,那么只有私鑰的持有人--銀行才能對你的消息解密。與對稱加密不同的是,銀行不需要將私鑰通過網(wǎng)絡(luò)發(fā)送出去,因此安全性大大提高。 目前最常用的非對稱加密算法是RSA算法。公鑰機(jī)制靈活,但加密和解密速度卻比對稱密鑰加密慢得多
公開密鑰密碼體制

公開密鑰算法的特點(diǎn):
? 發(fā)送者用加密密鑰PK對明文X加密后,在接受者用解密密鑰SK解密,即可恢復(fù)出明文,
或?qū)憺镈SK(EPK(X))= X
? 加密密鑰是公開的,但不能用它來解密,即
DPK(EPK(X))≠ X
? 在計(jì)算機(jī)上可容易地產(chǎn)生成對的PK和SK
? 從已知的PK實(shí)際上不可能推導(dǎo)出SK
? 加密和解密算法都是公開的
雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發(fā)送出去。為了解釋這個過程,請看下面的例子:
(1) Alice需要在銀行的網(wǎng)站做一筆交易,她的瀏覽器首先生成了一個隨機(jī)數(shù)作為對稱密鑰。
(2) Alice的瀏覽器向銀行的網(wǎng)站請求公鑰。
(3) 銀行將公鑰發(fā)送給Alice。
(4) Alice的瀏覽器使用銀行的公鑰將自己的對稱密鑰加密。
(5) Alice的瀏覽器將加密后的對稱密鑰發(fā)送給銀行。
(6) 銀行使用私鑰解密得到Alice瀏覽器的對稱密鑰。
(7) Alice與銀行可以使用對稱密鑰來對溝通的內(nèi)容進(jìn)行加密與解密了
數(shù)字簽名和消息認(rèn)證
除了信息的保密之外,如何保證信息的來源方是真實(shí)的,保證收到的信息的可靠的而沒有被非法篡改也是非常重要的。認(rèn)證包括對用戶身份的認(rèn)證和對消息正確性的認(rèn)證兩種方式
用戶認(rèn)證用于鑒別用戶的身份是否是合法用戶,可以利用數(shù)字簽名技術(shù)來實(shí)現(xiàn)的
消息認(rèn)證(又稱報文鑒別)主要用于驗(yàn)證所受到的消息確實(shí)是來自真正的發(fā)送方且未被修改的消息,也可以驗(yàn)證消息的順序和及時性
消息認(rèn)證
用于消息認(rèn)證最常用的是消息認(rèn)證碼(MAC)和散列函數(shù)
消息認(rèn)證碼是在一個密鑰的控制下將任意長的消息映射到一個簡短的定長數(shù)據(jù)分組,將它附加在消息后。接受者通過重新計(jì)算MAC來對消息進(jìn)行認(rèn)證
數(shù)字簽名
又稱公鑰數(shù)字簽名,是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串,這段數(shù)字串同時也是對信息的發(fā)送者發(fā)送信息真實(shí)性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領(lǐng)域的技術(shù)來實(shí)現(xiàn)的,用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補(bǔ)的運(yùn)算,一個用于簽名,另一個用于驗(yàn)證。數(shù)字簽名是非對稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用
當(dāng)通信雙方發(fā)生了下列情況時,數(shù)字簽名技術(shù)能夠解決引發(fā)的爭端:
否認(rèn):發(fā)送方不承認(rèn)自己發(fā)送過某一報文
偽造:接收方自己偽造一份報文,并聲稱它來自發(fā)送方
冒充:網(wǎng)絡(luò)上的某個用戶冒充另一個用戶接收或發(fā)送報文
篡改:接收方對收到的信息進(jìn)行篡改
每個人都有一對“鑰匙”(數(shù)字身份),其中一個只有她/他本人知道(密鑰),另一個公開的(公鑰)。簽名的時候用密鑰,驗(yàn)證簽名的時候用公鑰。又因?yàn)槿魏稳硕伎梢月淇盥暦Q她/他就是你,因此公鑰必須向接受者信任的人(身份認(rèn)證機(jī)構(gòu))來注冊。注冊后身份認(rèn)證機(jī)構(gòu)給你發(fā)一數(shù)字證書。對文件簽名后,你把此數(shù)字證書連同文件及簽名一起發(fā)給接受者,接受者向身份認(rèn)證機(jī)構(gòu)求證是否真地是用你的密鑰簽發(fā)的文件
目前應(yīng)用最廣泛的數(shù)字簽名包括
? Hash簽名
? DSS簽名
? RSA簽名
? ELGamal數(shù)字簽名
采用公鑰的數(shù)字簽名

若Alice要抵賴曾發(fā)送報文給Bob,Bob可將P及DA(P)出示給第三者。第三者很容易證實(shí)Alice確實(shí)發(fā)送X給Bob
如何解決兩個實(shí)體通過網(wǎng)絡(luò)實(shí)現(xiàn)對稱密鑰的共享?
具有公信力的密鑰分發(fā)中心KDC(Key distribution center)來作為諸多實(shí)體間的中介
密鑰分發(fā)中心KDC
Alice、Bob需要共享對稱密鑰
KDC:為每個注冊的用戶提供不同的密鑰服務(wù)
Alice,Bob在KDC注冊后獲取了自己的對稱密鑰,KA-KDC KB-KDC

當(dāng)Alice獲取Bob的公鑰時(可以從網(wǎng)站、E-mail,甚至軟盤),如何能夠使她相信這就是Bob的公鑰,而不是Trudy的?
具有公信力的認(rèn)證機(jī)構(gòu)CA(Certification authority)
認(rèn)證機(jī)構(gòu)CA為特定的實(shí)體管理公開密鑰。實(shí)體(個人或路由器)可以在CA注冊公開密鑰
實(shí)體提供“身份證明”給CA,CA創(chuàng)建信任狀給實(shí)體與公開密鑰進(jìn)行綁定,由CA對信任狀進(jìn)行數(shù)字簽名
當(dāng)Alice需要Bob的公開密鑰時:
獲取Bob信任狀(從Bob或其他什么地方),把CA提供的公開密鑰對Bob的信任狀進(jìn)行認(rèn)證和解碼,從而得到Bob的公開密鑰

?既然是加密,那肯定是不希望別人知道我的消息,所以只有我才能解密,所以可得出公鑰負(fù)責(zé)加密,私鑰負(fù)責(zé)解密;同理,既然是簽名,那肯定是不希望有人冒充我發(fā)消息,只有我才能發(fā)布這個簽名,所以可得出私鑰負(fù)責(zé)簽名,公鑰負(fù)責(zé)驗(yàn)證
整體過程
1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰

2.鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把

3.蘇珊要給鮑勃寫一封保密的信。她寫完后用鮑勃的公鑰加密,就可以達(dá)到保密的效果

4.鮑勃收信后,用私鑰解密,就看到了信件內(nèi)容。這里要強(qiáng)調(diào)的是,只要鮑勃的私鑰不泄露,這封信就是安全的,即使落在別人手里,也無法解密

5.鮑勃給蘇珊回信,決定采用"數(shù)字簽名"。他寫完后先用Hash函數(shù),生成信件的摘要(digest)

6.然后,鮑勃使用私鑰,對這個摘要加密,生成"數(shù)字簽名"(signature)

7.鮑勃將這個簽名,附在信件下面,一起發(fā)給蘇珊

8.蘇珊收信后,取下數(shù)字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實(shí)是鮑勃發(fā)出的

9.蘇珊再對信件本身使用Hash函數(shù),將得到的結(jié)果,與上一步得到的摘要進(jìn)行對比。如果兩者一致,就證明這封信未被修改過
摘要是不能反推出內(nèi)容的,但是有些不懷好意的人可能根本不想知道信件的內(nèi)容,他就是想讓你相信內(nèi)容是他發(fā)送的而已。但是如果摘要需要進(jìn)行加密,不懷好意的人用他自己的私鑰進(jìn)行加密后,你用真實(shí)發(fā)送方的公鑰是解不開的。所以數(shù)字簽名可以保證內(nèi)容確實(shí)是由發(fā)送方發(fā)送的,而且內(nèi)容沒有被篡改

10.復(fù)雜的情況出現(xiàn)了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。此時,蘇珊實(shí)際擁有的是道格的公鑰,但是還以為這是鮑勃的公鑰。因此,道格就可以冒充鮑勃,用自己的私鑰做成"數(shù)字簽名",寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進(jìn)行解密

11.后來,蘇珊感覺不對勁,發(fā)現(xiàn)自己無法確定公鑰是否真的屬于鮑勃。她想到了一個辦法,要求鮑勃去找"證書中心"(certificate authority,簡稱CA),為公鑰做認(rèn)證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關(guān)信息一起加密,生成"數(shù)字證書"(Digital Certificate)

12.鮑勃拿到數(shù)字證書以后,就可以放心了。以后再給蘇珊寫信,只要在簽名的同時,再附上數(shù)字證書就行了

13.蘇珊收信后,用CA的公鑰解開數(shù)字證書,就可以拿到鮑勃真實(shí)的公鑰了,然后就能證明"數(shù)字簽名"是否真的是鮑勃簽的

"數(shù)字證書"的實(shí)例
1.首先,客戶端向服務(wù)器發(fā)出加密請求

2.服務(wù)器用自己的私鑰加密網(wǎng)頁以后,連同本身的數(shù)字證書,一起發(fā)送給客戶端

3.客戶端(瀏覽器)的"證書管理器",有"受信任的根證書頒發(fā)機(jī)構(gòu)"列表??蛻舳藭鶕?jù)這張列表,查看解開數(shù)字證書的公鑰是否在列表之內(nèi)

4.如果數(shù)字證書記載的網(wǎng)址,與你正在瀏覽的網(wǎng)址不一致,就說明這張證書可能被冒用,瀏覽器會發(fā)出警告

5.如果這張數(shù)字證書不是由受信任的機(jī)構(gòu)頒發(fā)的,瀏覽器會發(fā)出另一種警告

6.如果數(shù)字證書是可靠的,客戶端就可以使用證書中的服務(wù)器公鑰,對信息進(jìn)行加密,然后與服務(wù)器交換加密信息
