簡體   English   中英

RSA 公鑰/私鑰問題

[英]RSA public/private keys questions

我是加密新手,但我有幾個問題。 我知道這個主題很復雜,但我不是專門要求標准,而是什么可以工作,也就是說,什么應該是安全的,即使不是真正的 RSA 方法,即使它不是標准但應該是擔保。 更普遍的是關於非對稱加密的問題。

1)哪個私鑰用於簽署證書? 是與組織的公鑰相關的私鑰,還是自治機構的私鑰。 我認為這是第一個,因為在 Java 中,當我嘗試使用不是證書中公鑰對的私鑰進行簽名時,它會失敗(編輯。我知道這可能取決於“證書”的內容,並且簽名只是對一大塊字節進行簽名)。

如果使用組織的私鑰對證書進行簽名:表示授權機構不能對證書進行簽名(它沒有組織的私鑰):是否表示簽名是由組織提供的?

2)它與問題有關。 1 但是權威是否需要私鑰來生成證書? 與 2-pass 簽名一樣,使用兩個密鑰來驗證簽名。 如果是,具體是出於什么目的?

此外,如果自治機構不需要私鑰,是否足以檢查證書是否有效,證書是否正確,並且授權機構在數據庫中包含給定的公鑰(或最多逐字節檢查)如果數據庫中的證書與一對一檢查的證書相同),則假設無法從公鑰中推導出私鑰?

3)我對公共/私人和加密/解密關系感到困惑。 我所看到和了解到的是,私有加密密鑰用於簽名,私有解密密鑰用於保護通信,我們也可以說加密/解密只是一個語言術語,除了轉換為方向或其他。 但是在 Java 中使用類Signature簽署文檔,您提供一個私鑰來生成簽名(如果我是正確的)。 另一方面,您使用它來解密通信,對嗎? 所以你用它來加密和解密。 可以嗎。 這樣做還是我們需要兩對密鑰來進行安全通信,一對用於證書,另一對用於通信?

4)題外話,但我認為 RSA 密鑰是非對稱的,但提供了相同的數學特性,並且還具有某種對稱性,因此我們可以使用解密密鑰進行編碼並相互進行編碼。 這個例子是否正確,只是出於好奇:

to the left: encrypt with private key
to the right: encrypt with public key
   ... <-> messageP2 <-> messageP1 <-> message <-> messageR1 <-> message R2 <-> message R3 <-> ...

謝謝

證書的全部意義在於信任 PKI(公鑰基礎設施)

  • PKI 中的密鑰始終是密鑰對。 私人部分始終由所有者保密
  • 有太多的聚會,每個人都知道其他人的公鑰
  • 每個人都知道 CA 的公鑰(或者一個已知的 CA 必須簽署一個子 CA 的密鑰,如果你想要多層 CA)
  • 每個人都將他們的公鑰嵌入到由 CA 簽署的證書中

如果你現在想和某人交流,你需要他們的證書......因為你還不認識他們(或者准確地說,你還不知道他們的密鑰)你不能確定你正在交流與目標方

他們發送了他們的證書......

現在您可以檢查信任鏈:

他們的證書是由某人簽名的……該人是否值得信賴並且簽名是否有效?

那是值得信賴的人嗎? 一個非常簡單的問題:某人是否是可以為目標方簽署證書的可信 CA? 換句話說:我們可以在我們的受信任 CA 列表中找到簽名 CA 證書,還是另一個受信任的 CA 將他們的證書簽名為 CA 證書?

簽名有效嗎? 可以測試簽名 CA 的公鑰是否已知

現在,如果我們知道這個 CA 並信任它呢? ......一切都好......但是如果我們不知道那個CA怎么辦? 通常我們的通信伙伴可以提供該 CA 的證書(因為證書是公開的,換句話說,不是秘密的)

現在我們可以重復......所提供的 CA 證書是否由值得信賴的人簽名並且簽名是否有效?

重點是:不需要擁有包含所有公鑰的龐大數據庫,並且通信方只要可以驗證證書就可以自行驗證身份

所以考慮到這一點......

1) CA 的私鑰用於簽署證書。 證書上的簽名等於聲明“簽名者可以對證書中所有值的有效性負責”

2)CA簽署證書......這里的簽名是一個需要密鑰的操作......僅僅在CA的數據庫中擁有證書是不夠的......考慮到證書持有者的身份需要在無法與 CA 通信時進行檢查

3)減輕這種混亂

簽名/解密...私鑰
驗證/加密...公鑰

通常用於簽名和加密的密碼系統是不同的...... RSA 是這里的獨角獸,它可以用於兩者

證書背后的想法是您可以嵌入公鑰,並將它們綁定到一個身份,這樣一個共同的可信 CA 就足以讓兩個其他未知方安全地交換他們的密鑰

4)從數學的角度來看......是的......

RSA 操作是 X^e mod N = C ... C^d mod N = X

X = 明文 ... C = 密文 ... N,e,d rsa 參數

RSA 背后的原理是 e*d mod phi(N) = 1

所以

(X^e)^e = X^(e*e)   
(X^(e*e))^d = X^(e*e*d) = X^(e*1) = X^e  
(X^e)^d = X^(e*d) = X^1 = X

擁有權威機構頒發的證書的目的是該權威機構證明密鑰中的信息是准確的。 為了驗證該證書,必須使用只有認證機構知道的私鑰對證書進行簽名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM