1 / 20

Java 網路程式設計

Java 網路程式設計. 第 17 章 讓 Java 網路應用更安全. Java 對於安全的支援. 從網路上面下載的程式碼有安全上的顧慮, Java 對於安全問題有一整套的模型與支援 會寫 Java 網路程式以後還要會運用 Java 對於安全的支援,讓 Java 應用更安全 除了基本的安全機制以外, Java 也運用密碼學 (cryptography) 的技術. Java 密碼學 (cryptography) 的技術. JCA(Java Cryptography) JCA 的 3 個延伸功能

rene
Download Presentation

Java 網路程式設計

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java網路程式設計 第17章 讓Java網路應用更安全

  2. Java對於安全的支援 • 從網路上面下載的程式碼有安全上的顧慮, • Java對於安全問題有一整套的模型與支援 • 會寫Java網路程式以後還要會運用Java對於安全的支援,讓Java應用更安全 • 除了基本的安全機制以外,Java也運用密碼學(cryptography)的技術

  3. Java密碼學(cryptography)的技術 • JCA(Java Cryptography) • JCA的3個延伸功能 • JAAS(Java Authentication and Authorization Services) • JCE(Java Cryptography Extension) • JSSE(Java Secure Sockets Extension)

  4. Java的安全模型(security model) • Applet是隱含在Web網頁中的,由於是外來程式,所以通常我們不會信任applet,applet對於電腦的權限受到嚴格的限制。 • Java採用Sandbox model,在這個安全模型中,applet被隔離在系統之外,系統會把applet當成不信任的程式碼(untrusted code)

  5. Java的安全模型 : Sandbox model

  6. signed applet的觀念 • signed applet以JAR archive的型式存在,含有利用密碼技術建立的安全簽章(secure signature) • 簽章本身載明程式碼的所有者,技術上可以讓他人無法偽造簽章或是更改JAR archive內的程式碼 • 如此一來,JVM就可以給予這樣的applet完整的權限

  7. signed applet的觀念

  8. Java提供的工具 • keytool • Jarsigner • 安全設定的例子 : • keystore "file:javaSecurityTest.keystore"; • grant signedBy "mykey" { • permission java.security.AllPermission; • };

  9. 安全的要求(security requirement) • 私密性(confidentiality) • 完整性(integrity) • 辨識(authentication)

  10. 加密法的基本原理 • 發送端要傳送的訊息以「明文」(plaintext)稱之,用金鑰(key)加密之後成為無法用一般方式讀取的「密文」(ciphertext),然後傳送到接收端,利用金鑰解密後,還原成可讀取的明文 • 由於密文無法讀取,我們可以說這種方式幫助維持資料的私密性

  11. 加密法的基本原理

  12. 非對稱式的加密法 • 在第一種情況中,甲方用自己的私鑰加密,乙方用公鑰解密,由於只有甲方知道自己的私鑰,所以可確認發送端的身份,問題是公鑰公諸於世,無法確保資料的私密性與完整性 • 在第二種情況中,甲方用乙方公佈的金鑰來加密,如此一來,只有乙方有私鑰來解密,這樣可確保資料的私密性,但無法確知發送端是否為甲方

  13. 非對稱式加密法的兩種情況

  14. 數位簽章(Digital signature) • 更有效地解決電子交易的安全問題 • 要傳送的明文用雜湊函數(hash function)計算出簡短的訊息摘要(Message digest),用私鑰加密後產生數位簽章 • 數位簽章和明文用另一組公鑰加密以後傳送到接收端。接收端收到訊息以後用私鑰解密,得到明文與數位簽章,明文可用雜湊函數算出訊息摘要,這個訊息摘要和數位簽章解密後得到的結果應該一樣

  15. 數位簽章產生的方式與使用的原理

  16. 數位證書(Digital certificate), • 交易權威性的問題有待解決,因為有人可以冒充別人公佈公鑰 • 所以,公鑰的使用必須先取得數位證書(Digital certificate),由發送端向權威機構申請,完成之後,接收端才能從權威機構那兒取得公鑰

  17. 數位證書取得的途徑以及接收端獲得公鑰的方法

  18. Java對於密碼機制的支援 • JAAS(Java Authentication and Authorization Service) • JCE(Java Cryptography Extension) • JSSE(Java Secure Socket Extension)

  19. 安全的通訊槽(Secure Sockets) • 對於參與網路電子商務的顧客來說,安全是最重要的考量之一 • 我們可以透過通訊槽的加密來提昇網際網路連線的安全性 • 之前介紹的通訊槽是透過java.net.Socket來建立的,安全的通訊槽(secure socket)則是透過javax.net.ssl.SSLSocketFactory的createSocket方法來建立

  20. 執行HTTPSClient連接www.yahoo.com得到的結果

More Related