2010-07-22 152 views
1

我正在使用PKCS#1 2.0(OAEP)標準(帶附錄的簽名),但有一些問題我不清楚。RSA PKCS#1兼容簽名

  1. 什麼是beeing簽名的物理對象?我知道它的散列函數值等(我知道這個算法我是做的),但是它是從文件的二進制表單計算出來的,不管內容是什麼?

  2. 什麼是簽署的物理結果?包含簽名散列的文件?這個文件應該放在指定的位置嗎?這種東西的格式或擴展是什麼?

  3. 如果我有幾個要簽名的文件,是否應該分別爲每個文件執行此操作?還是應該將它們連接起來?再次 - 這種操作(文件?)的結果是什麼?

+1

請注意,OAEP填充用於加密,但不用於簽名。您應該使用舊的(但仍然流行)PKCS#1 v1.5填充或PSS填充。 – Accipitridae 2010-07-26 18:46:39

回答

2

PKCS#1有時被稱爲「原始RSA」,是一個低級別的加密基元:它不上的文件,且不會產生文件,它可以在原始數據:輸入是一個數字小於公鑰並且輸出是公鑰大小的數字(例如,對於RSA-1024,爲1024位)。

如果你想有一個簽名文件,你可能想使用PKCS#7/CMS format,因爲這是既爲安裝和拆卸簽名最常用的簽名格式(即使是在PDF文件的簽名,通常是PKCS#7封套實際上)。 PS:我對OAEP瞭解不多,但是從我讀到的內容看來,它似乎是一個填充方案(在原始簽名之前對數據執行的操作),所以我的參數應該仍然有效。

+0

我補充說,PKCS#7簽名是一個比純粹的PKCS#1簽名複雜得多(且更大)的對象,並涉及到使用X.509證書等,因此它可能不是您要查找的內容,具體取決於情況。 OTOH是一種完整的格式,可以提供很多程序支持並可以正確驗證,而如果使用裸PKCS#1,則它主要取決於您如何使用它。 – lapo 2010-07-23 15:21:24

+0

你的表述「輸入是一個比公鑰小的數字」是相當不清楚的。輸入是一個幾乎是任意長的字節數組,它首先被散列,然後被簽名,或者它已經是直接簽名的散列摘要。當然,哪一個取決於所使用的加密庫的接口。 – Accipitridae 2010-07-24 10:50:11

+2

不是,PKCS#1包含填充以使輸入「足夠大」,但不包括散列或附加簽名與分離簽名之間的區別,這是PKCS#7中更高級別管理的功能。 – lapo 2010-07-26 07:46:38