我怎么能在Linux

问题描述:

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

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 

你可以采取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