【问题标题】:Kernel Modul and SSL内核模块和 SSL
【发布时间】:2013-09-06 21:37:57
【问题描述】:

目前我正在开发 ccn-lite (http://www.ccn-lite.net/) 的内核模块。 为此,我需要一些安全功能(sha1 和公钥/私钥认证)。 对于用户空间,我使用 openssl 库,但我不能使用内核模块中的库。

也很难从 OpenSSL 中挑选出函数并将它们添加到内核模块中,因为它们中的大多数都依赖于 libc。

linux 内核中是否有任何我可以使用的安全功能?

编辑: 我可以计算通过以太网接收到的数据的哈希函数:

struct scatterlist sg[1];
struct crypto_hash *tfm;
struct hash_desc desc;

tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC);

desc.tfm = tfm;
desc.flags = 0;

crypto_hash_init(&desc);
sg_init_table(sg, ARRAY_SIZE(sg));
sg_set_buf(&sg[0], input, length);

crypto_hash_digest(&desc, sg, length, md);

crypto_free_hash(tfm);

现在我想使用函数 digsig_verify 来验证数据的签名字段。

verified = digsig_verify(keyring, sig, sig_len, md, md_len);

据我所知,第二个参数是签名,第三个是签名的len,第四个是数据的hash,最后一个是hash的长度。

第一个字段的类型为“struct key”,应该包含验证签名所需的公钥?

如何初始化此参数,即如何获取系统公钥? 还有一种方法可以在 linux 内核中签名 char* 吗?

【问题讨论】:

标签: linux linux-kernel openssl kernel-module


【解决方案1】:

linux 内核带有一堆加密函数。

见:http://lxr.linux.no/#linux+v3.11/Documentation/crypto/

【讨论】:

    【解决方案2】:

    您可以使用像 netlink 这样的 ipc 将数据从内核发送到用户空间,让用户空间 openssl 执行安全性并将数据还原回内核。

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 2020-08-15
      • 2012-04-11
      • 2013-12-17
      • 1970-01-01
      相关资源
      最近更新 更多