2012-04-28 19 views
3

CryptoAPI中添加更多的算法,當我檢查/ proc /加密它讓我看到:我怎麼能在Linux

[email protected]:/proc$ cat crypto 
name   : stdrng 
driver  : krng 
module  : kernel 
priority  : 200 
refcnt  : 1 
selftest  : passed 
type   : rng 
seedsize  : 0 

name   : md5 
driver  : md5-generic 
module  : kernel 
priority  : 0 
refcnt  : 1 
selftest  : passed 
type   : shash 
blocksize : 64 
digestsize : 16 

我需要使用AES256爲我的項目之一。

有人可以指出我可以如何將這個算法添加到加密API或有任何其他方式,我可以在(Ubuntu的10.4,2.6.32-35)實現這一點。

是否有一個支持(默認)的算法與內核2.6的cryptoapi實現的列表?

+0

這是建立在覈心的東西。沒有什麼能阻止你使用外部加密庫(例如OpenSSL)。 – 2012-04-28 14:36:38

+0

@MarcB我讀了關於API,並有一個新的算法可以添加到它的符號(它促進了這一點)。 2.)是否有一個支持(由defualt)算法的列表,這些算法是用cryptoapi for 2.6內核實現的? – abhi 2012-04-28 14:42:50

+4

當然,但您必須重新編譯內核,或將它們構建爲模塊。您必須查看內核模塊目錄以查看哪些內容與您的內核一起提供。如果還有更多,你可以使用'insmod'來加載它們 – 2012-04-28 14:43:51

回答

4

ABHI,內核加密API was created在2002年的協議,這需要加密的內核中(在內核模式下,當你有使用用戶空間加密沒有可靠的方法):

雖然最初的目標在支持IPSec時,API被設計爲通用工具,其潛在應用包括加密文件,加密文件系統,強大的文件系統完整性,隨機字符設備(/ dev/random),網絡文件系統安全性(例如CIFS)和其他需要密碼學的內核網絡服務。

因此,如果您正在用戶空間中工作,並且沒有計劃作爲新的FS或網絡堆棧的新部分進入內核,那麼使用用戶空間庫進行加密更容易和更方便。用戶空間lib可能使用或不使用內核API來執行某些密碼,但可能會使用用戶空間實現。有很多這樣的庫,例如openssl,Libgcrypt等。一些巨大的框架,如Qt可能也包括一些流行的加密。

要使用新算法在內核中擴展cryptoapi,您應該爲您的內核(作爲模塊或作爲內核二進制文件的一部分)實施和編譯此算法。要查找爲您的內核編譯的模塊的名稱,請嘗試ls /lib/modules/*/*/arch/*/crypto/ /lib/modules/*/*/crypto/;那麼你可以調用例如modprobe aes_genericmodprobe aes-x86_64來在API中加載額外的加密模塊。

modprobe aes-x86_64後,我有:

# cat /proc/crypto |grep aes 
name   : aes 
driver  : aes-asm 
module  : aes_x86_64 
name   : aes 
driver  : aes-generic 
module  : aes_generic 
-1

你可以採取AES-GENERIC.C作爲一個例子

+0

誰是先生aes-generic.c? – osgx 2013-03-09 19:27:05

+0

aes-generic.c是一個內核驅動程序,在/ linux/crypto /本地。如果你想把你自己的alg加入到內核中,你可以拿這個文件作爲例子。 – JohnsonDiao 2013-03-11 06:31:55

+0

「/ linux/crypto」位於何處?在linux內核源代碼中使用 – osgx 2013-03-11 23:29:58