題:
裸機密碼庫
RSin
2015-08-18 13:30:24 UTC
view on stackexchange narkive permalink

我正在編寫將在裸機上運行的應用程序,即,它將不會在內核上運行,因此無法調用系統調用。也將沒有C運行時。在這種設置下是否可以使用一個加密庫(或者像crypto ++,libsodium等庫取決於C運行時)?

裸機=沒有`new`也沒有`malloc`?我很確定密碼庫需要這些功能。
-1
@CodesInChaos,很好,我不能為libsodium聲明,但是Crypto ++ *需要* CRT,因為(未)對齊的分配函數是必需的。 [CodeRef](https://github.com/weidai11/cryptopp/blob/master/secblock.h)
一 回答:
#1
+3
SEJPM
2017-05-06 15:34:28 UTC
view on stackexchange narkive permalink

我將假設您只需要最標準的功能,而無需花哨,因此大多數情況下,例如標準的認證加密原語等。沒有秘密共享,沒有格式保留加密,沒有基於密碼的密鑰派生或其他奇特的密碼哈希方案。

因此,如果您確實只需要基本方案,則可能有三個可以滿足您需求的庫: / p>

  • Cryptlib。 Cryptlib是一個按節點付費的庫,具有廣泛的硬件支持,據我了解 也可以在嵌入式設備上運行。因此,如果您想要獲得商業支持的東西,那麼這是您最好的選擇(您可能應該在使用前先詢問他們是否符合您的特定需求)。還要注意,與其他庫相反,Cryptlib支持常見的高級結構,例如CMS和PGP。
  • BearSSL。有趣的選擇。它是為低內存嵌入式設備設計和編程的,僅需要編譯器中非常少的一組功能,它們只是 memcpy,memmove strlen 以及一些定義。它在任何時候都不會進行任何系統調用。但是,不利的一面是您可能不會獲得商業支持,並且從技術上講它仍處於Alpha狀態,因此該API可能會在任何版本上進行更改,但長期而言值得牢記。從好的方面來說,它支持標準TLS庫所需的所有加密技術,而且時間又快又恆定,這可能就足夠了。
  • mbedTLS。從理論上講,mbedTLS應該是在此處是BearSSL和Cryptlib之間的中間地帶,但是我沒有對其進行適當的評估,因此我只能說“它在那里而且可能值得進一步評估”。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...