Java安全技術(shù)培訓(xùn)課件(共41張)(PPT 41頁)_第1頁
Java安全技術(shù)培訓(xùn)課件(共41張)(PPT 41頁)_第2頁
Java安全技術(shù)培訓(xùn)課件(共41張)(PPT 41頁)_第3頁
Java安全技術(shù)培訓(xùn)課件(共41張)(PPT 41頁)_第4頁
Java安全技術(shù)培訓(xùn)課件(共41張)(PPT 41頁)_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第16章 Java安全技術(shù) 第1頁,共41頁。主要內(nèi)容16.1 安全基本知識 16.2 Java的安全模型 16.3 Java的密碼學(xué)結(jié)構(gòu) 第2頁,共41頁。16.1 安全基本知識攻擊,保護(hù) 密碼學(xué) ,機(jī)密性 ,認(rèn)證 ,證書完整性 ,認(rèn)可性 審計(jì)和日志 ,安全策略和訪問控制第3頁,共41頁。主要內(nèi)容16.1 安全基本知識 16.2 Java的安全模型 16.3 Java的密碼學(xué)結(jié)構(gòu) 第4頁,共41頁。16.2 Java的安全模型安全模型的演化 Java2 安全模型Java2的安全劃分 應(yīng)用程序安全性小程序安全性 J2SDK安全工具 Java小程序的安全部署 第5頁,共41頁。最初安全模型為沙箱

2、模型 JVMValuable Resources (files,etc)SandBoxRemote CodeLocal code為從開放的網(wǎng)絡(luò)中獲取的非信任代碼的提供了一個(gè)受限制的運(yùn)行環(huán)境。沙箱模型的實(shí)質(zhì)是本地代碼對重要的系統(tǒng)資源(如文件系統(tǒng))有全部的訪問權(quán)限,而下載的遠(yuǎn)程代碼(例如Applet)則不被信任并且僅能訪問沙箱里提供的有限資源 第6頁,共41頁。 JDK 1.1安全模型 JVMValuable Resources (files,etc)SandBoxRemote CodeLocal code使用數(shù)字簽名服務(wù),可以用與 Java 編寫的本地程序類似的方式對待可信的 Applet 第7

3、頁,共41頁。JDK1.2中的新安全體系結(jié)構(gòu)JVMValuable resources(files,etc)PDPDSandboxSecurity policyClass loaderLocal or remote code ProtectionDomain是在策略數(shù)據(jù)庫中指定的,授予 CodeSource 的 Permission 的聚合體。通過 ClassLoader 裝入到 JVM 的每個(gè)類文件被分配給一個(gè)ProtectionDomain。 第8頁,共41頁。Java2 安全模型 BootstrapClass filesSystemClass filesUserClass filesBy

4、tecode VerifierBootstrapClassLoaderSystemClassLoaderClassLoaderSecurityManagerProtection DomainsAccessControllerOperating System , HardwareCodeSource(URL,Certificates)Permissionskeystore第9頁,共41頁。Java2 安全模型Java 安全主要建立在 Java 運(yùn)行時(shí)環(huán)境的三個(gè)方面:ByteCode Verifier(字節(jié)碼驗(yàn)證器)、Security Manager(安全管理器)以及 ClassLoader(類裝

5、入器)。代碼驗(yàn)證(Bytecode Verifier)確保所下載的代碼被恰當(dāng)?shù)馗袷交止?jié)碼(“Java 虛擬機(jī)”指令)沒有違反語言或虛擬機(jī)的安全限制(如,無非法數(shù)據(jù)轉(zhuǎn)換),沒有執(zhí)行指針尋址,內(nèi)部堆棧不能溢出或下溢,以及字節(jié)碼指令將擁有正確的類型參數(shù)。 第10頁,共41頁。安全管理器(SecurityManager) SecurityManager 在嘗試執(zhí)行文件 I/O 和網(wǎng)絡(luò) I/O、創(chuàng)建新的 ClassLoader、操作線程或線程組、啟動(dòng)底層平臺(操作系統(tǒng))上的進(jìn)程、終止“Java 虛擬機(jī)”、將非 Java 庫(本機(jī)代碼)裝入到 JVM、完成某種類型的系統(tǒng)操作以及將某種類型的類裝入到 J

6、VM 中時(shí)激發(fā)運(yùn)行時(shí)訪問控制機(jī)制。例如,Java Applet 沙箱嚴(yán)格地將所下載的 Applet 約束到被認(rèn)為是比較安全的有限的運(yùn)行環(huán)境中。 第11頁,共41頁。權(quán)限(Permission) 一個(gè)權(quán)限允許代碼執(zhí)行的一個(gè)特定的操作,權(quán)限可以是特別具體的,也可以是一般化的。 一個(gè)權(quán)限由三個(gè)部分組成:類型,名稱和操作。類型是必須的,它是實(shí)現(xiàn)了Permission接口的特定的類 permission java.security.AllPermission;permission java.lang.RuntimePermission stopThread;permission java.io.File

7、Permission /tmp/foo, read;第12頁,共41頁。代碼源(Code Sources) 代碼源包含類的從哪里裝載的位置信息和對類簽名信息。一般情況下,這個(gè)位置被表示成一個(gè)URL。如果代碼被簽名,那么代碼源里面包含了關(guān)于簽名者的信息。類可以基于代碼源被賦予一定的權(quán)限。保護(hù)域(Protection Domains)是賦予代碼源的權(quán)限的集合。可以通過策略文件定義。 第13頁,共41頁。策略文件(Policy files) 策略文件是一個(gè)控制沙箱的管理元素。一個(gè)策略文件可以包含一個(gè)或者多個(gè)條目來定義一個(gè)保護(hù)域。每個(gè)條目是賦予代碼源的權(quán)限聲明。一般有兩個(gè)策略文件,一個(gè)全局策略文件,一

8、個(gè)用戶相關(guān)策略文件。全局策略文件影響Java虛擬機(jī)種的所有的實(shí)例。策略文件是一個(gè)文本文件,可以直接進(jìn)行編輯。也可以用Java提供的編輯工具policyTool進(jìn)行編輯。第14頁,共41頁。密鑰庫(Keystores) 通過代碼簽名可以賦予代碼更多的執(zhí)行自由度。如果你確信正在執(zhí)行的代碼來自一個(gè)可信的組織,你可以允許它訪問本地磁盤文件,或者使用打印機(jī)等。被簽名的代碼依賴于公鑰證書,證書被保存在密鑰庫中。開發(fā)者可以使用密鑰庫中的證書對代碼進(jìn)行簽名;一般用戶或者系統(tǒng)管理員可以在執(zhí)行已簽名的代碼時(shí)參考密鑰庫發(fā)現(xiàn)是誰的簽名。第15頁,共41頁。訪問控制器(AccessController) 訪問關(guān)鍵系統(tǒng)資

9、源時(shí),是否允許或者拒絕,具體結(jié)果決定于策略文件的配置。把一段代碼標(biāo)記為具有一定的特權(quán),影響后續(xù)的訪問判斷。獲取當(dāng)前調(diào)用上下文的一個(gè)快照,來自不同上下文的訪問控制判斷可以參照被保存的上下文。做特殊安全檢查第16頁,共41頁。Java2的策略配置文件SecurityManager security = System.getSecurityManager();if (security != null) security. checkPermission (Permission perm );如果這個(gè)請求被允許,checkPermission不返回任何值;如果被拒絕,拋出異常SecurityExcep

10、tion。 grant signedBy signer_names, codeBase URL permission permission_class_name target_name, action,signedBy signer_names;第17頁,共41頁。應(yīng)用程序安全性 在不使用SecurityManager的情況下使用SecurityManager的情況修改策略配置文件第18頁,共41頁。小應(yīng)用程序安全性通過程序說明在命令行中用AppletViewer執(zhí)行Appletviewer writeFile.html第19頁,共41頁。J2SDK安全工具 keytool 管理密鑰庫和證書

11、jarsigner 產(chǎn)生和驗(yàn)證Java簽名 policytool 圖形化的方式管理策略文件。第20頁,共41頁。Keytool1)創(chuàng)建公/私鑰對;2)發(fā)出證書請求到認(rèn)證權(quán)威(CA)3)從認(rèn)證權(quán)威導(dǎo)入證書回復(fù)4)指明屬于其他組織的公鑰是受信任的。Keytool目前能夠處理符合X.509標(biāo)準(zhǔn)的證書。JSSE( Java Secure Socket Extension,JSSE ) 1.0.2以后的版本可以支持pkcs12。第21頁,共41頁。Keytool參數(shù) 參數(shù)描述-genkey產(chǎn)生一個(gè)密鑰對 (一個(gè)公鑰關(guān)聯(lián)一個(gè)私鑰)-import讀取一個(gè)證書或者證書鏈,并存儲到密鑰庫中,同時(shí)用一個(gè)別名進(jìn)行標(biāo)

12、識。-certreq用pkcs10產(chǎn)生一個(gè)證書簽發(fā)請求。-export導(dǎo)出一個(gè)和某個(gè)別名相關(guān)聯(lián)的證書-list打印整個(gè)密鑰庫中的內(nèi)容,或者打印與某個(gè)別名相關(guān)聯(lián)的證書。-storepasswd修改或指定密鑰庫的密碼-keypasswd修改或者指定某一個(gè)密鑰對的訪問密碼-delete刪除密鑰庫中的條目。第22頁,共41頁。KeyTool應(yīng)用D:keytool -genkey -alias javafan -keyalg rsa -validity 750輸入keystore密碼: keystore您的名字與姓氏是什么? Unknown: JavaFan您的組織單位名稱是什么? Unknown: C

13、omputer Science您的組織名稱是什么? Unknown: Chongqing University您所在的城市或區(qū)域名稱是什么? Unknown: Chongqing您所在的州或省份名稱是什么? Unknown: Chongqing該單位的兩字母國家代碼是什么 Unknown: CNCN=JavaFan, OU=Computer Science, O=Chongqing University, L=Chongqing , ST=Chongqing, C=CN 正確嗎? 否: 是輸入的主密碼 (如果和 keystore 密碼相同,按回車): 第23頁,共41頁。用keytool顯示證

14、書的內(nèi)容 D: keytool -v -printcert -file javafan.cerOwner: CN=JavaFan, OU=Computer Science, O=Chongqing University, L=Chongqing ,ST=Chongqing, C=CN發(fā)照者: CN=JavaFan, OU=Computer Science, O=Chongqing University, L=Chongqing , ST=Chongqing, C=CN序號: 43030437有效期間: Wed Aug 17 17:32:39 CST 2005 至: Thu Sep 06 17:

15、32:39 CST 2007認(rèn)證指紋: MD5: CB:AE:97:24:A9:93:4B:34:E2:3B:95:95:70:E7:70:D5 SHA1: E3:32:0C:68:24:34:CB:6E:02:BF:ED:E6:D8:C0:29:AE:66:5C:20:DD第24頁,共41頁。jarsignerJarsigner用于給打包后的Java程序簽名,或者驗(yàn)證簽名。Jarsigner可以在簽名或者驗(yàn)證簽名時(shí),訪問由keytool創(chuàng)建的密鑰庫。 選項(xiàng)描述-storepass訪問密鑰庫時(shí),指定口令-keypass指定私鑰的保護(hù)口令-signedjar指定需要被簽名的jar文件-verif

16、yjar文件的簽名驗(yàn)證-verbose控制是否輸出簽名或者驗(yàn)證過程的詳細(xì)信息-certs與-verify、verbose一起使用,輸出包括每個(gè)簽名證書的信息第25頁,共41頁。policytool Java運(yùn)行時(shí)環(huán)境的安全配置文件java.home/lib/security/java.security(java.home指安裝Java運(yùn)行時(shí)環(huán)境的目錄)中包括兩個(gè)策略文件:java.home/lib/security/java.policy 和 user.home/.java.policy(user.home指用戶主目錄)。PolicyTool缺省修改第二個(gè)文件。 第26頁,共41頁。Java小

17、程序的安全部署 第27頁,共41頁。程序運(yùn)行界面第28頁,共41頁。制作和部署安全小程序步驟編制小程序SimpleScannerApplet 編寫Html文件scanner.html 把程序打包成Jar文件獲取并安裝一個(gè)支持RSA的簽名證書。 用該證書對Jar文件進(jìn)行簽名用sun的Html Convert轉(zhuǎn)換scanner.html部署轉(zhuǎn)換后的html文件和已經(jīng)簽名的jar文件見程序 第29頁,共41頁。主要內(nèi)容16.1 安全基本知識 16.2 Java的安全模型 16.3 Java的密碼學(xué)結(jié)構(gòu) 第30頁,共41頁。16.3 Java的密碼學(xué)結(jié)構(gòu)16.3.1基本概念16.3.2核心類16.3.

18、3消息摘要16.3.4數(shù)字簽名16.3.5數(shù)據(jù)加密/解密第31頁,共41頁。16.3.1基本概念Java 密碼學(xué)結(jié)構(gòu)設(shè)計(jì)遵循兩個(gè)原則: (1) 算法的獨(dú)立性和可靠性;(2) 實(shí)現(xiàn)的獨(dú)立性和相互作用性。Java 2 中主要的密碼學(xué)服務(wù)有以下幾種:數(shù)字簽名、消息摘要、加密/解密密鑰工廠密鑰庫創(chuàng)建與密鑰管理算法參數(shù)產(chǎn)生、管理證書工廠第32頁,共41頁。JDK5.0提供的密碼學(xué)服務(wù)可以通過修改java.home/lib/security/java.security文件安裝密碼學(xué)服務(wù)提供者。缺省情況下,Java運(yùn)行時(shí)環(huán)境已經(jīng)安裝了下面的提供者:vider.1=sun.securi

19、vider.Svider.2=sun.security.rsa.SunRsaSvider.3=.ernal.ssl.Pvider.4=vider.SunJCEvider.5=sun.security.jgss.SunPvider.6=com.sun.security.sasl.Provider見程序第33頁,共41頁。測試程序import java.security.Provi

20、der;import java.security.Security;public class GetProviderInfo public static void main(String args) Provider plist = Security.getProviders();for (int i = 0; i plist.length; i+) System.out.println( + (i + 1) + -Provider name:+ plisti.getName();System.out.println(Provider info: + plisti.getInfo();第34頁

21、,共41頁。16.3.2核心類Security , Provider MessageDigest類 Signature類 Key ,KeyFactory , KeyPair ,KeyPairGenerator SecureRandom 第35頁,共41頁。16.3.3消息摘要使用MD5算法產(chǎn)生消息摘要也可以使用SHA1算法MessageDigest支持MD5和SHA消息摘要算法。調(diào)用getInstance()方法選擇一個(gè)合適的算法;調(diào)用update()方法準(zhǔn)備數(shù)據(jù)輸入緩沖區(qū);digest()方法產(chǎn)生消息摘要;摘要的長度取決于所選擇的算法。使用 MD5產(chǎn)生128位的摘要,使用SHA產(chǎn)生160位的摘要。 第36頁,共41頁。16.3.4數(shù)字簽名Signature類支持?jǐn)?shù)字簽名

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論