FreeBSD連載(73):認証與加密

2000年1月14日 13:25 王波

第8章 系統與網路安全

  當將電腦連接到Internet上的時候,那麼電腦就對整個網路開放連接許可。這在通過網路為用戶提供網 絡服務的同時,也帶來了電腦系統會遭受非法使用或破壞的危險。然而既然要對外提供服務,就只能通過維護和管理來增加 安全性,而不能因為害怕風險就不提供網路服務。因此安全問題是連接到Internet的網路系統需要特別注意的問題之 一。

  毫無疑問,FreeBSD是一種具備相當高的安全性的操作系統,提供了各種不同的訪問控制、加密和認証等安全 特性。然而,出於使用方便的考慮,FreeBSD並沒有將安全問題看作唯一的需求,有些傳統Unix提供的服務,雖然 會帶來一定的安全問題,但也不能簡單的屏蔽。假如需要,可以根據具體情況堵上這些具備輕微危險的漏洞,進一步增強安全 性。

  FreeBSD不但能對自己系統提供安全保障,也能用作提供網路安全的工具。它的網路能力非常強大,能用於設 置功能全面的防火牆系統,保障網路內其他電腦系統的安全性。

  • 網路安全概念

  網路安全的問題隨著Internet的發展,也越來越受到人們的關注。這主要原因是由於Internet和Unix 是一個開放的系統,所有的使用者都能對系統進行研究並提出問題,這樣就針對安全性提出了很多問題。在Internet 上也發生過相當多的安全問題,使得安全問題進一步為大家所關注。如果基於此就對Internet缺乏信心,也是 不必要的,Internet雖然不是一個安全性很高的網路系統,然而也不是象想象的那樣不可信賴的,主要是因為Internet 的開放性,使得很多安裝問題比較公開。而只要正確使用它,同樣也能保証安全性。

  對待安全問題有兩種不同的態度,一種為封閉的態度,認為將問題隱藏起來是最好的解決安全問題的辦法。隱藏起來 不被發現當然就避免了安全問題,然而人們也沒有辦法去証明不會有人發現這個問題,或者說保証掌握安全漏洞的人不會出於 各種考慮而利用這個安全問題。很多商業軟體都採用這種態度,事實上很多軟體本身安全性很低,到了安全專家和攻擊者那裡 ,其漏洞就很容易被發現。另一種更為積極的態度,認為安全問題不應該隱藏起來,只有通過從不了解到了解並解決安全問題 的不斷的、動態過程,才能真正保証系統的安全性。由於這種態度,一方面系統的使用者至少可以了解哪些是安全的,哪些存 在問題,從而避開問題而不必擔心被欺騙,同樣採用這種方法開發的軟體,其安全漏洞能被很快發行並被糾正,如果一個軟體 經過了眾多Internet使用者的考驗,其中不乏專家,使用者就不必擔心其中還有十分嚴重的安全漏洞了。

  Unix用戶大部分都是持後一種態度的Internet使用者,不斷學習是網路安全的一個獨立的、而又非常重 要的方面。盡管網路上的攻擊者能夠從Internet上獲得關於網路安全漏洞的技術方法,同樣管理員也能獲得這些技術 ,並能及時彌補漏洞。事實上很多導致系統漏洞的問題其實是Internet上早以解決的問題,通過參加相關的安全組織 或通過網路定期查閱其報告,就能不受這些系統安全漏洞的影響。

  Internet上最著名的一個安全組織是CERT,它提供安全方面的建議,並通過Internet發布報告 ,這些報告內容包括各種操作系統的問題和漏洞,以及相應的解決辦法。其主頁為http://www.cert.org ,建議所有關心網路安全的使用者都經常查閱他們提供的資源,從中選擇與自己使用的系統相關的內容。

  很多網路安全問題發生的原因不在於入侵者攻擊手段的高明,而是由於系統管理員的不稱職造成的,而合格的系統管 理員能跟蹤自己操作系統暴露出來的問題,並根據Internet上的建議堵上這些漏洞,國外的很多公司還聘用專業的網 絡安全顧問,這些顧問的任務之一就是及時發現系統問題,提示管理員進行系統修正。

  • 認証與加密

  為了區分合法用戶和非法使用者,就需要對用戶進行認証。標準的Unix認証用戶的過程是,用戶輸入密碼,密碼 傳輸到系統程序中,由系統程序對密碼進行加密,並與系統中的密碼密文進行比較來判斷密碼是否正確。在這種方法中,如果 要通過網路認証,就要將密碼以明文形式在網路中傳輸,因此就存在被竊聽的危險。

  此外,流行的認証方式還有S/key,Kerberos,Radius等方式,其中S/key是使用一次性的 密碼,這樣即使密碼被竊聽也無關緊要,其然而使用起來卻比較煩瑣,使用S/key的用戶可能需要打印出長長的密碼來幫 助輸入正確的密碼。Kerberos和Radius認証方式能保証密碼不被竊聽,但他們是在伺服器和客戶機都支持相應 的認証方式的條件下才能使用,因而需要更複雜的設置。

  目前Kerberos V認証方式比較流行,Windows 2000中也將採用這種認証方式。但在FreeBSD 中提供的是Kerberos IV認証方式。需要注意的是,Kerberos V和Kerberos IV差異 較大,是兩個互不兼容的獨立版本。

  通常使用的加密算法為DES算法,經實踐証明它是一種很有效加密算法,雖然Unix上使用的密鑰長度為56位 ,還不足夠安全。因為在Internet上,已經有人通過多台電腦合作計算,通過幾個月時間破解了使用它加密的內容 。但對於一般的安全性,加上選擇得當的密碼,56位的DES算法也足夠用了。如果要提供更高的安全性,可以使用更長的 密鑰,或者使用另外的算法,如IDEA算法、三重DES算法等。

  與安全有關的算法還包括一類單向散列算法,如MD2、MD4、MD5等,這些算法的目的是用於從已有數據中生 成與其他數據不同的少量標識數據,從而區分不同的數據,這樣就能通過這些標識數據分辨不同數據。由於不同的數據使用上 面的算法生成的標識數據只有極少的可能相同,這些算法一般被用於數字簽名,用於保証網路中的檔案傳輸沒有發生錯誤。這 些算法也能用於密碼認証,其中MD4用於認証時存在安全性不高的問題,因而用於認証時一般使用MD5算法。

  FreeBSD預設使用MD5算法用作密碼認証,這並不影響系統的正常執行。

  對於DES絨N滫k來講,加密和解密是使用同一個密鑰,這個密鑰必須秘密保存,一旦泄露就不能保証數據的安全, 但要讓其他使用者獲得加密的信息,就必須告訴他這個密鑰,這樣就很容易泄露密鑰。因此在加密傳輸中,密鑰的傳輸是一個 與數據安全非常相關的問題。另一種不同的思路是使用多個密鑰,例如兩個密鑰,一個加密過的數據只能由另一個來解密,其 中一個密鑰由用戶保存,為私有密鑰,另一個向所有要進行加密傳輸信息的使用者公開,稱為公開密鑰。當他們要向這個用戶 發送信息時,能使用該用戶的公開密鑰加密信息,那麼只有這個用戶能使用自己的私有密鑰能解開信息。同樣這個用戶用自己 的私有密鑰加密信息,那麼其他用戶只能使用他的公開密鑰才能解開,這樣就保証了信息是由這個用戶發出的,而不是其他人 的偽造信息。最著名的公開密鑰加密算法為RSA算法。

  使用公開密鑰算法進行傳輸,就能避免數據被竊聽的問題,常用的使用公開密鑰算法的軟體有ssh,pgp,以及 其他使用SSL的應用程序。

  加密算法的選擇是一個非常關鍵的問題,由於加密算法涉及非常高深的數學問題,因此不是任何人都能發明一個加密 算法。有的人以為使用一個不公開算法本身的專有加密算法會增加安全性,其實不然,未經驗証的加密算法很可能存在漏洞, 在專業密碼學家那裡有很多種方法可以進行破解,在密碼學領域內有很多失敗的例子,即使是非常專業的密碼學專家,發明一 種加密方法也不是一個簡單的事情,未經驗証的算法在其他專業密碼學家的破解下,很容易面臨失敗的危險。因此,應該盡量 選擇已被証明是成熟的加密方法。