文章出處

  計算機系統開發安全是永遠都不能回避的問題,這里我想寫一篇關于計算機安全的筆記,便于我以后相關問題和知識的查找,今天的文章不講如何去寫加密解密程序,而是宏觀的介紹加密加密的相關知識,從整體把控加密解密所涉獵的方方面面,我后面博客會講解java里實現這些算法的方式,本文作為其鋪墊。

  安全技術的目標:

  安全技術的目標包括九個方面,它們分別是:

1)         保密性:確保數據僅能被合法的用戶訪問,數據不能被沒有被授權的用戶訪問。

2)         完整性:指數據只能由授權方或以授權的方式進行修改,即數據在傳輸的過程中不能被未授權的用戶修改。

3)         可用性:確保所有的數據僅在適當的時候可以由授權方訪問。

4)         可靠性:主要是確保系統能在規定的條件下、規定的時間內、完成規定的功能時具有穩定的概率。

5)         抗否認性:也稱抗抵賴性,主要確保發送方與接收方在執行各自操作后,對所做的操作不可否認。

6)         可控性:主要是對信息及信息系統實施安全監控。

7)         可審查性:主要是通過審計、監控、抗否認性等安全機制,確保數據訪問者(包括合法用戶、攻擊者、破壞者、抵賴者)的行為有證可查,當網絡出現安全問題時候,提供調查的依據和手段

8)         認證(鑒別):主要是確保數據訪問者和信息服務者的身份真實有效。

9)         訪問控制:主要是確保數據不被非授權方或以未授權方式使用。

  計算機系統安全服務和安全機制:

  計算機系統安全服務和安全機制都是根據OSI安全體系架構里總結出來的,安全服務有5大類,安全機制有8個,安全機制是實現安全服務的手段。

      系統安全服務有五大類,它們分別是:

1)         認證(鑒別)服務:在網絡交互過程中,對收發雙方的身份及數據來源進行驗證。

2)         訪問控制服務:防止未授權的用戶非法訪問資源,包括用戶身份認證和用戶權限確認。

3)         數據保密性服務:防止數據在傳輸中 被破解、泄露。

4)         數據完整性服務:防止數據在傳輸中被篡改。

5)         抗否認性服務:也稱為抗抵賴服務或確認服務。防止發送方與接收方在執行各自操作后,否認各自的操作。

  安全機制包括八類,他們分別是:

1)         加密機制:加密機制就是對數據進行加密,通過對數據加密,可以提供數據的保密性,能夠防止數據在傳輸過程中被竊取。常用的加密算法有:對稱加密算法,例如des算法和非對稱加密算法例如rsa算法。

2)         數字簽名機制:認證(鑒別)服務的一種實現機制,數字簽名可以實施用戶身份認證和消息認證,它具有解決雙方糾紛的能力,在數字簽名技術的基礎上,為了鑒別軟件的有效性又產生了代碼簽名技術,常用    的簽名算法有rsa算法和dsa算法。

3)         訪問控制機制:訪問控制機制對應訪問控制服務,它是通過預先設定好的規則對用戶所訪問的數據進行限制。通常是通過用戶的用戶名和密碼進行驗證,其次是通過用戶的角色和用戶組等規則進行驗證,驗證通過后,用戶才能訪問相應的限制資源。

4)         數據完整性機制:數據完整性機制對應數據完整性服務,它的作用是為了避免數據在傳輸過程中受到干擾,同時防止數據在傳輸過程中被篡改,以提高數據傳輸完整性,通常使用單向的加密算法對數據加密,生成唯一驗證碼,用以校驗數據的完整性,常用的算法有md5算法和sha算法。

5)         認證機制:認證機制是對應認證(鑒別)服務,它的目的是驗證接收方所接收到的數據是否來源于所期望的發送方,通常可以使用數字簽名來進行認證,常用的算法有rsa算法和dsa算法。

6)         業務流填充機制:也被稱為流填充機制,它對應于數據保密服務,業務流填充機制通過在數據傳輸過程中傳輸隨機數的方式,混淆真實的數據,加大數據破解的難度,提高數據的保密性。

7)         路由控制機制:路由控制機制對應訪問控制服務,它為數據發送方選擇安全網絡通信路徑,避免發送方使用不安全路徑發送數據,提高數據的安全性。

8)         公證機制:它對應抗否認服務,它的作用在于解決收發方的糾紛問題,確保雙方利益不受損壞,這就好比現實中簽合同,請第三方機構公證的作用。

  安全機制對安全服務做了詳盡的補充,針對各種服務選擇相應的安全機制可以有效的提高應用的安全性。

         下面介紹下密碼學的一些術語:

1)         明文:待加密的信息。

2)         密文:經過加密后的明文。

3)         加密:將明文轉化為密文的過程。

4)         加密算法:指明文轉化為密文的算法。

5)         加密密鑰:指明文變為密文的轉換算法。

6)         解密、解密算法和解密密鑰是加密、加密算法和加密密鑰的逆向算法。

7)         柯克霍夫原則:數據的安全性是基于密鑰而不是算法本身的保密,也就是說密碼學的加密性都是基于對密鑰的保密,算法不用保密,這個原則是現在密碼學的基本原則。

  下面我來介紹下當前流行的幾種密碼體制,它們分別是:

1)         古典密碼:古典密碼是以語言學為基礎,對文字進行字符轉化,最核心的有兩種加密技巧:移位和替代,移位和替代也是對稱加密算法里常用的算法。移位算法也叫錯位算法,就是講數字重新排序,例如123456變成341265。替代算法也叫置換算法,將明文中的一組字符替代成其他的字符,形成密文,例如:Hello Word變成IFMMP XPSE,每個字母用下一個字母代替。前面兩種基本算法又被演變為很多分支,這些分支加入更加復雜的算法,讓加密更加可靠,下面我將一一介紹這些分支,第一個是單表替代密碼,它會將明文的一個字符用相應密文字符替代,加密過程中從明文字母表到明文字母表一一映射,主要包括移位密碼、乘數密碼、仿射密碼、多項式密碼、密鑰短語密碼,第二種是同音替代密碼,它與單表替代密碼相似,不同的是單個字符明文可以映射密文的幾個字符中的一個,例如a字母可以對應2,5,11,吧、字母對應7,23,67.所以同音替代的密文并不唯一。多表替代密碼,它是指明文中的字符映射到密文空間的字符還依賴于它在上下文中的位置,由多個簡單的代替密碼所構成,例如可能有5個被使用的不同簡單替代密碼,單獨的一個字符用來改變明文的每個字符的位置,弗吉尼亞密碼、博福特密碼、滾動密鑰密碼、弗拉姆密碼、轉子機密碼均為多表替代密碼,二次大戰中的德軍用的恩尼格瑪密碼機正是多表替代密碼應用的典范。多字母替代密碼:明文中字符被成組加密,例如“ABA”可能對應于“RTQ”,ABB可能對應于SLL等,希爾密碼,Playfair密碼均為多字母替代密碼,在一戰中英國人采用了這種密碼。

2)         對稱加密體制是古典密碼學的延續,它使用的技巧任然是替代和移位,對稱加密體制要求加密和解密使用同一個共享的密鑰,解密和加密時互逆運算,通信的雙方共享一個密鑰,這就要求雙方通信前必須商定好密鑰,并且要妥善保存密鑰。對稱加密體制分為兩種:一種是對明文的單個位或字節進行運算,稱為流密碼,也叫序列密碼;另一種將明文信息劃分為不同的組或塊結構,分別對組或塊進行加密和解密。

具體想了解對稱加密算法,參見百度百科:

http://baike.baidu.com/link?url=pRyh8Xhdg70XSvkxxdq6ZwkXSC60HPRq0un2i2QqsEcRdl6S0wRcwNmnErqmxmiR

3)         非對稱加密體制:非對稱加密算法起源于1976年,它和對稱加密算法區別是非對稱加密體制的加密密鑰和解密密鑰是不同的,它分為兩個密鑰:一個叫公鑰可以公開的,一個叫密鑰它是保密的,非對稱加密體制使得發送者和接收者無密鑰傳輸的保密通信成為可能,彌補的對稱加密體制的不足。非對稱加密如果使用公鑰加密,那么就必須用私鑰解密,同樣的如果信息用私鑰加密,那么就得用公鑰解密,非對稱加密可以用于支持數字簽名和驗證。非對稱加密算法的安全性依賴于計算復雜度的難題,通常來自于數論,例如當前流行的非對稱加密算法源自于整數因子分解問題,DSA算法源自于離散對數問題。

詳情可以參見百度百科的解釋:

http://baike.baidu.com/link?url=QRniASLqgfp6tA4ODVESIWSnGE8OiDSr_eqXtTbDK9j-LEGrFLo70h0qsmiOsTLOetAf5don41ilTsn3dvhIHa

4)         哈希函數體制,哈希函數體制也叫離散函數體制或信息摘要體制或者叫單向函數或者叫雜湊函數,它的作用是用于驗證數據的完整性的問題,哈希函數可以給數據創建數字指紋,數字指紋也叫哈希值,哈希值通常是一個短的隨機字母和數字組成的字符串,哈希函數體制的特點是,不管多長的信息都可以進行哈希,不同信息算出的哈希值是不同的,兩個不同的哈希值,那么哈希值的原始數據也不相同,哈希算法不可逆也就是哈希值推不出原始信息,常用的哈希算法有MD信息摘要算法,sha安全散列算法以及mac消息認證碼算法。使用過java語言的人都知道Object類是所有類的基類,它里面有個hashCode方法,這就是每個對象的身份證了,它就使用了哈希算法,還有map鍵值對,如何標記每個對象的唯一性也是使用hash算法完成的,這些都是面試愛問的問題,了解了哈希函數就知道答案了。

哈希函數詳情可以參見百度百科:

http://baike.baidu.com/view/549615.htm?fromId=131153

5)         數字簽名技術:像一些安全性要求較高的網站常常會使用數字簽名技術,數字簽名包含對數據完整性、認證性和不可否認性三個特征。數字簽名針對數字形式存儲的信息進行處理,產生一種帶有操作者身份信息的編碼,執行數字簽名的實體叫做簽名者,簽名過程中使用的算法叫簽名算法,簽名過程中生成的編碼稱為簽名者對該信息的數字簽名。發送者通過網絡將信息連同驗證簽名一起發送給接收者,接收者收到信息和數字簽名后,可以通過一個算法驗證簽名的真偽以及識別對應的簽名者,這個過程叫驗證過程,其過程使用的算法叫驗證算法。數字簽名離不開非對稱加密體制,簽名算法受私鑰控制,并由簽名者保密,驗證者算法受公鑰控制,對外公開。

數字簽名的詳情可以參見百度百科:

http://baike.baidu.com/view/7626.htm?fromId=297231

  加密和解密算法滲透到計算機系統的方方面面,我們都知道它很重要,但是很多人做了多年開發,也不能完整理解整個加密和解密到底要解決那些問題,本文做一下這方面知識的普及。以后我會講解java里實現上面這些算法的方式,有興趣的童鞋可以跟蹤我的博客哦。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()