版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第16章 Java平安技術(shù) 主要內(nèi)容16.1 平安根本知識(shí) 16.2 Java的平安模型 16.3 Java的密碼學(xué)構(gòu)造 16.1 平安根本知識(shí)攻擊,維護(hù) 密碼學(xué) ,性 ,認(rèn)證 ,證書完好性 ,認(rèn)可性 審計(jì)和日志 ,平安戰(zhàn)略和訪問控制主要內(nèi)容16.1 平安根本知識(shí) 16.2 Java的平安模型 16.3 Java的密碼學(xué)構(gòu)造 16.2 Java的平安模型平安模型的演化 Java2 平安模型Java2的平安劃分 運(yùn)用程序平安性小程序平安性 J2SDK平安工具 Java小程序的平安部署 最初平安模型為沙箱模型 JVMValuable Resources (files,etc)SandBoxRemo
2、te CodeLocal code為從開放的網(wǎng)絡(luò)中獲取的非信任代碼的提供了一個(gè)受限制的運(yùn)轉(zhuǎn)環(huán)境。沙箱模型的本質(zhì)是本地代碼對(duì)重要的系統(tǒng)資源如文件系統(tǒng)有全部的訪問權(quán)限,而下載的遠(yuǎn)程代碼例如Applet那么不被信任并且僅能訪問沙箱里提供的有限資源 JDK 1.1平安模型 JVMValuable Resources (files,etc)SandBoxRemote CodeLocal code運(yùn)用數(shù)字簽名效力,可以用與 Java 編寫的本地程序類似的方式對(duì)待可信的 Applet JDK1.2中的新平安體系構(gòu)造JVMValuable resources(files,etc)PDPDSandboxSecu
3、rity policyClass loaderLocal or remote code ProtectionDomain是在戰(zhàn)略數(shù)據(jù)庫中指定的,授予 CodeSource 的 Permission 的聚合體。經(jīng)過 ClassLoader 裝入到 JVM 的每個(gè)類文件被分配給一個(gè)ProtectionDomain。 Java2 平安模型 BootstrapClass filesSystemClass filesUserClass filesBytecode VerifierBootstrapClassLoaderSystemClassLoaderClassLoaderSecurityManager
4、Protection DomainsAccessControllerOperating System , HardwareCodeSource(URL,Certificates)PermissionskeystoreJava2 平安模型Java 平安主要建立在 Java 運(yùn)轉(zhuǎn)時(shí)環(huán)境的三個(gè)方面:ByteCode Verifier字節(jié)碼驗(yàn)證器、Security Manager平安管理器以及 ClassLoader類裝入器。代碼驗(yàn)證Bytecode Verifier確保所下載的代碼被恰當(dāng)?shù)馗袷交?,字?jié)碼“Java 虛擬機(jī)指令沒有違反言語或虛擬機(jī)的平安限制如,無非法數(shù)據(jù)轉(zhuǎn)換,沒有執(zhí)行指針尋址,內(nèi)部堆棧
5、不能溢出或下溢,以及字節(jié)碼指令將擁有正確的類型參數(shù)。 平安管理器SecurityManager SecurityManager 在嘗試執(zhí)行文件 I/O 和網(wǎng)絡(luò) I/O、創(chuàng)建新的 ClassLoader、操作線程或線程組、啟動(dòng)底層平臺(tái)操作系統(tǒng)上的進(jìn)程、終止“Java 虛擬機(jī)、將非 Java 庫本機(jī)代碼裝入到 JVM、完成某種類型的系統(tǒng)操作以及將某種類型的類裝入到 JVM 中時(shí)激發(fā)運(yùn)轉(zhuǎn)時(shí)訪問控制機(jī)制。例如,Java Applet 沙箱嚴(yán)厲地將所下載的 Applet 約束到被以為是比較平安的有限的運(yùn)轉(zhuǎn)環(huán)境中。 權(quán)限Permission 一個(gè)權(quán)限允許代碼執(zhí)行的一個(gè)特定的操作,權(quán)限可以是特別詳細(xì)的,也可
6、以是普通化的。 一個(gè)權(quán)限由三個(gè)部分組成:類型,稱號(hào)和操作。類型是必需的,它是實(shí)現(xiàn)了Permission接口的特定的類 permission java.security.AllPermission;permission java.lang.RuntimePermission stopThread;permission java.io.FilePermission /tmp/foo, read;代碼源Code Sources 代碼源包含類的從哪里裝載的位置信息和對(duì)類簽名信息。普通情況下,這個(gè)位置被表示成一個(gè)URL。假設(shè)代碼被簽名,那么代碼源里面包含了關(guān)于簽名者的信息。類可以基于代碼源被賦予一定的權(quán)
7、限。維護(hù)域Protection Domains是賦予代碼源的權(quán)限的集合。可以經(jīng)過戰(zhàn)略文件定義。 戰(zhàn)略文件Policy files 戰(zhàn)略文件是一個(gè)控制沙箱的管理元素。一個(gè)戰(zhàn)略文件可以包含一個(gè)或者多個(gè)條目來定義一個(gè)維護(hù)域。每個(gè)條目是賦予代碼源的權(quán)限聲明。普通有兩個(gè)戰(zhàn)略文件,一個(gè)全局戰(zhàn)略文件,一個(gè)用戶相關(guān)戰(zhàn)略文件。全局戰(zhàn)略文件影響Java虛擬機(jī)種的一切的實(shí)例。戰(zhàn)略文件是一個(gè)文本文件,可以直接進(jìn)展編輯。也可以用Java提供的編輯工具policyTool進(jìn)展編輯。密鑰庫Keystores 經(jīng)過代碼簽名可以賦予代碼更多的執(zhí)行自在度。假設(shè)他確信正在執(zhí)行的代碼來自一個(gè)可信的組織,他可以允許它訪問本地磁盤文件,
8、或者運(yùn)用打印機(jī)等。被簽名的代碼依賴于公鑰證書,證書被保管在密鑰庫中。開發(fā)者可以運(yùn)用密鑰庫中的證書對(duì)代碼進(jìn)展簽名;普通用戶或者系統(tǒng)管理員可以在執(zhí)行已簽名的代碼時(shí)參考密鑰庫發(fā)現(xiàn)是誰的簽名。訪問控制器AccessController 訪問關(guān)鍵系統(tǒng)資源時(shí),能否允許或者回絕,詳細(xì)結(jié)果斷定于戰(zhàn)略文件的配置。把一段代碼標(biāo)志為具有一定的特權(quán),影響后續(xù)的訪問判別。獲取當(dāng)前調(diào)用上下文的一個(gè)快照,來自不同上下文的訪問控制判別可以參照被保管的上下文。做特殊平安檢查Java2的戰(zhàn)略配置文件SecurityManager security = System.getSecurityManager();if (securit
9、y != null) security. checkPermission (Permission perm );假設(shè)這個(gè)懇求被允許,checkPermission不前往任何值;假設(shè)被回絕,拋出異常SecurityException。 grant signedBy signer_names, codeBase URL permission permission_class_name target_name, action,signedBy signer_names;運(yùn)用程序平安性 在不運(yùn)用SecurityManager的情況下運(yùn)用SecurityManager的情況修正戰(zhàn)略配置文件小運(yùn)用程序平安
10、性經(jīng)過程序闡明在命令行中用AppletViewer執(zhí)行Appletviewer writeFile.htmlJ2SDK平安工具 keytool 管理密鑰庫和證書 jarsigner 產(chǎn)生和驗(yàn)證Java簽名 policytool 圖形化的方式管理戰(zhàn)略文件。Keytool1創(chuàng)建公/私鑰對(duì);2發(fā)出證書懇求到認(rèn)證權(quán)威CA3從認(rèn)證權(quán)威導(dǎo)入證書回復(fù)4指明屬于其他組織的公鑰是受信任的。Keytool目前可以處置符合X.509規(guī)范的證書。JSSE Java Secure Socket Extension,JSSE ) 1.0.2以后的版本可以支持pkcs12。Keytool參數(shù) 參數(shù)描述-genkey產(chǎn)生一個(gè)
11、密鑰對(duì) (一個(gè)公鑰關(guān)聯(lián)一個(gè)私鑰)-import讀取一個(gè)證書或者證書鏈,并存儲(chǔ)到密鑰庫中,同時(shí)用一個(gè)別名進(jìn)行標(biāo)識(shí)。-certreq用pkcs10產(chǎn)生一個(gè)證書簽發(fā)請(qǐng)求。-export導(dǎo)出一個(gè)和某個(gè)別名相關(guān)聯(lián)的證書-list打印整個(gè)密鑰庫中的內(nèi)容,或者打印與某個(gè)別名相關(guān)聯(lián)的證書。-storepasswd修改或指定密鑰庫的密碼-keypasswd修改或者指定某一個(gè)密鑰對(duì)的訪問密碼-delete刪除密鑰庫中的條目。KeyTool運(yùn)用D:keytool -genkey -alias javafan -keyalg rsa -validity 750輸入keystore密碼: keystore您的名字與姓氏
12、是什么? Unknown: JavaFan您的組織單位稱號(hào)是什么? Unknown: Computer Science您的組織稱號(hào)是什么? Unknown: Chongqing University您所在的城市或區(qū)域稱號(hào)是什么? Unknown: Chongqing您所在的州或省份稱號(hào)是什么? Unknown: Chongqing該單位的兩字母國家代碼是什么 Unknown: CNCN=JavaFan, OU=Computer Science, O=Chongqing University, L=Chongqing , ST=Chongqing, C=CN 正確嗎? 否: 是輸入的主密碼 假設(shè)
13、和 keystore 密碼一樣,按回車: 用keytool顯示證書的內(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序號(hào): 43030437有效期間: Wed Aug 17 17:
14、32:39 CST 2005 至: Thu Sep 06 17: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:DDjarsignerJarsigner用于給打包后的Java程序簽名,或者驗(yàn)證簽名。Jarsigner可以在簽名或者驗(yàn)證簽名時(shí),訪問由keytool創(chuàng)建的密鑰庫。 選項(xiàng)描述-storepass訪問密鑰庫時(shí),指定口令-keypass指定私鑰的保護(hù)口令-signed
15、jar指定需要被簽名的jar文件-verifyjar文件的簽名驗(yàn)證-verbose控制是否輸出簽名或者驗(yàn)證過程的詳細(xì)信息-certs與-verify、verbose一起使用,輸出包括每個(gè)簽名證書的信息policytool Java運(yùn)轉(zhuǎn)時(shí)環(huán)境的平安配置文件java.home/lib/security/java.securityjava.home指安裝Java運(yùn)轉(zhuǎn)時(shí)環(huán)境的目錄中包括兩個(gè)戰(zhàn)略文件:java.home/lib/security/java.policy 和 user.home/.java.policyuser.home指用戶主目錄。PolicyTool缺省修正第二個(gè)文件。 Java小程序
16、的平安部署 SimpleScannerApplet程序檢查某個(gè)主機(jī)上的TCP端口能否開放,比如用于WWW效力的80端口,用于SMTP效力的25端口等。程序運(yùn)轉(zhuǎn)界面制造和部署平安小程序步驟編制小程序SimpleScannerApplet 編寫Html文件scanner.html 把程序打包成Jar文件獲取并安裝一個(gè)支持RSA的簽名證書。 用該證書對(duì)Jar文件進(jìn)展簽名用sun的Html Convert轉(zhuǎn)換scanner.html部署轉(zhuǎn)換后的html文件和曾經(jīng)簽名的jar文件見程序 主要內(nèi)容16.1 平安根本知識(shí) 16.2 Java的平安模型 16.3 Java的密碼學(xué)構(gòu)造 16.3 Java的密碼
17、學(xué)構(gòu)造16.3.1根本概念16.3.2中心類16.3.3音訊摘要16.3.4數(shù)字簽名16.3.5數(shù)據(jù)加密/解密16.3.1根本概念Java 密碼學(xué)構(gòu)造設(shè)計(jì)遵照兩個(gè)原那么: (1) 算法的獨(dú)立性和可靠性;(2) 實(shí)現(xiàn)的獨(dú)立性和相互作用性。Java 2 中主要的密碼學(xué)效力有以下幾種:數(shù)字簽名、音訊摘要、加密/解密密鑰工廠密鑰庫創(chuàng)建與密鑰管理算法參數(shù)產(chǎn)生、管理證書工廠JDK5.0提供的密碼學(xué)效力可以經(jīng)過修正java.home/lib/security/java.security文件安裝密碼學(xué)效力提供者。缺省情況下,Java運(yùn)轉(zhuǎn)時(shí)環(huán)境曾經(jīng)安裝了下面的提供者:vider.1=vider.Sunvider
18、.2=sun.security.rsa.SunRsaSignvider.3=ernal.ssl.Providervider.4=vider.SunJCEvider.5=sun.security.jgss.SunProvidervider.6=com.sun.security.sasl.Provider見程序測(cè)試程序import java.security.Provider;import java.security.Security;public class GetProviderInfo public static void main(String args) Provider plist =
19、 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();16.3.2中心類Security , Provider MessageDigest類 Signature類 Key ,KeyFactory , KeyPair ,KeyPairGenerator SecureRandom 16.3.3音訊摘要運(yùn)用MD5算法產(chǎn)生音訊摘要也可以運(yùn)用SHA1算法MessageDigest支持MD5和SHA音訊摘要算法。調(diào)用getInstance()方法選擇一個(gè)適宜的算法;調(diào)用update()方法預(yù)備數(shù)據(jù)輸入緩沖區(qū);digest()方法產(chǎn)生音訊摘要;摘要的長(zhǎng)度取決于所選擇的算法。運(yùn)用 MD5產(chǎn)生128位的摘要,運(yùn)用SHA產(chǎn)生160位的摘要。 16.3.4數(shù)字簽名Signatu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人健康保險(xiǎn)合同范本2篇
- 長(zhǎng)沙南方職業(yè)學(xué)院《俄語基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度智能倉儲(chǔ)物流設(shè)施建設(shè)合同范本3篇
- 2024物業(yè)權(quán)益讓與擔(dān)保合同 權(quán)益方與受讓方協(xié)議
- 思政教育團(tuán)隊(duì)建設(shè)與教師專業(yè)成長(zhǎng)
- 二零二五版集成墻板家裝裝修環(huán)保評(píng)估合同范本3篇
- 2025年校園歷史文化宣傳欄制作與教育推廣合同3篇
- 二零二五年度建筑設(shè)計(jì)創(chuàng)意大賽參賽合同2篇
- 2025年新型農(nóng)業(yè)技術(shù)培訓(xùn)合同范本3篇
- 2025年度定制化鋁材加工與銷售一體化合同4篇
- 2024虛擬現(xiàn)實(shí)產(chǎn)業(yè)布局白皮書
- 車站值班員(中級(jí))鐵路職業(yè)技能鑒定考試題及答案
- JTG∕T E61-2014 公路路面技術(shù)狀況自動(dòng)化檢測(cè)規(guī)程
- 高中英語短語大全(打印版)
- 2024年資格考試-對(duì)外漢語教師資格證筆試參考題庫含答案
- 軟件研發(fā)安全管理制度
- 三位數(shù)除以兩位數(shù)-豎式運(yùn)算300題
- 寺院消防安全培訓(xùn)課件
- 比摩阻-管徑-流量計(jì)算公式
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗(yàn)
- 五年級(jí)數(shù)學(xué)應(yīng)用題100道
評(píng)論
0/150
提交評(píng)論