『壹』 密碼技術(十一)之密鑰
——秘密的精華
在使用對稱密碼、公鑰密碼、消息認證碼、數字簽名等密碼技術使用,都需要一個稱為 密鑰 的巨大數字。然而,數字本身的大小並不重要,重要的是 密鑰空間的大小 ,也就是可能出現的密鑰的總數量,因為密鑰空間越大,進行暴力破解就越困難。密鑰空間的大小是由 密鑰長度 決定的。
對稱密碼DES的密鑰的實質長度為56比特(7個位元組)。
例如,
一個DES密鑰用二進制可以表示為:
01010001 11101100 01001011 00010010 00111101 01000010 00000011
用十六進制則可以表示為:
51 EC 4B 12 3D 42 03
而用十進制則可以表示為:
2305928028626269955
在對稱密碼三重DES中,包括使用兩個DES密鑰的DES-EDE2和使用三個DES密鑰的DES-EDE3這兩種方式。
DES-EDE2的密鑰長度實質長度為112比特(14位元組),比如:
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F
DES-EDE3的密鑰的實質長度為168比特(21位元組),比如:
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96
對稱密碼AES的密鑰長度可以從128、192和256比特中進行選擇,當密鑰長度為256比特時,比如:
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96
B9 42 DC FD A0 AE F4 5D 60 51 F1
密鑰和明文是等價的 。假設明文具有100萬的價值,那麼用來加密這段明文的密鑰也就是具有100萬元的價值;如果明文值1億元,密鑰也就值1億元;如果明文的內容是生死攸關的,那麼密鑰也同樣是生死攸關的。
在對稱密碼中,加密和解密使用同一個密鑰。由於發送者和接收者需要共享密鑰,因此對稱密碼又稱為共享密鑰密碼。對稱密碼中所使用的密鑰必須對發送者和接收者以外的人保密,否則第三方就能夠解密了。
在消息認證碼中,發送者和接收者使用共享的密鑰來進行認證。消息認證碼只能由持有合法密鑰的人計算出來。將消息認證碼附加在通信報文後面,就可以識別通信內容是否被篡改或偽裝,由於「持有合法的密鑰」就是發送者和接收者合法身份的證明,因此消息認證碼的密鑰必須對發送者以外的人保密,否則就會產生篡改和偽裝的風險。
在數字簽名中,簽名生成和驗證使用不同的密鑰,只有持有私鑰的本人才能夠生成簽名,但由於驗證簽名使用的是公鑰,因此任何人都能夠驗證簽名。
對稱密碼和公鑰密碼的密鑰都是用於確保機密性的密鑰。如果不知道用於解密的合法密鑰,就無法得知明文的內容。
相對地,消息認證碼和數字簽名所使用的密鑰,則是用於認證的密鑰。如果不知道合法的密鑰,就無法篡改數據,也無法偽裝本人的身份。
當我們訪問以https://開頭的網頁時,Web伺服器和瀏覽器之間會進行基於SSL/TLS的加密通信。在這樣的通信中所使用的密鑰是僅限於本次通信的一次密鑰,下次通信時就不能使用了,想這樣每次通信只能使用一次的密鑰稱為 會話密鑰 。
由於會話密鑰只在本次通信中有效,萬一竊聽者獲取了本次通信的會話密鑰,也只能破譯本次通信的內容。
雖然每次通信都會更換會話密鑰,但如果用來生成密鑰的偽隨機數生成器品質不好,竊聽者就有可能預測出下次生成會話密鑰,這樣就會產生通信內容被破譯的風險。
相對於每次通信更換的會話密鑰,一直被重復使用的密鑰稱為 主密鑰 。
一般來說,加密的對象是用戶直接使用的信息,這樣的情況下所使用的密鑰稱為CEK(Contents Encryting Key,內容加密密鑰);相對地,用於加密密鑰的密鑰則稱為KEK(Key Encryting Key,密鑰加密密鑰)。
在很多情況下,之前提到的會話密鑰都是被作為CEK使用的,而主密鑰則是被作為KEK使用的。
生成密鑰的最好方法就是使用隨機數,因為米喲啊需要具備不易被他人推測的性質。在可能的情況下最好使用能夠生成密碼學上的隨機數的硬體設備,但一般我們都是使用偽隨機數生成器這一專門為密碼學用途設計的軟體。
在生成密鑰時,不能自己隨便寫出一些像「3F 23 52 28 E3....」這樣的數字。因為盡管你想生成的是隨機的數字,但無論如何都無法避免人為偏差,而這就會成為攻擊者的目標。
盡管生成偽隨機數的演算法有很多種,但密碼學用途偽隨機生成器必須是專門針對密碼學用途而設計的。例如,有一些偽隨機數生成器可以用於游戲和模擬演算法,盡管這些偽隨機數生成器所生成的數列看起也是隨機的,但只要不是專門為密碼學用途設計的,就不能用來生成密鑰,因為這些偽隨機數生成器不具備不可預測性這一性質。
有時候我們也會使用人類的可以記住的口令(pasword或passphrase)來生成密鑰。口令指的是一種由多個單片語成的較長的password。
嚴格來說,我們很少直接使用口令來作為密鑰使用,一般都是將口令輸入單向散列函數,然後將得到的散列值作為密鑰使用。
在使用口令生成密鑰時,為了防止字典攻擊,需要在口令上附加一串稱為鹽(salt)的隨機數,然後在將其輸入單向散列函數。這種方法稱為「基於口令的密碼(Password Based Encryption,PBE)」。
在使用對稱密碼時,如何在發送者和接收者之間共享密鑰是一個重要的問題,要解決密鑰配送問題,可以採用事先共享密鑰,使用密鑰分配中心,使用公鑰密碼等方法,除了上述方法,之前還提到一種解決密鑰配送的問題的方法稱為Diffie-Hellman密鑰交換。
有一種提供通信機密性的技術稱為 密鑰更新 (key updating),這種方法就是在使用共享密鑰進行通信的過程中,定期更改密鑰。當然,發送者和接收者必須同時用同樣的方法來改變密鑰才行。
在更新密鑰時,發送者和接收者使用單向散列函數計算當前密鑰的散列值,並將這個散列值用作新的密鑰。簡單說,就是 用當前密鑰散列值作為下一個密鑰 。
我們假設在通信過程中的某個時間點上,密鑰被竊聽者獲取了,那麼竊聽者就可以用這個密鑰將之後的通信內容全部解密。但是,竊聽者卻無法解密更新密鑰這個時間點之前的內容,因為這需要用單向散列函數的輸出反算出單向散列函數的輸入。由於單向散列函數具有單向性,因此就保證了這樣的反算是非常困難的。
這種防止破譯過去的通信內容機制,稱為 後向安全 (backward security)。
由於會話密鑰在通信過程中僅限於一次,因此我們不需要保存這種秘密。然而,當密鑰需要重復使用時,就必須要考慮保存密鑰的問題了。
人類是 無法記住具有實用長度的密鑰 的。例如,像下面這樣一個AES的128比特的密鑰,一般人是很難記住的。
51 EC 4B 12 3D 42 03 30 04 DB 98 95 93 3F 24 9F
就算勉強記住了,也只過不是記住一個密鑰而已。但如果要記住多個像這樣的密鑰並且保證不忘記,實際上是非常困難的。
我們記不住密鑰,但如果將密鑰保存下來又可能會被竊取。這真是一個頭疼的問題。這個問題很難得到徹底解決,但我們可以考慮一些合理的解決方法。
將密鑰保存生文件,並將這個文件保存在保險櫃等安全地方。但是放在保險櫃里的話,出門就無法使用了。這種情況,出門時就需要隨身攜帶密鑰。而如果將密鑰放在存儲卡隨身攜帶的話,就會產生存儲卡丟失、被盜等風險。
萬一密鑰被盜,為了能夠讓攻擊者花更多的時間才能真正使用這個密鑰,我們可以使用將密鑰加密後保存的方法,當然,要將密鑰加密,必須需要另一個密鑰。像這樣用於密碼加密的密鑰,一般稱為KEK。
對密鑰進行加密的方法雖然沒有完全解決機密性的問題,但在現實中卻是一個非常有效地方法,因為這樣做可以減少需要保管密鑰的數量。
假設計算機上有100萬個文件,分別使用不同的密鑰進行加密生成100萬個密文,結果我們手上就產生了100萬個密鑰,而要保管100萬個密鑰是很困難的。
於是,我們用一個密鑰(KEK)將這100萬個密鑰進行加密,那麼現在我們只要保管者一個KEK就可以了,這一個KEK的價值相當於簽名的100萬個密鑰的價值的總和。
用1個密鑰來代替多個密鑰進行保管的方法,和認證機構的層級化非常相似。在後者中,我們不需要信任多個認證機構,而只需要信任一個根CA就可以了。同樣的,我們也不需要確保多個密鑰的機密性,而只需要確保一個KEK的機密性就可以了。
密鑰的作廢和生成是同等重要的,這是因為密鑰和明文是等價的。
假設Alice向Bob發送了一封加密郵件。Bob在解密之後閱讀了郵件的內容,這時本次通信所使用的密鑰對於Alice和Bob來說就不需要了。不在需要的密鑰必須妥善刪除,因為如果被竊聽者Eve獲取,之前發送的加密郵件就會被解密。
如果密鑰是計算機上的一個文件,那麼僅僅刪除這個文件是不足以刪除密鑰的,因為有一些技術能夠讓刪除的文件「恢復」。此外,很多情況下文件的內容還會殘留在計算機的內存中,因此必須將這些痕跡完全抹去。簡而言之,要完全刪除密鑰,不但要用到密碼軟體,還需要在設計計算機系統時對信息安全進行充分的考慮
如果包含密鑰的文件被誤刪或者保管密鑰的筆記本電腦損壞了,會怎麼樣?
如果丟失了對稱密鑰密碼的共享密鑰,就無法解密密文了。如果丟失了消息認證碼的密鑰,就無法向通信對象證明自己的身份了。
公鑰密碼中,一般不太會發送丟失公鑰的情況,因為公鑰是完全公開的,很有可能在其他電腦上存在副本。
最大的問題是丟失公鑰密碼的私鑰。如果丟失了公鑰密碼的私鑰,就無法解密用公鑰密碼加密的密文了。此外,如果丟失了數字簽名的私鑰,就無法生成數字簽名了。
Diffie-Hellman密鑰交換(Diffie-Hellman key exchange)是1976年由Whitfield Diffie和Martin Hellman共同發明的一種演算法。使用這種演算法,通信雙方僅通過交換一些可以公開的信息就能夠生成共享秘密數字,而這一秘密數字就可以被用作對稱密碼的密鑰。IPsec 中就使用了經過改良的Diffie-Hellman密鑰交換。
2 Alice 生成一個隨機數A
A是一個1 ~ P-2之間的整數。這個數是一個只有Alice知道的密碼數字,沒有必要告訴Bob,也不能讓Eve知道。
Alice計算出的密鑰=Bob計算出的密鑰
在步驟1-7中,雙方交換數字一共有4個,P、G、G A mod P 和 G B mod P。根據這4個數字計算出Alice和Bob的共享密鑰是非常困難的。
如果Eve能歐知道A和B的任意一個數,那麼計算G A*B 就很容易了,然而僅僅根據上面的4個數字很難求出A和B的。
根據G A mod P 計算出A的有效演算法到現在還沒有出現,這問題成為有限域(finite field) 的 離散對數問題 。
Diffie-Hellman密鑰交換是利用了「離散對數問題」的復雜度來實現密鑰的安全交換的,如果將「離散對數問題」改為「橢圓曲線上離散對數問題」,這樣的演算法就稱為 橢圓曲線Diffie-Hellman 密鑰交換。
橢圓曲線Diffie-Hellman密鑰交換在總體流程上是不變的,只是所利用的數學問題不同而已。橢圓曲線Diffie-Hellman密鑰交換能夠用較短的密鑰長度實現較高的安全性。
基於口令密碼(password based encryption,PBE)就是一種根據口令生成密鑰並用該密鑰進行加密的方法。其中加密和解密使用同一個密鑰。
PBE有很多種實現方法。例如RFC2898和RFC7292 等規范中所描述的PBE就通過java的javax.crypto包等進行了實現。此外,在通過密碼軟體PGP保存密鑰時,也會使用PBE。
PBE的意義可以按照下面的邏輯來理解。
想確保重要消息的機制性。
↓
將消息直接保存到磁碟上的話,可能被別人看到。
↓
用密鑰(CEK)對消息進行加密吧。
↓
但是這次又需要確保密鑰(CEK)的機密性了。
↓
將密鑰(CEK)直接保存在磁碟上好像很危險。
↓
用另一個密鑰(KEK)對密鑰進行加密(CEK)吧。
↓
等等!這次又需要確保密鑰(KEK)的機密性了。進入死循環了。
↓
既然如此,那就用口令來生成密鑰(KEK)吧。
↓
但只用口令容易遭到字典攻擊
↓
那麼就用口令和鹽共同生成密鑰(KEK)吧。
↓
鹽可以和加密後的密鑰(CEK)一切保存在磁碟上,而密鑰(KEK)可以直接丟棄。
↓
口令就記在自己的腦子里吧。
PBE加密包括下列3個步驟:
鹽是由偽隨機數生成器生成的隨機數,在生成密鑰(KEK)時會和口令一起被輸入單向散列函數。
密鑰(KEK)是根據秘密的口令生成的,加鹽好像沒有什麼意義,那麼鹽到底起到什麼作用呢?
鹽是用來防禦字典攻擊的 。字典攻擊是一種事先進行計算並准備好候選密鑰列表的方法。
我們假設在生成KEK的時候沒有加鹽。那麼主動攻擊者Mallory就可以根據字典數據事先生成大量的候選KEK。
在這里,事先是很重要的一點。這意味著Mallory可以在竊取到加密會話的密鑰之前,就准備好了大量的候選KEK。當Mallory竊取加密的會話密鑰後,就需要嘗試將它解密,這是准備好了大量事先生成的候選KEK,就能夠大幅度縮短嘗試的時間,這就是 字典攻擊 (dictionary attack)。
如果在生成KEK時加鹽,則鹽的長度越大,候選KEK的數量也會隨之增大,事先生成的的候選KEK就會變得非常困難。只要Mallory還沒有得到鹽,就無法生成候選KEK。這是因為加鹽之後,候選KEK的數量會變得非常巨大。
具有充足長度的密鑰是無法用人腦記憶的。口令也是一樣,我們也無法記住具有充足比特數的口令。
在PBE中,我們通過口令生成密鑰(KEK),在用這個密鑰來加密會話密鑰(CEK)。由於通過口令生成的密鑰(KEK)強度不如由偽隨機數生成器生成的會話密鑰(CEK),這就好像是將一個牢固的保險櫃的鑰匙放在了一個不怎麼牢固的保險櫃保管,因此在使用基於口令的密鑰時,需要將鹽和加密後的CEK通過物理方法進行保護。例如將鹽和加密後的CEK保存到存儲卡隨身攜帶。
在生成KEK時,通過多次使用單向散列函數就可以提高安全性。例如,將鹽和口令輸入單向散列函數,進行1000次的散列函數所得到的散列值作為KEK來使用,是一個不錯的方法。
像這樣將單向散列函數進行多次迭代的方法稱為 拉伸 (stretching)。
該系列的主要內容來自《圖解密碼技術第三版》
我只是知識的搬運工
文章中的插圖來源於原著
『貳』 什麼是數據加密
數據加密,最常見的就是對文件文檔進行加密處理,如最常見的如AES256,512,SM2、SM3等高強度加密演算法,或現在最常用的透明加密技術,一般分為驅動層及應用層透明加密,通過這些加密技術的結合,並開發出的透明加密軟體,如紅線防泄密系統,就完成了數據加密!
『叄』 密碼技術
密碼演算法的特性
1、是否需要事先配送私鑰:對稱密碼需要考慮
2、是否會遭到中間人攻擊:非對稱密碼分發公鑰時需要考慮
3、不可抵賴(可被雙方 和 第三方 用原理證明):非對稱密碼分發公鑰時需要考慮
4、能否保證消息的機密性:即不可破譯
5、能否保證消息的完整性(一致性):即不可篡改
6、不可冒充(偽造)
總結:對稱密碼(解決456)--非對稱密碼之單向通信--> 混合密碼(解決1) --非對稱密碼之數字簽名--> 公鑰證書(解決23)
概念
密碼演算法:加密演算法 + 密鑰 + 解密演算法,簡稱密碼
密鑰空間:密鑰的所有取值
隱蔽式安全性:以密碼演算法不為人所知,來保證機密性
分組密碼:對明文進行分組加密,而非以全文作為輸入
流密碼:不分組,整體加密
破解密文的方法
1、竊聽 + 破譯
2、社會工程學
破解密鑰的方法
1、暴力破解(密鑰窮舉),例如破譯凱撒密碼
2、頻率分析,例如破譯簡單替換密碼
3、選擇明文攻擊(對分組進行明文窮舉)
加密系統的可選技術
隱寫術:將消息藏在更大的數據中,例如藏頭詩
偽隨機數生成器
散列值(摘要,哈希值,指紋):原文經過散列函數(摘要函數,哈希函數,雜湊函數,單向加密)計算出來的值
對稱密碼(共享密鑰密碼):加密和解密用同一個私鑰
非對稱密碼(公鑰密碼):公鑰加密,私鑰解密
消息認證碼
數字簽名
公鑰證書
碰撞:兩個消息的散列值相同
弱抗碰撞性:給定一條消息,很難找到另一條消息與其散列值相同。防止以下情形,Bob持有一個消息A,計算其摘要;Alice找到與A散列值相同的另一條消息B,用B將A調包;由於摘要不變,不被Bob發覺
強抗碰撞性:很難找到兩條散列值相同的消息。防止以下情形,Alice拿兩個摘要相同的消息A和B,將A發給Bob;Bob計算其摘要;Alice再用B將A調包;由於摘要不變,不被Bob發覺
MD5(Message Digest 5)
歷史:1991年Ronald Rivest 設計出MD5
現狀:2004年王小雲提出了MD5碰撞攻擊演算法
SHA
歷史:1993年NIST發布SHA,1995年發布SHA-1,2002年發布SHA-2
現狀:2004年王小雲提出了SHA-0的碰撞攻擊演算法;2005年王小雲提出了SHA-1的碰撞攻擊演算法
SHA-3
歷史:2007年NIST發起選拔SHA-3,2012年Joan Daemen等人設計的Keccak演算法被選定為SHA-3
弱偽隨機數:隨機性
強偽隨機數:不可預測性
真隨機數:不可重現性
隨機數生成器:硬體可以通過熱雜訊實現真隨機數
偽隨機數生成器:軟體只能生成偽隨機數,需要一種子seed來初始化
偽隨機數演算法:線性同餘法、散列法、密碼法等
好的對稱密碼解決:不可破譯
缺點:需要事先配送密鑰
凱撒密碼
加密演算法:字母平移
密鑰:平移位數
解密演算法:逆向平移
破解密鑰:窮舉可能的密鑰
簡單替換密碼
加密演算法:一個字母替換成另一個字母
密鑰:替換表
解密演算法:逆向替換
破解密鑰:對密文的字母 和 字母組合進行頻率分析,與通用頻率表對比;用破譯出來的明文字母,代入密文,循環分析
Enigma密碼
發明者:德國人Arthur Sherbius
加密演算法:雙重加密,每日密鑰作為密鑰1,想一個密鑰2;用密鑰1加密密鑰2,得到密鑰2密文;用密鑰2加密消息;將密鑰2密文和消息密文一起發出
密鑰:密鑰冊子記錄的每天不同的密鑰
解密演算法:用每日密鑰解密密鑰2密文,得到密鑰2;用密鑰2解密消息密文
破譯者:Alan Turing 圖靈
DES密碼(Data Encryption Standard)
歷史:1974年IBM公司的Horst Feistel開發出了Lucifer密碼,1977年被美國國家標准學會(American National Standards Institute,ANSI)確定為DES標准
加密演算法:以64比特為一組,進行16輪運算。在一輪中,把一組分為左側和右側,並從密鑰中提取子密鑰;輪函數用一側和子密鑰生成一個比特序列,用這個比特序列對另一側進行異或運算(XOR)
密鑰:長度56位
破譯:可在現實時間內被暴力破解
三重DES密碼(triple-DES,TDEA,3DES)
加密演算法:將DES重復三次
密鑰:長度 56 * 3
AES密碼(Advanced Encryption Standard)
歷史:1997年,美國國家標准與技術研究院(National Institute of Standards and Technology,NIST)公開募集AES,2000年比利時密碼學家Joan Daemen 和 Vincent Rijmen提交的Rijndael方案,被選為標准
加密演算法:以128比特為一組,進行多輪的替換、平移、矩陣運算
密鑰:有128,192,256三種長度
分組密碼的迭代模式
ECB模式:Electronic CodeBook mode,電子密碼本模式;明文分組 和 密文分組 順序對應。主動攻擊者可以改變密文分組的順序,復制 或 刪除密文分組,使得接受者解密後得到錯誤的明文
CBC模式:Cipher Block Chaining mode,密碼分組鏈接模式;將本組明文 和 上組密文 進行異或運算後,在進行加密;如果被篡改,則不能正常解密
CFB模式:Cipher Feedback mode,密文反饋模式;將本組明文 和 上組密文 進行異或運算後,就得到本組的密文
OFB模式:Output Feedback mode,輸出反饋模式;用隨機比特序列作為初始化組(初始化向量);用初始化組的密文和 明文分組 異或運算,得到密文分組;再次對初始化組密文進行加密運算,得到新的初始化組密文,跟下組明文進行異或運算,以此類推
CTR模式:CounTeR mode,計數器模式;用隨機比特序列作為計數器的初始值,加密後與明文分組進行異或操作,得到密文分組;計數器加一,對下組明文進行加密
對稱密碼中,發送方發送密文時,帶上消息的MAC值A;接收方用相同方法計算出MAC值B;對比A和B,確保消息不被篡改
Encrypt-then-MAC:MAC值為消息密文的散列值
Encrypt-and-MAC:MAC值為消息明文的散列值
MAC-then-Encrypt:MAC值為明文散列值的密文
重放攻擊:攻擊者竊聽到Alice給Bob發送的消息後,重復給Bob發送,Bob以為都是Alice發的
預防重放攻擊:消息里帶有一個id
比對稱密碼:不可篡改、不可偽造
缺點:需要實現配送私鑰
基於口令的密碼:Password Based Encryption,PBE
解決:密鑰(會話密鑰)保存問題
CEK:會話密鑰
KEK:用來加密CEK的密鑰
方案
1、隨機數作為鹽salt,口令 + 鹽 的散列值作為KEK
2、用KEK加密CEK,得到CEK密文
3、只保存鹽和CEK密文,人腦記住口令,丟棄KEK
字典攻擊:如果沒有鹽參與生成KEK,那麼口令決定了KEK,常用的口令對應一個常用KEK字典,攻擊者直接拿常用KEK去解密CEK密文
鹽的作用:KEK由鹽參與形成,不可能有KEK字典包含這樣的KEK
非對稱密碼單向通信,不能單獨用於通信,只用在混合密碼中
方案:Alice 給 Bob 分發加密密鑰(公鑰);Bob用公鑰加密消息,發送給Alice;Alice用解密密鑰(私鑰)解密
總結:消息接收者是密鑰對主人,即私鑰持有人;公鑰用於加密,私鑰用於解密
RSA密碼
歷史:1978年,Ron Rivest、Adi Shamir、Reonard Adleman共同發表了RSA
加密演算法:密文 = 明文 E mode N
公鑰:E 和 N的組合
解密演算法:明文 = 密文 D mode N
私鑰:D 和 N的組合
生成密鑰對
生成質數:用偽隨機數生成隨機數,通過Miller-Rabin測試法測試它是不是質數,直到得到質數
求最大公約數:歐幾里得的輾轉相除法
1、求N
生成兩個512位的質數p和q,N = p * q
2、求L
L是p-1 和 q-1 的最小公倍數
3、求E
用偽隨機數生成(1,L)范圍內的隨機數,直到滿足E和L的最大公約數為1
4、求D
用偽隨機數生成(1,L)范圍內的隨機數,直到滿足(E * D) mod L = 1
破解:對N進行質因數分解,得到p和q,從而求出D。但是對大數的質因數分解,未有快速有效的方法
首次通信為混合密碼,後續通信為對稱密碼
比消息認證碼:無需事先配送私鑰
總體思路:Bob 用會話密鑰加密消息,用Alice的公鑰加密會話密鑰,一起發給Alice;Alice用私鑰解密會話密鑰,用會話密鑰解密消息
會話密鑰:用來加密消息的 對稱密碼的密鑰
1、Alice 給 Bob 發送公鑰
2、Bob隨機生成會話密鑰,用會話密鑰加密消息,得到消息密文
3、Bob用公鑰加密會話密鑰,得到會話密鑰密文
4、Bob將會話密鑰密文和消息密文一起發給Alice
5、Alice用私鑰解密會話密鑰,再用會話密鑰解密消息
6、雙方都有了會話密鑰,從此以後,可以用對稱密碼通信了,帶上消息認證碼
缺點:分發公鑰時,可能遭受中間人攻擊;Alice可能對給Bob發送公鑰這件事進行抵賴
中間人攻擊:中間人從一開始Alice向Bob發放公鑰時,就攔截了消息,得到Alice的公鑰;然後偽裝成Alice,向Bob發送自己的公鑰;從而Bob打算發給Alice的消息,能被中間人解密
不能單獨用於通信,只用在公鑰證書中
明文簽名:Alice用簽名密鑰(私鑰)加密消息的摘要,把摘要密文和消息明文一起發給Bob;Bob解密摘要密文,得到摘要A;算出明文摘要B,對比A和B
總結:私鑰用於加密,公鑰用於解密,與 非對稱加密之單向通信,剛好反過來
公鑰證書:Public-Key Certificate,PKC,簡稱證書
認證機構:Certification Authority,CA
證書標准:國際電信聯盟ITU 和 國際標准化組織ISO指定的X.509標准
流程:
1、Alice在CA登記
2、CA生成Alice的證書明文,包含Alice登記的信息、Alice的公鑰、CA信息
3、CA用自己的私鑰加密證書明文部分,得到數字簽名
4、證書明文部分 和 數字簽名 組成PKC,頒發給Alice
5、Bob向Alice獲取這個PKC,拿本地已有的CA公鑰去驗證證書,就得到了可信的Alice的公鑰
6、從此Alice 和 Bob之間可以進行混合密碼通信
首次通信為從CA獲取PKC,後續通信為混合密碼
比混合密碼:防止了中間人攻擊;CA不能抵賴自己的證書
歷史:1994年網景公司設計出SSL,2014年SSL 3.0被發現安全漏洞,1999年IEIF發布TLS
TLS(Transport Layer Security)是SSL(Secure Socket Layer)的後續版本,在tcp和http之間加一層TLS,就是https
OpenSSL:OpenSSL是實現SSL/TLS協議的工具包
以https為例
0、瀏覽器安裝時,存有幾個CA公鑰;伺服器在CA登記,拿到證書
1、瀏覽器訪問一個https地址,伺服器返回自己的證書
2、瀏覽器根據證書上的CA信息,拿對應的CA公鑰驗證證書,得到可信的伺服器公鑰
3、瀏覽器生成對稱密碼的密鑰(會話密鑰),用伺服器公鑰加密後發給伺服器
4、伺服器解密後得到會話密鑰,從此用對稱密碼通信,帶上消息認證碼
1、生成JKS證書:keytool -genkeypair -alias "別名" -keyalg "RSA" -keystore "D:app.jks"
2、將JKS轉換成PKCS12:keytool -importkeystore -srckeystore D:app.jks -destkeystore D:app.p12 -deststoretype pkcs12
3、將PKCS12轉成pem:openssl pkcs12 -in ./app.p12 -out app.pem
4、提取加密後的私鑰:將pem中 「—–BEGIN ENCRYPTED PRIVATE KEY—–」 至 「—–END ENCRYPTED PRIVATE KEY—–」 的內容拷貝出來,保存為ciphertext.key
5、將密文私鑰轉成明文私鑰:openssl rsa -in ciphertext.key -out plaintext.key
.jks(Java Key Storage):二進制格式,包含證書和私鑰,有密碼保護
.pfx 或 .p12(Predecessor of PKCS#12):二進制格式,包含證書和私鑰,有密碼保護
.pem(Privacy Enhanced Mail):文本格式,包含證書,可包含私鑰,私鑰有密碼保護
.der 或 .cer:二進制格式,只包含證書
.crt(Certificate):可以是der格式,也可以是pem格式,只包含證書
SSL證書:SSL證書必須綁定域名,不能綁定IP
加密服務、密鑰管理服務
『肆』 資料庫加密的實現技術
對數據進行加密,主要有三種方式:系統中加密、客戶端(DBMS外層)加密、伺服器端(DBMS內核層)加密。客戶端加密的好處是不會加重資料庫伺服器的負載,並且可實現網上的傳輸加密,這種加密方式通常利用資料庫外層工具實現。而伺服器端的加密需要對資料庫管理系統本身進行操作,屬核心層加密,如果沒有資料庫開發商的配合,其實現難度相對較大。此外,對那些希望通過ASP獲得服務的企業來說,只有在客戶端實現加解密,才能保證其數據的安全可靠。
1.常用資料庫加密技術
信息安全主要指三個方面。一是數據安全,二是系統安全,三是電子商務的安全。核心是資料庫的安全,將資料庫的數據加密就抓住了信息安全的核心問題。
對資料庫中數據加密是為增強普通關系資料庫管理系統的安全性,提供一個安全適用的資料庫加密平台,對資料庫存儲的內容實施有效保護。它通過資料庫存儲加密等安全方法實現了資料庫數據存儲保密和完整性要求,使得資料庫以密文方式存儲並在密態方式下工作,確保了數據安全。
1.1資料庫加密技術的功能和特性
經過近幾年的研究,我國資料庫加密技術已經比較成熟。
一般而言,一個行之有效的資料庫加密技術主要有以下6個方面的功能和特性。
(1)身份認證:
用戶除提供用戶名、口令外,還必須按照系統安全要求提供其它相關安全憑證。如使用終端密鑰。
(2) 通信加密與完整性保護:
有關資料庫的訪問在網路傳輸中都被加密,通信一次一密的意義在於防重放、防篡改。
(3) 資料庫數據存儲加密與完整性保護:
資料庫系統採用數據項級存儲加密,即資料庫中不同的記錄、每條記錄的不同欄位都採用不同的密鑰加密,輔以校驗措施來保證資料庫數據存儲的保密性和完整性,防止數據的非授權訪問和修改。
(4)資料庫加密設置:
系統中可以選擇需要加密的資料庫列,以便於用戶選擇那些敏感信息進行加密而不是全部數據都加密。只對用戶的敏感數據加密可以提高資料庫訪問速度。這樣有利於用戶在效率與安全性之間進行自主選擇。
(5)多級密鑰管理模式:
主密鑰和主密鑰變數保存在安全區域,二級密鑰受主密鑰變數加密保護,數據加密的密鑰存儲或傳輸時利用二級密鑰加密保護,使用時受主密鑰保護。
(6) 安全備份:
系統提供資料庫明文備份功能和密鑰備份功能。
1.2對資料庫加密系統基本要求
(1) 欄位加密;
(2) 密鑰動態管理;
(3) 合理處理數據;
(4) 不影響合法用戶的操作;
(5) 防止非法拷貝;
1.3資料庫數據加密的實現
使用資料庫安全保密中間件對資料庫進行加密是最簡便直接的方法。主要是通過系統中加密、DBMS內核層(伺服器端)加密和DBMS外層(客戶端)加密。
在系統中加密,在系統中無法辨認資料庫文件中的數據關系,將數據先在內存中進行加密,然後文件系統把每次加密後的內存數據寫入到資料庫文件中去,讀入時再逆方面進行解密就,這種加密方法相對簡單,只要妥善管理密鑰就可以了。缺點對資料庫的讀寫都比較麻煩,每次都要進行加解密的工作,對程序的編寫和讀寫資料庫的速度都會有影響。
在DBMS內核層實現加密需要對資料庫管理系統本身進行操作。這種加密是指數據在物理存取之前完成加解密工作。這種加密方式的優點是加密功能強,並且加密功能幾乎不會影響DBMS的功能,可以實現加密功能與資料庫管理系統之間的無縫耦合。其缺點是加密運算在伺服器端進行,加重了伺服器的負載,而且DBMS和加密器之間的介面需要DBMS開發商的支持。
在DBMS外層實現加密的好處是不會加重資料庫伺服器的負載,並且可實現網上的傳輸,加密比較實際的做法是將資料庫加密系統做成DBMS的一個外層工具,根據加密要求自動完成對資料庫數據的加解密處理。
採用這種加密方式進行加密,加解密運算可在客戶端進行,它的優點是不會加重資料庫伺服器的負載並且可以實現網上傳輸的加密,缺點是加密功能會受到一些限制,與資料庫管理系統之間的耦合性稍差。
資料庫加密系統分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是資料庫加解密引擎。資料庫加密系統將用戶對資料庫信息具體的加密要求以及基礎信息保存在加密字典中,通過調用數據加解密引擎實現對資料庫表的加密、解密及數據轉換等功能。資料庫信息的加解密處理是在後台完成的,對資料庫伺服器是透明的。
按以上方式實現的資料庫加密系統具有很多優點:首先,系統對資料庫的最終用戶是完全透明的,管理員可以根據需要進行明文和密文的轉換工作;其次,加密系統完全獨立於資料庫應用系統,無須改動資料庫應用系統就能實現數據加密功能;第三,加解密處理在客戶端進行,不會影響資料庫伺服器的效率。
資料庫加解密引擎是資料庫加密系統的核心部件,它位於應用程序與資料庫伺服器之間,負責在後台完成資料庫信息的加解密處理,對應用開發人員和操作人員來說是透明的。數據加解密引擎沒有操作界面,在需要時由操作系統自動載入並駐留在內存中,通過內部介面與加密字典管理程序和用戶應用程序通訊。資料庫加解密引擎由三大模塊組成:加解密處理模塊、用戶介面模塊和資料庫介面模塊。
『伍』 如何應對被公開的Oracle口令加密演算法
由於Oracle資料庫被廣泛應用,其口令加密演算法也是備受關注。最早在1993年comp.databases.oracle.server新聞組中有人披露了加密演算法的大部分細節。十年後,一本名為《Special Ops Host and Network Security for Microsoft, Unix and Oracle》的書中補全了演算法最重要的一個環節——DES演算法的KEY。至此,口令加密演算法已無秘密可言。接踵而來的是互聯網上出現多個了Oracle口令破解工具。Oracle在2007年推出的最新版本11g中,使用了新的更安全的加密演算法,但是新演算法的細節很快又在互聯網上被公開。為提供兼容,11g版本保留了11g以前版本使用的加密口令,利用這一漏洞仍然可以對11g版本的加密口令進行破解。
到底怎樣才能保證資料庫口令的安全呢?本文首先介紹Oracle資料庫各版本口令加密演算法的內容,然後針對演算法重點介紹加強資料庫安全性的應對措施。
口令加密演算法
從Oracle7到Oracle 10gR2,使用DES演算法對口令進行加密。對演算法進行分析,可以得出如下結論:口令不區分大小寫,任意大小寫組合均可登錄;由於只使用固定KEY,只要用戶名和口令相同,在任一DB中存放的加密口令都相同;由於採用了用戶名和口令串接的方式,所以用戶aaa、口令bbbccc的加密值與用戶aaabbb、口令ccc完全相同。
Oracle 11g版本的加密口令存放在SYS.USER$表中的SPARE4列中,而PASSWORD列中仍保留以前版本加密口令。由於客戶端計算加密口令需要用到SALT,在建立連接時,伺服器端將SALT明文傳送給客戶端程序。Oracle 11g中新的口令加密演算法中區分大小寫;由於加入了隨機數SALT,兩個不同用戶的口令即便完全相同,計算得到的SHA1的散列值也不同;不同DB中相同用戶相同口令,SHA1散列值也可能不同。
目前,大多數破解工具的工作方式是得到加密口令後,對每一個可能的口令進行加密計算,比較計算結果而確定是否正確。由此,抵禦口令破解可以從三個方面著手:防止加密口令外泄;在加密口令落入黑客手中後,口令也是不可破解的,或盡量增加破解的時間;即便是口令被破解,也是無用的,不能存取資料庫。
防止加密口令泄露
1.應用「最少許可權」原則,盡量限制可存取加密口令用戶的人數
在資料庫中檢查具有存取SYS.USER$或DBA_USERS許可權的用戶,並從不需要的用戶中收回許可權。但是操作並不簡單,這也是資料庫管理工作的特點。每一廠商的軟體中都實現了SQL標准之外的擴充,並且每一版本都有差異。限於篇幅,不可能對所有本文中建議的措施進行詳細的解釋說明,僅以此處檢查許可權為例展示DBA工作的復雜性。本文中如未說明,則默認版本為11g。應用於11g以前版本時,請讀者確認是否需要修改。
檢查許可權主要的工具是數據字典視圖(也可以直接存取SYS用戶的基表,但基表的定義沒有公布,官方不提供技術支持)。視圖DBA_TAB_PRIVS存放了資料庫中數據對象上的授權信息。假定用戶A1和A2可以存取SYS.USER$表,檢查在SYS用戶USER$上有存取許可權的用戶,可執行如下語句:
SELECT GRANTEE FROM DBA_TAB_PRIVS WHERE TABLE_NAME=『USER$』;
我們已經知道用戶A1和A2,都可以存取SYS.USER$表,但為什麼在上面查詢結果中沒有出現呢?這是因為在Oracle的許可權管理中,對一個表的存取許可權還可以通過系統許可權或角色賦予,而DBA_TAB_PRIVS中僅列出了直接的對象許可權的授予信息。對於SYS.USER$表而言,系統許可權SELECT ANY DICTIONARY和角色DBA都包含了這一表的存取許可權。所以完整列出所有可存取這一表的用戶應增加下面兩條查詢語句的結果:
SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE=『SELECT ANY DICTIONARY』;
SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE=『DBA』;
通過上面的查詢語句,還是會遺漏某些用戶。如果把DBA角色授權給另一角色Admin,然後又將Admin角色授權給另一用戶NEWU,則此用戶可存取SYS.USER$表,但在上述三個查詢中並沒有直接列出NEWU的名字(角色Admin會出現在第三個查詢語句的結果中)。
顯然,Oracle的授權構成了一棵樹,完整的信息需要一段PL/SQL程序來完成。(對於11g以前版本,還需要檢查對DBA_USERS視圖有存取許可權的用戶和角色。SELECT_CATALOG_ROLE角色如被授權,則可以存取所有數據字典視圖,但不能存取SYS的基表。)
2.設定對加密口令存取的審計
如果當前系統中只有SYSDBA可以存取USER$,則一個變通辦法是審計SYSDBA的所有操作,其中也包括對USER$的存取。設置初始化參數audit_sys_operations =TRUE,重新啟動資料庫後激活對SYSDBA操作的審計。
審計文件的存放位置為:
11g版本中為:$ORACLE_BASE/admin/SID/ amp/ *.aud
11g以前版本為: $ORACLE_HOME/rdbms/audit/ *.aud。
嚴格限制和監視SYSDBA用戶活動的最好辦法是使用Oracle Database Vault組件。
3.在操作系統級限制對資料庫數據文件的存取
SYSDBA用戶的加密口令存放在$ORACLE_HOME/dbs下的口令文件orapw〈SID〉中。SYS.USER$表同樣需要在數據文件中存放,多數為SYSTEM表空間的第一個數據文件中。此外,EXPORT文件、REDOLOG文件以及TRACE文件中都可能出現加密口令。需要嚴格限制上述文件的存取許可權。
4.防止網路竊聽
在建立連接時,客戶端需要向伺服器端傳送用戶名和口令,並且伺服器端與客戶端需要相互發送這次會話使用的SESSION KEY。Oracle採用Diffie-Hellman KEY交換演算法和自己開發的O3LOGON協議完成上述任務。演算法的細節同樣已在互聯網上被公開。建立連接時上述信息如果被截獲,同樣可以被用來破解口令。更為嚴重的是,如果黑客事先已經獲得加密口令,結合SESSION KEY的信息,則不需要任何破解,執行簡單還原運算就可算出口令明文。
另外,設計SID時不要使用如ORCL、TEST、PROD等常用名字,設定PORT號為遠遠大於1521的數,都可以增加黑客SID掃描的難度和時間。
5. 刪除舊版的加密口令
存放在Oracle 11g資料庫中的以前版本的加密口令是口令破解工具的一個突破口。在沒有兼容性限制的系統中,可以考慮從系統中刪除舊版口令,從而增加破解難度。
具體操作如下:
在SQLNET.ORA中增加一行:SQLNET.ALLOWED_LOGON_VERSION=11(Oracle手冊中格式介紹有錯誤,不能加括弧:…=(11)),指定最低版本。
以SYSDBA登錄後,執行以下語句,刪除舊版口令。
update sys.user$ set password=NULL;
delete from user_history$;
commit;
設置修改後,基於OCI的工具如SQLPLUS、10gR1和10gR2版本都可以正常登錄,而JDBC type-4 則只有11g版本才允許登錄。
提高口令強度
1.禁止使用預設口令,禁止與用戶名同名的口令,禁止字典詞彙的口令
Oracle 11g中提供一個視圖DBA_USERS_WITH_DEFPWD,可以方便地查出系統中使用預設口令的所有用戶,不足的是還有不少遺漏。讀者可以在互聯網找到預設口令的列表,雖然是非官方的,但是比DBA_USERS_WITH_DEFPWD使用的官方的列表更全。破解工具附帶的詞彙表有的包括了大型英文詞典中全部詞彙,並支持詞彙與「123」之類的常用後綴進行組合。需要注意的是,有的詞彙表中已經出現了「zhongguo」這樣的字元串,所以漢語拼音組成的口令也是不安全的。檢查系統中是否存在弱口令的最常用方法就是使用前述口令破解工具進行攻擊。
2.規定口令最小字元集和口令最短長度
口令字元集最小應包括字母、數字和特殊符號,口令長度最短應不少於8位,對於安全性要求高的系統,最短長度應為12位以上。同樣,問題的關鍵在於DBA指定初始口令以及用戶修改口令時保證不違反上述這些規定。每一用戶都對應一個Profile,如在Profile中指定口令驗證函數,則每當創建或修改口令時,會自動檢查是否滿足驗證程序中所設定的條件,如果不滿足,則口令修改失敗。對口令明文進行檢查,顯然要比對加密口令破解效率高。此外,口令創建之時進行檢查可以及時封殺弱口令,不給黑客留下破解的窗口。
指定口令驗證函數的語句為:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION 口令驗證函數名;
上例中,為「DEFAULT」 Profile指定了驗證函數。對用戶進行分類後,應當為每一類用戶分別創建自己的Profile,而不是全部使用DEFAULT。關閉口令驗證函數的語句為:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;
在$ORACLE_HOME/rdbms/admin/下,腳本文件UTLPWDMG.SQL提供了示例的口令驗證函數,執行這一腳本,將創建一名為VERIFY_FUNCTION的函數( Oracle 11g中,增加新函數verify_function_11G )。這一函數可以對口令長度是否同時出現了字母數字元號進行檢查,檢查是否與用戶名同名,也檢查口令是否是幾個最常用的詞彙,如welcome、database1、account1等。最後,口令修改時檢查新舊口令是否過於相似。讀者實際使用時應該根據系統需要對這一函數進行必要的修改和擴充。
3.使用易記憶的隨機口令限定口令長度後,如果口令沒有規律很難記憶,則用戶會採用他們自己的方式記住口令,大大增加了遭受社會工程攻擊的可能性。DBA需要幫助用戶設計一個容易記憶而又不易破解的口令。一個簡單易行的方法是找用戶非常熟悉的一個句子,如One world One dream,然後將每一個空格替換為數字或符號:One3world2One1dream#。
定期更換口令
抵禦口令破解要從多方面著手
資料庫中存在多種許可權用戶,各種授權用戶構成一棵樹
應對口令泄露或被破解的措施是強制定期更換口令,設定口令重復使用限制,規定封鎖口令的錯誤次數上限及封鎖時間。即便是加密口令落入黑客手中,在被破解之前或入侵之前,修改了口令,則口令破解變得毫無意義。為了方便記憶,一般用戶有重新使用之前過期口令的傾向,如果對重用不加控制,則定期更換口令將失去意義。上述對口令的管理仍然是通過Profile完成:
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 30
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 0
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION my_verify_function;
上面語句制定的口令管理政策為:口令的有效期為30天,隨後有7天的寬限期,寬限期後口令「過期」,必須更改口令後才能登錄。只有經過365天後才能重新使用以前的口令。在連續10次輸入口令錯誤後,賬號被封鎖,設定不自動解鎖,必須由DBA手動解除封鎖。口令驗證函數為my_verify_function。
Oracle 11g以前版本,預設設置中沒有設定口令的有效期,而在Oracle 11g中預設設置有效期為180天。程序中直接寫入口令的應用在升級到11g時一定要注意有效期問題,避免半年後應用突然無法自動運行。另外,口令的有效期對SYS用戶不起作用,DBA一定要主動定期更換口令。
另外一個措施是對登錄資料庫伺服器的主機進行限定,如指定網段或指定IP地址。進一步限定客戶端允許執行的程序,如對非本地登錄禁止使用SQLPLUS,只允許執行某特定應用。
認真實施本文中給出的措施後,可以很有效地防止口令被破解。然而我們的目的是提高資料庫系統的安全性,而不僅僅是保證口令不被破解。資料庫系統安全的任何一個環節出現問題,都會導致前功盡棄。黑客的目的是入侵系統盜竊數據,是不會按常理出牌的,會嘗試各種手段方式,如社會工程、安全漏洞、物理入侵等等,而不會執著地在口令破解上與我們較勁。這一點需要我們經常提醒自己,從而切實保證資料庫系統安全。
TechTarget中國原創內容
『陸』 數據加密方式總結
程序開發過程中一般會遇到客戶端與服務端進行數據通信,不可避免的會遇到數據安全問題。為了防止數據在網路傳輸中發生數據泄露,我們常常會用到數據加密。常規的數據加密方式主要有:對稱加密和非對稱加密。
對稱加密主要有3種加密方式:DES加密、3DES加密及AES加密
如上圖所述,對稱加密使用同一個秘鑰,先用秘鑰對需要傳輸的明文數據進行加密,已加密的密文數據經過網路傳輸後,數據接收方通過同一個秘鑰進行解密,將密文數據再轉化成明文數據,完成數據傳輸過程。
但DES加密演算法的安全性不夠好,DES 被證明是可以破解的,明文+密鑰=密文,這個公式只要知道任何兩個,就可以推導出第三個在已經知道明文和對應密文的情況下,通過窮舉和暴力破解是可以破解DES的。
顧名思義,3DES加密就是使用DES演算法加密解密3次,由於DES加密缺乏安全性,3DES加密3次後安全性大大提高,但損失了一定的速度性能,所以慢慢被更優異的AES加密演算法所取代,3DES演算法可以說是DES加密和AES加密中間的過度品。
AES加解密過程和DES加解密過程類似,AES標准支持可變分組長度,分組長度可設定為32 比特的任意倍數,最小值為128 比特,最大值為256 比特,安全性大大增加,加解密速度也還可以。
RSA的安全基於大數分解的難度。其公鑰和私鑰是一對大素數(100到200位十進制數或更大)的函數。從一個公鑰和密文恢復出明文的難度,等價於分解兩個大素數之積(這是公認的數學難題)。
同時由於RSA的私鑰不用在網路上傳輸,避免了秘鑰泄露,因此安全性能大大提高。
RSA加解密速度測試:
通過上表可以發現,RSA加密速度還比較快,但解密速度會隨著加密數據的大小慢很多,加密6KB大小的數據用時0秒,解密用時1秒還可以接受。但對1M左右的數據進行解密,花費了5分多鍾的時間,在實際開發過程中就會顯得很慢,所以RSA演算法一般用於加密數據量較小的應用場景。
『柒』 計算機網路安全數據加密技術的運用
計算機網路安全數據加密技術的運用
在計算機網路的運行過程中,應用系統離不開數據的傳輸,不論是各種服務還是最基礎的運行都要通過數據的傳輸,所以,保證數據傳輸的安全是保證計算機網路安全的核心。認證認證技術的應用能有效的核實用戶的身信息,保障網路安全,其中最為常見的認證方式是數字簽名技術。
摘要: 隨著信息化普及范圍越來越大,網路安全問題也逐漸凸顯,導致網路外部與內部均面臨這多項威脅,而加密技術則是保障網路安全的關鍵性技術,在網路安全防護中起到了決定性作用。本文基於上述背景,從計算機網路安全現狀和加密技術應用現狀出發進行分析,並以此為依據,本文主要探討了數據加密技術在網路安全中的具體應用。
關鍵詞: 計算機網路安全;數據加密;應用
隨著計算機網路普及范圍越來越大,網路安全事件也越來越多,因此,用戶對網路的安全性能要求越發嚴格,尤其是信息數據的保密性能。有效保障網路安全是目前面臨的巨大挑戰,一方面,老式的防病毒技術已無法滿足現在的加密標准要求,另一方面,網路上的惡意攻擊事件層出不窮。加密技術則是解決網路安全問題的主要技術,目前在計算機網路中應用廣泛,從一定程度上起到了提高信息數據傳輸的安全性。
1計算機網路安全受到威脅的主要因素
1.1操作系統存在漏洞
計算機的操作系統是所有程序運行的環境,作為整個電腦的支撐軟體,操作系統如果存在隱患,入侵者就有可能通過竊取用戶口令進一步操作整個計算機的操作系統,得到用戶個人殘留在各個程序中的個人信息;如果系統的CPU程序、系統掌管內存存在隱患,入侵者就可以利用漏洞導致計算機或伺服器癱瘓;如果系統在網路安裝程序、上傳文件等地方出現安全漏洞,在用戶的傳輸過程中入侵者就可以利用間諜程序進行監視,這些隱患都是通過不安全的程序進入操作系統,所以在日常操作的過程中,要盡量避免使用陌生軟體。
1.2網路安全隱患
網路是獲取和發布各類信息十分自由的平台,這種自由也導致了網路面臨的威脅較多。網路安全攻擊有傳輸線攻擊、計算機軟體的硬體攻擊、網路協議攻擊等,其中網路協議不安全因素最為關鍵。計算機協議主要有TCP/IP協議,FTPNFS等協議,如果入侵者利用協議中存在的漏洞,就能通過搜索用戶名得到機器的密碼口令,對計算機的防火牆進行攻擊。
2數據加密技術的原理
在計算機網路的運行過程中,應用系統離不開數據的傳輸,不論是各種服務還是最基礎的運行都要通過數據的傳輸,所以,保證數據傳輸的安全是保證計算機網路安全的核心。數據加密技術是按照某種演算法,將原來的文件或數據進行處理,使與原來的“明文”變為一段不可讀的代碼的“密文”,這種代碼只有通過相應的密鑰才能被讀取,顯示其原來的內容,通過這種方式達到保護數據不被入侵者竊取、閱讀的目的。
3數據加密技術在計算機網路安全中的應用
3.1數據加密
按照確定的密碼演算法將敏感的明文數據轉換成難以識別的密文數據,通過使用不同密鑰,可用同一種演算法把相同的明文加密為不同密文的數據保護方法叫做數據加密。數據加密的方式主要有節點加密,鏈路加密和端到端加密。在“網上銀行”興起的前提下,銀行網路系統的安全問題十分重要,數據加密系統作為新的安全措施顯現出許多優點,得到了各大銀行中採用,通過數據加密技術和網路交換設備的聯動,即在交換機或防火牆在運行過程中,各種數據流信息會上報安全設備,數字加密系統對上報的信息和數據流進行檢測。在發現網路安全隱患時進行針對性的動作,並將安全事件的.反應動作發送給防火牆。通過交換機或防火牆精確地關閉或斷開埠,取得了很好的安全效果
3.2密鑰技術
密鑰的作用是加密和解碼數據,分私人和公用兩種。私人密鑰的安全性現對較高,因為得到了使用雙方的認可,但當目的不同所需的密鑰不同時會出現麻煩和錯誤,而公用密鑰操作簡單,可以彌補這個缺點。在操作時傳輸方用公用密鑰,接收方用私人密鑰,就很好的解決了問題,並且數據安全性較高。例如:使用信用卡時,商家的終端解密密鑰能解開並讀取用戶信息,再將信息發送到發行信用卡的公司,能確定用戶使用許可權但不能獲取用戶信息,達到方便且安全的效果。
3.3數總簽名
認證認證技術的應用能有效的核實用戶的身信息,保障網路安全,其中最為常見的認證方式是數字簽名技術。此技術以加密技術為基礎,對加密解密技術方式進行核實,採用最多的應用是公用密鑰的數字簽名和私人密鑰的數字簽名。如上文所述,私人密鑰的數字簽名是通過雙方認證的,可能會存在一方篡改信息的情況,此時要引入第三方認證,公用密鑰就避免了這種麻煩。例如在國內稅務行業中,數字簽名認證為網上稅務業務的辦理提供了安全保障。
4結語
綜上,隨著經濟的發展,信息時代的更新十分迅速,網路惡意攻擊和木馬病毒等也層出不窮,操作系統技術再高還是會有安全漏洞。所以,建立完善的防護體系,注重管理網路安全應用才能有效的保護信息安全,因此,技術人員要跟隨網路發展的腳步,不斷完善安全防護系統,才能更好的保護用戶信息安全。
參考文獻
[1]郭其標.基於同態加密的無線感測器網路安全數據融合分析[J].網路安全技術與應用,2015,(5):76-79.
[2]於海龍.網路安全中的信息加密[J].青春歲月,2015,(4):574-575.
[3]李帥.淺析加密技術在網路安全中的應用[J].電腦知識與技術,2015,11(18):23-24,28.
;『捌』 數據加密方式有哪些
對稱加密:三重DES、AES、SM4等
非對稱加密:RSA、SM2等
其他的保護數據隱私的方法還有同態加密、差分隱私、安全多方計算等
目前我們公司一直和上海安策信息合作的,安策信息研發了好幾種數據加密工具,包括加密狗、加密機、動態口令、加密工具等網路也有很多相關資料。