我怎么能在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实现的列表?
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_generic
或modprobe 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作为一个例子
谁是先生aes-generic.c? – osgx 2013-03-09 19:27:05
aes-generic.c是一个内核驱动程序,在/ linux/crypto /本地。如果你想把你自己的alg加入到内核中,你可以拿这个文件作为例子。 – JohnsonDiao 2013-03-11 06:31:55
“/ linux/crypto”位于何处?在linux内核源代码中使用 – osgx 2013-03-11 23:29:58
这是建立在核心的东西。没有什么能阻止你使用外部加密库(例如OpenSSL)。 – 2012-04-28 14:36:38
@MarcB我读了关于API,并有一个新的算法可以添加到它的符号(它促进了这一点)。 2.)是否有一个支持(由defualt)算法的列表,这些算法是用cryptoapi for 2.6内核实现的? – abhi 2012-04-28 14:42:50
当然,但您必须重新编译内核,或将它们构建为模块。您必须查看内核模块目录以查看哪些内容与您的内核一起提供。如果还有更多,你可以使用'insmod'来加载它们 – 2012-04-28 14:43:51