計算機網(wǎng)絡(luò)在給我們帶來便利的同時,也存在很多安全隱患,比如信息偽造,病毒入侵,端點監(jiān)聽,SQL 注入等,給我們?nèi)粘I钤斐珊車乐氐挠绊憽?/p>
那么這篇文章我就跟大家聊聊常見的網(wǎng)絡(luò)安全隱患,只作為科普,不能作為網(wǎng)安系列文章。
網(wǎng)絡(luò)安全性威脅的種類
在網(wǎng)絡(luò)通信中可能會受到各種各樣的潛在的安全性威脅,這些威脅總的來講可以大致分為下面幾類:
-
截獲(interception)
:攻擊者從網(wǎng)絡(luò)上竊聽他人的通信內(nèi)容。 -
中斷(interruption)
:攻擊者會強制中斷其他人在網(wǎng)絡(luò)上的通信。 -
篡改(modification)
:攻擊者會修改他人在網(wǎng)絡(luò)上發(fā)出的報文。 -
偽造(fabrication)
:攻擊者會在網(wǎng)絡(luò)上發(fā)出偽造信息產(chǎn)生誤導(dǎo)。
在上面四種網(wǎng)絡(luò)安全類型中,截獲是屬于被動攻擊的,因為截獲主要為了竊聽信息,它并沒有攻擊行為;而中斷、篡改和偽造都是主動攻擊,他們會產(chǎn)生攻擊行為。
這里先來認識一個新的概念叫 PDU ,PDU 的官方解釋是協(xié)議數(shù)據(jù)單元,但是它其實指的就是計算機網(wǎng)絡(luò)這幾層模型里面所描述的數(shù)據(jù)單元,比如應(yīng)用層交換的就是應(yīng)用數(shù)據(jù),TCP 層的 PDU 交換的就是段。
在被動攻擊中,攻擊者只是觀察和分析 PDU ,并沒有對通信內(nèi)容造成干擾。通過觀察和分析 PDU,進而了解通信雙方的通信類型,通信雙方的地址和身份,這種被動攻擊又叫做流量分析(traffic analysis)。
主動攻擊是指攻擊者對通信內(nèi)容中的 PDU 進行各種處理。比如有選擇的更改、替換 PDU 中的記錄,甚至還可以偽造 PDU ,記錄之前截獲的 PDU ,在其他連接中釋放此 PDU ,造成通信干擾和破壞。
主動攻擊還可以細分為下面三種類型:
-
更改報文信息:這個就是我上面說到的替換修改甚至偽造報文信息,對 PDU 的真實性和完整性進行攻擊。
-
拒絕服務(wù):攻擊者會在網(wǎng)絡(luò)上發(fā)送大量的分組,使得目標服務(wù)無法處理大量的分組信息,使得目標服務(wù)器無法提供正常有效的服務(wù),這種攻擊又叫做
拒絕服務(wù) Dos(Denial of Service)
,還有一種由成千上萬個分布式節(jié)點一起對目標服務(wù)器發(fā)起攻擊的方式,叫做分布式拒絕服務(wù) DDos(Distributed Denial of Service)
。 -
連接偽造:攻擊者試圖使用之前記錄下來的信息和身份進行偽造發(fā)起連接請求。
那么我們該如何知道計算機被攻擊了呢?
對于被動攻擊,通常是無法檢測出來的,對于主動攻擊,我們通常會以下面這幾個大前提進行防范:
-
防止析出報文內(nèi)容
-
防止流量分析
-
檢測更改報文內(nèi)容
-
檢測 DDos
-
檢測偽造初始化連接
對于被動攻擊,可以采用各種數(shù)據(jù)的加密技術(shù);對于主動攻擊,可以采用防范措施與加密技術(shù)結(jié)合防范。
還有一種威脅比較大的是惡意程序,會對互聯(lián)網(wǎng)造成比較大的影響,據(jù)史料記載,互聯(lián)網(wǎng)編年體到現(xiàn)在出現(xiàn)比較大規(guī)模影響的病毒有:計算機病毒、計算機蠕蟲、特洛伊木馬、邏輯炸彈、勒索軟件等。
數(shù)據(jù)加密的模型
由于通信存在不安全性,所以出現(xiàn)了加密技術(shù),使用加密技術(shù)對報文進行加密后,再傳到目標服務(wù)器后再進行解密,一般的加密和解密模型如下圖所示:
上圖所示的加密密鑰和解密密鑰所使用的密鑰 K 通常是一串字符串,一般來說會有下面這種公式
Y = Ek(X)
通過加密算法使用加密密鑰對明文 X 進行加密。
解密算法是加密算法的逆運算,再進行解密時如果不使用事先約定好的密鑰 K 就無法完成解密工作。
Dk(Y) = Dk(Ek(x)) = X
這里我們假設(shè)了加密密鑰和解密密鑰是相同的,但真實情況未必一定是相同的,只不過加密密鑰和解密密鑰存在著某種關(guān)聯(lián)性,這個密鑰通常由密鑰中心提供。當(dāng)密鑰進行傳輸時,一定要經(jīng)過安全信道,否則會有安全風(fēng)險。
這里延伸出來了兩個新的概念,密碼編碼學(xué)(cryptography)
和密碼分析學(xué)(cryptanalysis)
。密碼編碼學(xué)著重對密碼進行設(shè)計的學(xué)科,密碼分析學(xué)著重對報文進行分析,提煉出加密所使用明文或者密鑰的學(xué)科。這兩個學(xué)科合起來就是密碼學(xué)。其實密碼學(xué)歸根結(jié)底就是做好加密和解密的這個過程。
對稱加密和非對稱加密
從很早以前人類就有了對通話內(nèi)容進行加密的思想,進入 20 世紀以來,隨著電子信息、線性代數(shù)以及計算復(fù)雜性理論等學(xué)科的研究深入,密碼學(xué)進入了一個新的發(fā)展階段,一共出現(xiàn)了兩種密碼機制:對稱加密和非對稱加密。
對稱加密
所謂的對稱加密,起歸根結(jié)底在于加密和解密的密鑰是相同的。
數(shù)據(jù)加密標準DES(Data Encryption Standard)
就是一種對稱加密的標準,DES 可以說是用途最廣泛的對稱加密算法。
DES 是一種分組密碼,在加密前首先先對整個報文進行分組,每一組都是 64 位的二進制數(shù)據(jù)。然后對每一個 64 位的二進制數(shù)據(jù)進行加密,產(chǎn)生一組 64 位的密文數(shù)據(jù),最后將各組密文串起來,就是整個加密密文。使用的密鑰是 64 位(實際使用 56 位,最后 8 位于奇偶校驗)。
在 DES 分組加密機制中,進行保密的只是加密密鑰,而加密算法是公開的。
不過 DES 的這種加密機制是存在弊端的:由于 DES 會把報文拆開成為一組一組的 64 位數(shù)據(jù),64 位二進制數(shù)據(jù)有 56 位可用,所以數(shù)據(jù)總量是 2 ^ 56 次方,它的密碼生命周期非常段,這個數(shù)據(jù)總量在現(xiàn)在的計算機世界非常容易被破解!在 1999 年當(dāng)時價值 100 萬和 1000 萬美元的超級計算機暴力破解 DES 的密碼分別用了 3.5 小時和 21 分鐘。
在 DES 之后出現(xiàn)了IDEA(International Data Encryption Algorithm)
算法,IDEA 使用的是 128 位密鑰進行加密,這個長度很難被破解了。
非對稱加密
非對稱加密其實還有一個叫法是公鑰密碼加密,非對稱加密使用的是不同的加密密鑰和解密密鑰。
非對稱加密出現(xiàn)的原因大概是基于兩個方面:一是由于對稱加密的密鑰分配問題,二是由于對數(shù)字簽名的要求。在對稱加密中,加密解密雙方用的是同一種密鑰,這是如何做到的呢?一種是事先約定,另外一種是使用互聯(lián)網(wǎng)信使來傳送。在大規(guī)模互聯(lián)網(wǎng)中,用信使來傳輸密鑰顯然是不太合適的,但是如果采用事先約定的方式,那么對于后續(xù)的更新和迭代來說又比較困難。還有一種方式是使用安全系數(shù)比較高的密鑰分配中心(Key Distribution Center),也會使網(wǎng)絡(luò)的成本增加。
同時,一些需要對信息內(nèi)容進行保密的機構(gòu)越來越需要數(shù)字簽名,根據(jù)數(shù)字簽名,對方才知道某項內(nèi)容是由特定的人或者公司產(chǎn)生的。根據(jù)這兩項原因?qū)е铝朔菍ΨQ加密的出現(xiàn)。
非對稱加密主要的算法有三種:RSA、DSA、ECDSA,目前使用最廣泛、最普遍的非對稱加密算法就是 RSA。RSA 采用的是數(shù)論中的大數(shù)分解方式。
非對稱加密的特點是這樣的:
某些能夠生產(chǎn)公鑰和私鑰的密鑰生成器會生產(chǎn)出一對公鑰和私鑰給接受者 B :即加密密鑰 PKB 和 解密密鑰 SKB。發(fā)送者所使用的加密密鑰也是 PKB,這個密鑰是公開的,而接受者的解密密鑰 SKB 是非公開的,接受者 B 特有的。
發(fā)送者利用接受者的密鑰 PKB 通過加密算法 E 對密鑰進行加密,得出了密文 Y 再發(fā)送給接受者 B:
Y = E(PKB(X))
接受者 B 用自己的私鑰通過解密算法 D 對密文 Y 進行解密,得出密文 X :
D(SKB(Y))= D(SKB)( E(PKB(X))) = X
下圖是這個加密解密過程:
這里需要注意一點的是,任何加密方法的安全性都取決于密鑰的長度,以及攻破密文所需要的計算量,而不是簡單的取決于加密本身。
數(shù)字簽名
我們在日常寫信、上交某些材料的時候都需要親筆簽名或者使用手印、印章的方式來驗證真實性,那么在互聯(lián)網(wǎng)中如何驗證其真實性呢?在網(wǎng)絡(luò)通信中,使用數(shù)字簽名的方式來驗證,數(shù)字簽名必須實現(xiàn)下面三點功能:
-
接受者能夠核實發(fā)送者對報文的簽名,確定報文是由發(fā)送者發(fā)出的,別人無法進行偽造,這叫做報文鑒別。
-
接受者確信所收到數(shù)據(jù)和發(fā)送者發(fā)送的數(shù)據(jù)是一致的,沒有被篡改過,這叫做報文完整性。
-
發(fā)送者事后不能抵賴自己發(fā)送的報文,這叫做不可否認。
下面來討論一下數(shù)字簽名的鑒別過程:
首先,發(fā)送者 A 用自己的私鑰 SKA 對報文 A 經(jīng)過算法 D 后得出密文 D(SKA(X)),算法 D 不是解密運算,它只是一個能得到不可讀的密文的算法。A 把經(jīng)過算法 D 運算后得出來的密文傳給 B,B 對其進行驗簽。B 會用 A 的公鑰進行 E 運算,還原出報文 X 。
這里需要注意一點:任何人用 A 的公鑰 PKA 進行 E 運算后都會得出 A 發(fā)送的明文 X ,所以下圖中的 D 和 E 算法并不是加密解密算法。
除了 A 之外沒有人持有 A 的私鑰 SKA ,所以除 A 外沒有人能產(chǎn)生密文 D(SKA(X))。這樣,B 就相信報文 X 是簽名 A 發(fā)送的,這就叫做報文鑒別。如果其他人篡改過報文,但是卻無法使用私鑰 A 的簽名 SKA,那么 B 使用公鑰解密后就知道報文被篡改過,這樣就保證了報文的完整性。如果 A 想要抵賴自己層發(fā)給過報文 B ,那么 B 就可以把 X 以及密文 D(SKA(X))拿給公證的第三者,很容易證明。這就是不可否認。
但是上述過程僅僅對報文進行了簽名,卻并沒有對報文本身進行任何加密操作,如果傳輸?shù)倪^程中被攻擊者截獲到了 D(SKA(X))并且知道發(fā)送者身份的人,就可以通過查閱相關(guān)手冊知道 A 的公鑰,從而得知 A 的明文,這顯然是不安全的,如何解決呢?
需要使用上面的非對稱加密算法再對明文 X 進行加密一波,示意圖如下。
示意圖畫出來,估計大家也好理解,無非就是增加了一步用 B 的公鑰加密,在用 B 的私鑰解密的過程。
-
網(wǎng)絡(luò)安全
+關(guān)注
關(guān)注
10文章
3193瀏覽量
60202 -
計算機網(wǎng)絡(luò)
+關(guān)注
關(guān)注
3文章
341瀏覽量
22244 -
PDU
+關(guān)注
關(guān)注
0文章
94瀏覽量
17032
原文標題:對稱加密與非對稱加密
文章出處:【微信號:cxuangoodjob,微信公眾號:程序員cxuan】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論