Encryption
使用非對稱密鑰的認證加密
我知道這可能被標記為重複。它基於這個問題和這個答案。但是,我覺得我錯過了一些東西……
我的例子:
Bob 想要加密一條消息並使用 Alice 的公鑰將其發送給 Alice。但是,Bob 還想在加密(消息 + 簽名)之前使用他的私鑰對消息進行簽名。
為了爭論,我們假設 Alice 和 Bob 使用的是 RSA2048。根據PKCS #1 v2.2,RSASSA-PSS 和 RSASSA-PKCS15 簽名方案都會生成密鑰模數大小的輸出(在本例中為 256 字節)。但是,OAEP 和 PKCS15 加密方案都要求消息大小小於模數大小(小於 256 字節)。
如何根據此規範對消息進行簽名然後加密?明文會被分成兩塊嗎?如果消息很小,混合加密似乎有點矯枉過正。即使是單個 ASCII 字元也會太大而無法簽名,然後以這種方式加密.…..
如果您想加密和簽署某些數據,您將始終需要至少塊(在您的情況下為 = 512 個字節)。任何 RSA 簽名塊,無論是使用 PKCS#1 v1.5 還是 PSS(甚至是教科書 RSA)都將具有模數(256 字節)的大小,因為它是 RSA 操作的輸出。因此,如果您想向其中添加一些純文字數據,您將自動需要開始一個新塊。
正如您所建議的,所有所說的都是假設使用兩個大小相等(2048 位)的密鑰。如果您的簽名密鑰的位大小(例如 2048)比加密密鑰(例如 4096)更小,那麼您可以逃脫一個塊。