Rsa

PKCS#11 中的 CKM_RSA_PKCS 與 CKM_RSA_X_509 機制

  • November 8, 2020

CKM_RSA_PKCSPKCS#11 v2.20 規範中的和機制之間的確切區別是什麼CKM_RSA_X_509(請舉例說明)?

正如規範中非常清楚地指出的那樣,CKM_RSA_X_509執行“原始” RSA。原始 RSA 只是模冪運算。所以它只執行 PKCS#1 標準中的 RSASP1 功能。這意味著使用者至少應該提供一個安全的填充機制。否則不滿足執行安全 RSA 簽名操作的條件。

CKM_RSA_PKCS另一方面,也執行 PKCS#1 標準中定義的填充。此填充在 EMSA-PKCS1-v1_5 的第 3、4 和 5 步中定義。這意味著此機制應僅接受比模數大小短 11 個字節的消息。要創建有效的 RSASSA-PKCS1-v1_5 簽名,您需要自己執行 EMSA-PKCS1-v1_5 的步驟 1 和 2。

這兩種機制都只是創建簽名算法的建構塊。通過向任一機制提供隨機數據,您都不會獲得有效的 PKCS#1 簽​​名。定義這些方法是為了給機制的使用者更多的控制權。

有時,諸如舊 SSL 規範之類的協議確實使用自己的簽名方案(連接 MD5 和 SHA-1 雜湊,省略雜湊指示符)。如果沒有直接實現或較低級別的原語可用,則無法支持這些協議。

CKM_RSA_PKCS 存在的另一個原因是在安全令牌上執行完整的 PKCS#1 v1.5 簽名生成可能不是很有效。將整個文本文件發送到智能卡是非常低效的。僅發送在主機上計算的雜湊結構要快得多。


最後一點:你不應該讓攻擊者能夠使用CKM_RSA_X_509你的令牌中的密鑰,也不應該讓他改變你提供給該機制的填充。一般來說,最好使用代表完整簽名方案的最新機制。

編輯:顯然訪問私鑰操作本身不足以破壞 RSA 密鑰。當然,讓攻擊者訪問私鑰操作本身是不安全的,但如果操作實施得當,它將不允許複製/破壞私鑰。我認為它確實打開了一些攻擊向量,原因很簡單,即攻擊者可以更好地控制模冪運算的輸入。

引用自:https://crypto.stackexchange.com/questions/9593