第八章密碼學/安全性的實作

Download Report

Transcript 第八章密碼學/安全性的實作

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