計算機系統(tǒng)開發(fā)安全是永遠都不能回避的問題,這里我想寫一篇關(guān)于計算機安全的筆記,,便于我以后相關(guān)問題和知識的查找,,今天的文章不講如何去寫加密解密程序,而是宏觀的介紹加密加密的相關(guān)知識,,從整體把控加密解密所涉獵的方方面面,,我后面博客會講解java里實現(xiàn)這些算法的方式,本文作為其鋪墊,。 安全技術(shù)的目標: 安全技術(shù)的目標包括九個方面,,它們分別是: 1) 保密性:確保數(shù)據(jù)僅能被合法的用戶訪問,數(shù)據(jù)不能被沒有被授權(quán)的用戶訪問,。 2) 完整性:指數(shù)據(jù)只能由授權(quán)方或以授權(quán)的方式進行修改,,即數(shù)據(jù)在傳輸?shù)倪^程中不能被未授權(quán)的用戶修改。 3) 可用性:確保所有的數(shù)據(jù)僅在適當(dāng)?shù)臅r候可以由授權(quán)方訪問,。 4) 可靠性:主要是確保系統(tǒng)能在規(guī)定的條件下,、規(guī)定的時間內(nèi)、完成規(guī)定的功能時具有穩(wěn)定的概率,。 5) 抗否認性:也稱抗抵賴性,,主要確保發(fā)送方與接收方在執(zhí)行各自操作后,,對所做的操作不可否認。 6) 可控性:主要是對信息及信息系統(tǒng)實施安全監(jiān)控,。 7) 可審查性:主要是通過審計,、監(jiān)控、抗否認性等安全機制,,確保數(shù)據(jù)訪問者(包括合法用戶,、攻擊者、破壞者,、抵賴者)的行為有證可查,,當(dāng)網(wǎng)絡(luò)出現(xiàn)安全問題時候,提供調(diào)查的依據(jù)和手段 8) 認證(鑒別):主要是確保數(shù)據(jù)訪問者和信息服務(wù)者的身份真實有效,。 9) 訪問控制:主要是確保數(shù)據(jù)不被非授權(quán)方或以未授權(quán)方式使用,。 計算機系統(tǒng)安全服務(wù)和安全機制: 計算機系統(tǒng)安全服務(wù)和安全機制都是根據(jù)OSI安全體系架構(gòu)里總結(jié)出來的,安全服務(wù)有5大類,,安全機制有8個,,安全機制是實現(xiàn)安全服務(wù)的手段。 系統(tǒng)安全服務(wù)有五大類,,它們分別是: 1) 認證(鑒別)服務(wù):在網(wǎng)絡(luò)交互過程中,,對收發(fā)雙方的身份及數(shù)據(jù)來源進行驗證。 2) 訪問控制服務(wù):防止未授權(quán)的用戶非法訪問資源,,包括用戶身份認證和用戶權(quán)限確認,。 3) 數(shù)據(jù)保密性服務(wù):防止數(shù)據(jù)在傳輸中 被破解、泄露,。 4) 數(shù)據(jù)完整性服務(wù):防止數(shù)據(jù)在傳輸中被篡改,。 5) 抗否認性服務(wù):也稱為抗抵賴服務(wù)或確認服務(wù)。防止發(fā)送方與接收方在執(zhí)行各自操作后,,否認各自的操作,。 安全機制包括八類,他們分別是: 1) 加密機制:加密機制就是對數(shù)據(jù)進行加密,通過對數(shù)據(jù)加密,,可以提供數(shù)據(jù)的保密性,,能夠防止數(shù)據(jù)在傳輸過程中被竊取。常用的加密算法有:對稱加密算法,,例如des算法和非對稱加密算法例如rsa算法,。 2) 數(shù)字簽名機制:認證(鑒別)服務(wù)的一種實現(xiàn)機制,數(shù)字簽名可以實施用戶身份認證和消息認證,,它具有解決雙方糾紛的能力,,在數(shù)字簽名技術(shù)的基礎(chǔ)上,為了鑒別軟件的有效性又產(chǎn)生了代碼簽名技術(shù),,常用 的簽名算法有rsa算法和dsa算法,。 3) 訪問控制機制:訪問控制機制對應(yīng)訪問控制服務(wù),它是通過預(yù)先設(shè)定好的規(guī)則對用戶所訪問的數(shù)據(jù)進行限制,。通常是通過用戶的用戶名和密碼進行驗證,,其次是通過用戶的角色和用戶組等規(guī)則進行驗證,驗證通過后,,用戶才能訪問相應(yīng)的限制資源,。 4) 數(shù)據(jù)完整性機制:數(shù)據(jù)完整性機制對應(yīng)數(shù)據(jù)完整性服務(wù),它的作用是為了避免數(shù)據(jù)在傳輸過程中受到干擾,,同時防止數(shù)據(jù)在傳輸過程中被篡改,,以提高數(shù)據(jù)傳輸完整性,通常使用單向的加密算法對數(shù)據(jù)加密,,生成唯一驗證碼,,用以校驗數(shù)據(jù)的完整性,常用的算法有md5算法和sha算法,。 5) 認證機制:認證機制是對應(yīng)認證(鑒別)服務(wù),,它的目的是驗證接收方所接收到的數(shù)據(jù)是否來源于所期望的發(fā)送方,通??梢允褂脭?shù)字簽名來進行認證,,常用的算法有rsa算法和dsa算法。 6) 業(yè)務(wù)流填充機制:也被稱為流填充機制,,它對應(yīng)于數(shù)據(jù)保密服務(wù),,業(yè)務(wù)流填充機制通過在數(shù)據(jù)傳輸過程中傳輸隨機數(shù)的方式,混淆真實的數(shù)據(jù),,加大數(shù)據(jù)破解的難度,,提高數(shù)據(jù)的保密性。 7) 路由控制機制:路由控制機制對應(yīng)訪問控制服務(wù),,它為數(shù)據(jù)發(fā)送方選擇安全網(wǎng)絡(luò)通信路徑,,避免發(fā)送方使用不安全路徑發(fā)送數(shù)據(jù),提高數(shù)據(jù)的安全性,。 8) 公證機制:它對應(yīng)抗否認服務(wù),,它的作用在于解決收發(fā)方的糾紛問題,確保雙方利益不受損壞,,這就好比現(xiàn)實中簽合同,,請第三方機構(gòu)公證的作用。 安全機制對安全服務(wù)做了詳盡的補充,,針對各種服務(wù)選擇相應(yīng)的安全機制可以有效的提高應(yīng)用的安全性,。 下面介紹下密碼學(xué)的一些術(shù)語: 1) 明文:待加密的信息。 2) 密文:經(jīng)過加密后的明文,。 3) 加密:將明文轉(zhuǎn)化為密文的過程,。 4) 加密算法:指明文轉(zhuǎn)化為密文的算法,。 5) 加密密鑰:指明文變?yōu)槊芪牡霓D(zhuǎn)換算法。 6) 解密,、解密算法和解密密鑰是加密,、加密算法和加密密鑰的逆向算法。 7) 柯克霍夫原則:數(shù)據(jù)的安全性是基于密鑰而不是算法本身的保密,,也就是說密碼學(xué)的加密性都是基于對密鑰的保密,,算法不用保密,這個原則是現(xiàn)在密碼學(xué)的基本原則,。 下面我來介紹下當(dāng)前流行的幾種密碼體制,,它們分別是: 1) 古典密碼:古典密碼是以語言學(xué)為基礎(chǔ),對文字進行字符轉(zhuǎn)化,,最核心的有兩種加密技巧:移位和替代,,移位和替代也是對稱加密算法里常用的算法。移位算法也叫錯位算法,,就是講數(shù)字重新排序,,例如123456變成341265。替代算法也叫置換算法,,將明文中的一組字符替代成其他的字符,,形成密文,例如:Hello Word變成IFMMP XPSE,每個字母用下一個字母代替,。前面兩種基本算法又被演變?yōu)楹芏喾种?,這些分支加入更加復(fù)雜的算法,讓加密更加可靠,,下面我將一一介紹這些分支,,第一個是單表替代密碼,它會將明文的一個字符用相應(yīng)密文字符替代,,加密過程中從明文字母表到明文字母表一一映射,,主要包括移位密碼、乘數(shù)密碼,、仿射密碼,、多項式密碼、密鑰短語密碼,,第二種是同音替代密碼,,它與單表替代密碼相似,不同的是單個字符明文可以映射密文的幾個字符中的一個,,例如a字母可以對應(yīng)2,,5,11,吧、字母對應(yīng)7,23,67.所以同音替代的密文并不唯一,。多表替代密碼,,它是指明文中的字符映射到密文空間的字符還依賴于它在上下文中的位置,由多個簡單的代替密碼所構(gòu)成,,例如可能有5個被使用的不同簡單替代密碼,,單獨的一個字符用來改變明文的每個字符的位置,弗吉尼亞密碼,、博福特密碼、滾動密鑰密碼,、弗拉姆密碼,、轉(zhuǎn)子機密碼均為多表替代密碼,二次大戰(zhàn)中的德軍用的恩尼格瑪密碼機正是多表替代密碼應(yīng)用的典范,。多字母替代密碼:明文中字符被成組加密,,例如“ABA”可能對應(yīng)于“RTQ”,ABB可能對應(yīng)于SLL等,,希爾密碼,,Playfair密碼均為多字母替代密碼,在一戰(zhàn)中英國人采用了這種密碼,。 2) 對稱加密體制是古典密碼學(xué)的延續(xù),,它使用的技巧任然是替代和移位,對稱加密體制要求加密和解密使用同一個共享的密鑰,,解密和加密時互逆運算,,通信的雙方共享一個密鑰,這就要求雙方通信前必須商定好密鑰,,并且要妥善保存密鑰,。對稱加密體制分為兩種:一種是對明文的單個位或字節(jié)進行運算,稱為流密碼,,也叫序列密碼,;另一種將明文信息劃分為不同的組或塊結(jié)構(gòu),分別對組或塊進行加密和解密,。 具體想了解對稱加密算法,,參見百度百科: http://baike.baidu.com/link?url=pRyh8Xhdg70XSvkxxdq6ZwkXSC60HPRq0un2i2QqsEcRdl6S0wRcwNmnErqmxmiR 3) 非對稱加密體制:非對稱加密算法起源于1976年,它和對稱加密算法區(qū)別是非對稱加密體制的加密密鑰和解密密鑰是不同的,,它分為兩個密鑰:一個叫公鑰可以公開的,,一個叫密鑰它是保密的,非對稱加密體制使得發(fā)送者和接收者無密鑰傳輸?shù)谋C芡ㄐ懦蔀榭赡?,彌補的對稱加密體制的不足,。非對稱加密如果使用公鑰加密,那么就必須用私鑰解密,同樣的如果信息用私鑰加密,,那么就得用公鑰解密,,非對稱加密可以用于支持數(shù)字簽名和驗證。非對稱加密算法的安全性依賴于計算復(fù)雜度的難題,,通常來自于數(shù)論,,例如當(dāng)前流行的非對稱加密算法源自于整數(shù)因子分解問題,DSA算法源自于離散對數(shù)問題,。 詳情可以參見百度百科的解釋: 4) 哈希函數(shù)體制,,哈希函數(shù)體制也叫離散函數(shù)體制或信息摘要體制或者叫單向函數(shù)或者叫雜湊函數(shù),它的作用是用于驗證數(shù)據(jù)的完整性的問題,,哈希函數(shù)可以給數(shù)據(jù)創(chuàng)建數(shù)字指紋,,數(shù)字指紋也叫哈希值,哈希值通常是一個短的隨機字母和數(shù)字組成的字符串,,哈希函數(shù)體制的特點是,,不管多長的信息都可以進行哈希,不同信息算出的哈希值是不同的,,兩個不同的哈希值,,那么哈希值的原始數(shù)據(jù)也不相同,哈希算法不可逆也就是哈希值推不出原始信息,,常用的哈希算法有MD信息摘要算法,,sha安全散列算法以及mac消息認證碼算法。使用過java語言的人都知道Object類是所有類的基類,,它里面有個hashCode方法,,這就是每個對象的身份證了,它就使用了哈希算法,,還有map鍵值對,,如何標記每個對象的唯一性也是使用hash算法完成的,這些都是面試愛問的問題,,了解了哈希函數(shù)就知道答案了,。 哈希函數(shù)詳情可以參見百度百科: http://baike.baidu.com/view/549615.htm?fromId=131153 5) 數(shù)字簽名技術(shù):像一些安全性要求較高的網(wǎng)站常常會使用數(shù)字簽名技術(shù),數(shù)字簽名包含對數(shù)據(jù)完整性,、認證性和不可否認性三個特征,。數(shù)字簽名針對數(shù)字形式存儲的信息進行處理,產(chǎn)生一種帶有操作者身份信息的編碼,,執(zhí)行數(shù)字簽名的實體叫做簽名者,,簽名過程中使用的算法叫簽名算法,簽名過程中生成的編碼稱為簽名者對該信息的數(shù)字簽名,。發(fā)送者通過網(wǎng)絡(luò)將信息連同驗證簽名一起發(fā)送給接收者,,接收者收到信息和數(shù)字簽名后,,可以通過一個算法驗證簽名的真?zhèn)我约白R別對應(yīng)的簽名者,這個過程叫驗證過程,,其過程使用的算法叫驗證算法,。數(shù)字簽名離不開非對稱加密體制,簽名算法受私鑰控制,,并由簽名者保密,,驗證者算法受公鑰控制,對外公開,。 數(shù)字簽名的詳情可以參見百度百科: http://baike.baidu.com/view/7626.htm?fromId=297231 加密和解密算法滲透到計算機系統(tǒng)的方方面面,,我們都知道它很重要,但是很多人做了多年開發(fā),,也不能完整理解整個加密和解密到底要解決那些問題,,本文做一下這方面知識的普及。以后我會講解java里實現(xiàn)上面這些算法的方式,,有興趣的童鞋可以跟蹤我的博客哦。 |
|
來自: Y赫爾 > 《夏天的森林-項目經(jīng)驗》