Rsa

是否存在輸出大小與輸入大小完全相等的不對稱加密

  • January 24, 2021

我想發送一個可驗證的數據塊(大約 16 個字節),只需使用私有 RSA 密鑰對其進行加密,並在原始碼中提供用於驗證的公鑰。這是我最初的想法。(我現在知道這與對數據進行簽名不同,但現在這無關緊要。)我嘗試使用 RSA 和 ECC 來確定輸出數據的長度取決於密鑰的長度。對於這麼少量的數據,即使是更小的 ECC 密鑰也會產生大量的數據成本。所以問題是:是否有任何非對稱編碼沒有那麼多成本,或者這本身對於非對稱加密/簽名是不可能的?

我找到了使用消息驗證碼的可能解決方案。儘管如此,我還是不喜歡我必須為軟體提供安全性,這是(如果我理解正確的話)每個對稱加密的情況。但也許我錯了,這不是一個大問題嗎?

對於 ECC,您最好只使用 ECDSA,或者如果您喜歡冒險,則使用 BLS 簽名方案。ECDSA 的簽名大小/成本是安全強度的 4 倍(比如 128 位),或者是密鑰大小的兩倍(256 位曲線)。BLS 的簽名大小/成本約為安全強度的三倍(比如 128 位)或密鑰大小的三倍 - 它需要更大的 381 位密鑰大小才能達到 128 位安全性。因此,ECDSA 大約 64 個字節(對於沒有 ASN.1 / DER 成本的平面編碼)和 BLS 大約 48 個字節(目前推薦的最小值)。

對於 RSA,請參閱提供(部分)消息恢復的簽名。對於消息恢復方案,您將獲得至少 34 字節的成本(假設為 SHA-256)——但這並不重要,因為最小簽名大小至少與 RSA 密鑰大小相同。因此,一個相當小的 2048 位密鑰大小已經為包含所有數據的簽名提供了 256 個字節。

僅當您信任獲取密鑰的其他系統以保持密鑰安全和公平競爭(當然首先存在建立密鑰的問題)時,才可以使用 HMAC。


對於許多常見的執行時/通用加密庫,我只希望找到 ECDSA 和 HMAC 實現。

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