380 likes | 707 Views
密碼學. Chapter 8 密碼學 / 安全性的實作 Practical Implementations of Cryptography/Security. 1. Java 密碼學 微軟密碼學 第三方組織之解決方案. 實務上密碼學的實作. 2. 使用 Java 來做密碼學. 概括上來說, Java 密碼學架構有兩個主要的技術 Java 密碼學架構 (JCA) Java 密碼學延伸 (JCE). Java 密碼學. Java 密碼學架構 (JCA). Java 密碼學延伸 (JCE). Java 密碼學架構.
E N D
密碼學 Chapter 8 密碼學/安全性的實作 Practical Implementations of Cryptography/Security 1
Java密碼學 微軟密碼學 第三方組織之解決方案 實務上密碼學的實作 2
使用 Java 來做密碼學 • 概括上來說,Java 密碼學架構有兩個主要的技術 • Java密碼學架構 (JCA) • Java密碼學延伸 (JCE) Java密碼學 Java密碼學架構 (JCA) Java密碼學延伸 (JCE)
Java密碼學架構 • Java Cryptography Architecture, JCA • JCA是預設的Java應用程式發展環境(JDK)的一部分 • 提供基本的密碼學功能 • 存取控制、許可、金鑰對、訊息摘要、數位簽章 • Package • java.security
介面與實作 • JCA設計的主要目標是將密碼學概念(Java的介面)與實際的演算法實作(Java的實作)分離 • 介面(interfaces) • 定義什麼是介面可以執行的,也就是介面的行為 • 實作(implementation) • 定義執行的細節,也就是如何被執行
引擎類別 (engine class) • JCA套件包含了很多類別,稱為引擎類別 • 引擎類別是密碼學功能的邏輯呈現 • 例如訊息摘要或數位簽章 • 提供者(provider)類別 • 執行演算法的實際實作 • 可由很多廠商提供
JCA中的金鑰管理 • Java2 使用金鑰工具(Keytool) • 將公開金鑰與私密金鑰分別儲存 • 儲存的資料庫稱為金鑰儲存(keystore) • 簡單的電腦檔案,.keystore • 金鑰工具提供的重要服務 • 建立金鑰對和自我簽署憑證 • 輸出憑證 • 在要求憑證時,發出憑證簽署要求(CSR)給憑證授權中心(CA) • 輸入其他人的憑證做為簽章驗證
Java密碼學延伸 • Java Cryptography Extension, JCE • 密碼學政策 • 美國政府限制密碼學軟體的出口 • JCA • 訊息摘要與數位簽章 • 包含在JDK中 • JCE • 加密與解密 • 另外下載
JCE架構 • JCE架構擁有與JCA相同的型態 • 基於引擎類別和提供者類別的概念 • 差異在於包含一個引擎類別的實作 • 昇陽公司提供的預設實作
JCA 和 JCE結論 • JCA 和 JCE 都是很強大的密碼學架構。它們已經經過很小心地規劃和設計,因此允許其未來的延伸和供應商獨立發展。 • 優點 • 它是免費的 • 缺點 • 不像其他密碼學產品一樣複雜
使用微軟的密碼學方法 • 微軟密碼學應用程式介面 • Microsoft Cryptography Application Programming Interface, MS-CAPI • 微軟發展出的一個綜合的密碼學軟體 • MS-CAPI是免費的 • Windows作業系統的一部分
MS-CAPI • 如同JCA/JCE的架構 • 使用引擎與提供者類別的方法 • 使用自有專門術語描述 • 密碼學服務提供者 • Cryptographic Service Providers, CSP • 等同JCA的提供者 • 提供一個共通CSP獨立的介面 • 提供一個預設的CSP實作 • 可由第三方組織的CSP時作取代
MS-CAPI結論 • 完全免費 • IE與Windows作業系統的一部分 • 非常受到歡迎的密碼學軟體
.NET Framework 密碼編譯模型 資料來源:Microsoft MSDN http://msdn.microsoft.com/zh-tw/library/93bskf9z(v=VS.90).aspx System.Security.Cryptography 命名空間中的類別管理許多加密的詳細資訊 某些是 Unmanaged Microsoft Cryptography API (CryptoAPI) 的包裝函式,其他則僅是 Managed 實作 資料流架構的密碼編譯物件全都支援單一標準介面 (CryptoStream) 來處理物件的資料傳輸部分
.NET Framework 提供的類別實作 • 私密金鑰加密演算法 • DESCryptoServiceProvider • RC2CryptoServiceProvider • RijndaelManaged • TripleDESCryptoServiceProvider • 公開金鑰加密演算法 • DSACryptoServiceProvider • RSACryptoServiceProvider • 數位簽章演算法 • DSACryptoServiceProvider • RSACryptoServiceProvider
.NET Framework 提供的類別實作 • 雜湊值 • HMACSHA1 • MACTripleDES • MD5CryptoServiceProvider • SHA1Managed • SHA256Managed • SHA384Managed • SHA512Managed • 亂數產生器演算法 • RNGCryptoServiceProvider
密碼學工具 • 很多公司專注在提供密碼學工具(cryptographic toolkits) • RSA Data Security Inc • Entrust • Baltimore • 不同的工具會提供不同的密碼學功能,需要中間層確保其可相互運作
安全性和作業系統 • 對象 • UNIX 的安全性 • Windows 2000 的安全性 • 討論 • 存取控制 • 使用者鑑別
UNIX 的存取控制 • UNIX一開始被設計成多使用者的作業系統 • 需要確保許多使用者可同時存取作業系統服務 • 需要高度的安全性與隱私性 • 標示所有檔案、程序、資源 • UID(使用者身份識別碼) • GID(群組身份識別碼)
UNIX的使用者鑑別 • 使用者的密碼取得訊息摘要後儲存在使用者資料庫 • 使用salt避免字典攻擊法
SID • 在Windows 2000中,每個使用者與群組都被指定一個唯一的SID • 程序和其執行序是在使用者的SID下執行 • 所有程序都有一個存取符記,包含SID和其他資訊 • 每個資源都有一個與它相關的安全性描述符號,描述這個SID被允許做什麼活動
Windows 2000的使用者鑑別 • 使用Kerberos來作使用者鑑別 • 支援Windows NT的挑戰/回應機制 • NT LAN管理者(NTLM) • 基於挑戰/回應機制,避免使用者密碼明文傳送
章節總結 • Java 密碼學方法是以 Java 密碼學架構和 Java 密碼學延伸為基礎。 • JCA 將介面和實作分離出來。 • JCA 提供即插即用架構。 • JCA 是由引擎類別和提供者類別所組成。 • 由於美國限制密碼學軟體出口,因此 JCE 從 JCA 中被獨立建立出來。 • 先前的 JCE 要求授權,現在則不必。
章節總結 • 微軟密碼學應用程式介面是微軟的密碼學軟體。 • IE 和 Windows 作業系統中免費附贈 MS-CAPI。 • MS-CAPI 的架構與 JCE 類似。 • 密碼學工具也可以用在密碼學中。 • 密碼學工具非常穩固且已經驗證,但可能非常昂貴。
The End 37