Java學習筆記之JAAS-Part2

消息摘要是數據塊的數字指紋;


SecureRandom類產生的隨機數,遠比由Random類產生的那些數字安全得多


公共密匙和私有密匙對有2個用途:一個用來加密,一個用來認證;
用於加密:別人發給你的消息用公共密匙加密,那麼只有你有私有密匙對這個消息進行解密;
用於認證:你用私有密匙對消息進行簽名,其他人只有用你的公有密匙才能解密消息,從而確認消息是你發的消息;


DSA算法的過程有3個步驟:
1. 產生一個密匙對;
2. 給消息簽名;
3. 對消息進行驗證;


證書的核心內容是:
。被認證身份的名字;
。被認證身份的公共密匙;
。對上列信息用私有密匙進行簽名;// 這個私有密匙應該是認證機構的私有密匙,這個簽名動作的主體是認證機構
// 由此可見,認證機構負責生成證書,併發放證書給消息接受者
// 所以整個過程有2級認證,證書認證(對應證書的公匙和私匙),信息認證(對應信息的公匙和私匙,信息可以指代碼,信息等。。。)


所以證書的意義是;
1. (消息接受者)通過某種途徑得到認證機構的公共密匙;
2. 用這個公共密匙對證書進行解密,得到被認證身份的名字和公共密匙;
3. 發送消息者(即上面的被認證身份),用自己的私有密匙對要發送的信息進行簽名;簽名後發送;
4. 接受消息的人(同時也是擁有證書的人,用第2個步驟中得到的公共密匙對該消息簽名驗證)


keytool -genkey -keystore alice.store -alias alice
keytool -export -keystore alice.store -alias alice -file alice.cert
keytool -printcert -file alice.cert


keytool 用來管理私鑰倉庫(keystore)和與之相關的X.509證書鏈(用以驗證與私鑰對應的公鑰),也可以用來管理其他信任實體。
keytool 將密鑰和證書儲存在一個所謂的密鑰倉庫中。缺省的密鑰倉庫實現將密鑰倉庫實現爲一個文件。它用口令來保護私鑰。(口令即密碼,可設置)


在密鑰倉庫中有兩種不同類型的項:密鑰項- 可信任的證書項 - 


如果私匙是“DSA”類型,那麼缺省的簽名算法是"SHA1withDSA",
如果私匙是“RSA”類型,那麼缺省的簽名算法是“MD5withRSA”,
-》從上列描述推測,所謂的簽名是先計算數據塊的指紋(消息摘要),然後對指紋進行DSA/RSA加密運算


在生成 DSA 密鑰對時,密鑰大小的範圍必須在 512 到 1024 位之間,且必須是 64 的倍數。缺省的密鑰大小爲 1024 位。


所謂簽名,就是用實體的(簽名人,在證書中也稱爲簽發人)私鑰對某些數據進行計算。私鑰用於計算簽名


****自簽名證書使用流程:消息發送人(同時擔任證書籤發人)-Alice,消息接受人-Bob
第一階段:傳遞可信任證書
Alice:
1. keytool -genkey -keystore alice.store -alias alice // 創建密匙庫,並用別名生成密匙對;
2. keytool -export -keystore alice.store -alias alice -file alice.cert // 導出證書文件;自簽名證書
Bob:
可選操作:keytool -printcert -file alice.cert // 打印證書;
1. keytool -import -keystore bob.store -alias alice -file alice.cert // 將證書加入Bob的密匙庫中
第二階段:傳遞信息
Alice:簽名文檔:
1. jar cvf document.jar document.txt
2. jarsigner -keystore alice.store document.jar alice // 添加簽名;
Alice把文檔傳送給Bob
Bob: 校驗文檔:
1. jarsigner -verify -keystore bob.store document.jar // jarsigner自動在bob.store中匹配證書並校驗
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章