3

当我检查 /proc/crypto 它显示我:

abhi@ubuntu:/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 实现的?

4

2 回答 2

6

Abhi,内核加密 API在 2002 年为协议创建的,它需要内核内部的加密(在内核模式下,当你没有使用用户空间加密的可靠方法时):

尽管最初旨在支持 IPSec,但 API 已被设计为通用工具,潜在应用包括加密文件、加密文件系统、强文件系统完整性、随机字符设备 (/dev/random)、网络文件系统安全(例如, CIFS) 和其他需要加密的内核网络服务。

因此,如果您在用户空间工作并且没有计划将内核作为新的 FS 或网络堆栈的新部分移动,那么使用用户空间库进行加密会更容易且更便携。对于某些密码,用户空间库可能使用或不使用内核 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
于 2012-04-29T13:51:52.730 回答
-1

您可以以 aes-generic.c 为例

于 2013-03-08T08:25:23.847 回答