與企業(yè)級(jí)應(yīng)用安全相關(guān)的技術(shù)主要有加密技術(shù)、認(rèn)證、授權(quán)和通道安全等——可能還不夠全面。
(1)加密技術(shù)
出于安全性原因而保護(hù)對(duì)信息的訪問仍是使用加密技術(shù)的主要原因。但是,它也正越來越多地用于個(gè)人的標(biāo)識(shí)、認(rèn)證和不可抵賴性。隨著因特網(wǎng)、全球貿(mào)易和其它活動(dòng)的增長,這一點(diǎn)尤為重要。電子郵件和
Web 用戶的身份非常容易隱藏或偽造,而安全認(rèn)證可以向那些用戶提供遠(yuǎn)程交互的可信度。
加密技術(shù)是任何安全性策略的一個(gè)重要組成部分,廣泛使用的兩種加密形式是傳統(tǒng)(或?qū)ΨQ)加密和公鑰(或非對(duì)稱)加密。
對(duì)稱加密,也稱傳統(tǒng)加密或單鑰加密,是公鑰產(chǎn)生之前的一種加密技術(shù)。通常使用分組密碼
(Block Cipher)或序列密碼
(Stream Cipher)實(shí)現(xiàn)對(duì)稱密碼。對(duì)稱加密方案中的五個(gè)基本成分是:明文、加密算法、密鑰、密文和解密算法。
公鑰加密或非對(duì)稱加密是繼加密之后的又一個(gè)加密方法,它是對(duì)安全具有革命性的意思。非對(duì)稱密碼學(xué)的概念是
1976 年由
Whitfield Diffie和
Martin Hellman在
New Directions in Cryptography一文中公開提出的,它是密碼學(xué)中的一個(gè)驚人的成就。公鑰算法依賴于一個(gè)加密密鑰和一個(gè)與之相關(guān)的不同的解密密鑰。公鑰密碼體系主要由明文、加密算法、公鑰和私鑰、密文和解密算法六個(gè)部分組成。
(2)認(rèn)證
認(rèn)證就是校驗(yàn)一個(gè)用戶擁有使用已經(jīng)被企業(yè)用戶注冊機(jī)構(gòu)證明了的身份鑒定的權(quán)限的處理過程。用戶在訪問被保護(hù)的資源前必須首先通過認(rèn)證。根據(jù)用戶提交的憑證信息的種類的不同,主要分為以下兩種認(rèn)證方式。
在用戶名
/口令認(rèn)證方式中,用戶把用戶標(biāo)識(shí)和口令發(fā)送給服務(wù)器。服務(wù)器檢查信息的正確性,如果正確就賦予用戶對(duì)受限資源的訪問權(quán)。安全套接層
(Secure Socket Layer, SSL)協(xié)議可以為用戶名
/口令認(rèn)證提供額外的安全。在
SSL中不僅在客戶端和服務(wù)器端的數(shù)據(jù)傳輸都被加密,
SSL對(duì)整個(gè)連接會(huì)話加密。
在數(shù)字證書認(rèn)證中,當(dāng)一個(gè)
SSL和客戶端建立一個(gè)申請(qǐng)時(shí),服務(wù)器端給客戶端一個(gè)數(shù)字證書,在客戶端確認(rèn)這個(gè)數(shù)字證后,對(duì)應(yīng)的
SSL連接就建立了。也可以使用雙通道
SSL認(rèn)證一種互相認(rèn)證的形式。在雙通道
SSL認(rèn)證中,在客戶端和服務(wù)器端之間的連接線程建立之前,客戶端和服務(wù)器端都同時(shí)必須提供給對(duì)方一個(gè)數(shù)字證書。
(3)授權(quán)
授權(quán)是決定認(rèn)證的用戶是否可以執(zhí)行一些動(dòng)作的工作,例如訪問一處資源。授權(quán)包括聲明性授權(quán)和程序性授權(quán):
聲明性授權(quán)可以由系統(tǒng)管理員執(zhí)行,可以配置系統(tǒng)的訪問權(quán),聲明可以訪問系統(tǒng)中應(yīng)用程序的主體。通過聲明性授權(quán),可以添加、更改或取消用戶訪問特權(quán),而不影響底層應(yīng)用程序代碼。聲明的安全性通過安全結(jié)構(gòu)描述的方式來代表應(yīng)用程序的安全需求,安全結(jié)構(gòu)一般包括安全角色,訪問控制和驗(yàn)證要求等。在
J2EE平臺(tái)中部署描述符充當(dāng)了聲明的安全性的主要工具。部署描述符是組件開發(fā)者和應(yīng)用程序部署者或應(yīng)用程序組裝者之間的交流工具。應(yīng)用程序的開發(fā)者用它來表示應(yīng)用中的安全需求,應(yīng)用程序部署者或應(yīng)用程序組裝者將安全角色與部署環(huán)境中的用戶和組映射起來。在程序運(yùn)行時(shí)容器從部署描述符中提取出相應(yīng)的安全策略,然后容器根據(jù)安全策略執(zhí)行安全驗(yàn)證。聲明的安全性不需要開發(fā)人員編寫任何安全相關(guān)的代碼,一切都是通過配置部署描述符來完成的。
程序性授權(quán)使用
Java應(yīng)用程序代碼進(jìn)行授權(quán)。當(dāng)授權(quán)決定需要更復(fù)雜的邏輯和決定(超出了聲明性授權(quán)的能力范圍)時(shí),程序性授權(quán)是必需的。因?yàn)槌绦蛐允跈?quán)被構(gòu)建到應(yīng)用程序代碼中,所以更改程序性授權(quán)時(shí)可以重寫應(yīng)用程序的部分代碼。可編程的安全性在聲明的安全性的基礎(chǔ)上,使安全敏感的應(yīng)用可以通過調(diào)用被容器提供的
API來對(duì)安全做出決斷。這在聲明性的安全性不足以滿足企業(yè)的安全模型的情況是非常有用的。
(4)通道安全
為了保證通信通道的安全,可以用
SSL和其它特殊的加密通信的辦法,
SSL是用于對(duì)
TCP/IP數(shù)據(jù)流進(jìn)行加密的協(xié)議,同時(shí)還包括了身份認(rèn)證和數(shù)據(jù)完整性驗(yàn)證等內(nèi)容。
SSL的最新版本有時(shí)候被認(rèn)為是
TLS(Transport Layer Security)協(xié)議。
SSL運(yùn)行于
TCP/IP之上,幾乎可以被應(yīng)用于任何類型的面向連接的通信。
SSL安全協(xié)議主要提供三方面的服務(wù):用戶和服務(wù)器的合法性認(rèn)證,加密數(shù)據(jù)以隱藏被傳送的數(shù)據(jù)和保護(hù)數(shù)據(jù)的完整性。
①用戶和服務(wù)器的合法性認(rèn)證
認(rèn)證用戶和服務(wù)器的合法性,使得它們能夠確信數(shù)據(jù)將被發(fā)送到正確的客戶機(jī)和服務(wù)器上??蛻魴C(jī)和服務(wù)器都是有各自的識(shí)別號(hào),這些識(shí)別號(hào)用公開密鑰進(jìn)行編號(hào),為了驗(yàn)證用戶是否合法,
SSL要求用握手交換數(shù)據(jù)進(jìn)行數(shù)字認(rèn)證,以此來確保用戶的合法性。
②加密數(shù)據(jù)以隱藏被傳送的數(shù)據(jù)
SSL協(xié)議所采用的加密技術(shù)既有對(duì)稱密鑰技術(shù),也有公開密鑰技術(shù)。在客戶機(jī)與服務(wù)器進(jìn)行數(shù)據(jù)交換之前,交換
SSL初始握手信息,在
SSL握手中采用了各種加密技術(shù)對(duì)其加密,以保證其機(jī)密性和數(shù)據(jù)的完整性,并且用數(shù)字證書進(jìn)行鑒別。這樣就可以防止非法用戶進(jìn)行破譯。
③保護(hù)數(shù)據(jù)的完整性
SSL協(xié)議采用
Hash函數(shù)和機(jī)密共享的方法來提供信息的完整性服務(wù),建立客戶機(jī)與服務(wù)器之間的安全通道,使所有經(jīng)過
SSL協(xié)議處理的業(yè)務(wù)在傳輸過程中能全部完整準(zhǔn)確無誤地到達(dá)目的地。
SSL 的另一個(gè)非常有用的場合是使用應(yīng)用服務(wù)器的網(wǎng)絡(luò)通信。使用了SSL,連接可以保證不被竊消息不被修改。當(dāng)使用了客戶端和服務(wù)器的身份認(rèn)證,一個(gè)未授權(quán)的用戶很難登錄到你的應(yīng)用服務(wù),他們需要竊取一個(gè)用戶端的密鑰,而不是簡單的口令,才能達(dá)到目的。