Welcome 微信登录

首页 / 操作系统 / Linux / Linux内核加密接口分析

一、概述      Linux内核从2.5版本开始引入了强力的加密机制,主要原因有:删除冗余代码、支持IPSec协议以及通用的加密功能等。将来的应用会包括:硬件加密设备驱动、内核代码签名、硬件随机数生成器、文件系统加密等。二、如何使用加密API1、安装从2.6.6版本之后,内核源码就提供了丰富的密码学算法支持,需要配置编译选项将加密算法作为模块编入内核。如图所示,menuconfig的时候配置这部分选项  重新安装内核之后可以看到相应的目录下这些模块 2、使用API编程这里介绍的是使用加密API的方法,而且是运行在内核态的程序:例1
  1. char *Kern_Digest(const void *data, size_t count,  
  2.         unsigned char *md, unsigned int *size, const char *name)  
  3. {  
  4.        struct crypto_tfm *tfm;  
  5.        struct scatterlist sg[1];  
  6.        tfm = crypto_alloc_tfm(name, 0);  
  7.        sg_init_one(sg, data, count); //这里复制需要做哈希的数据   
  8.         crypto_digest_init(tfm);  
  9.        crypto_digest_update(tfm, sg, 1);  
  10.        crypto_digest_final(tfm, md);  
  11.        if (size != NULL)  
  12.           *size = tfm->cra_digest.dia_digestsize;  
  13.        crypto_free_tfm(tfm);  
  14. }  
例2
  1. #include <linux/crypto.h>   
  2.   
  3. int len;  
  4. char key[8];  
  5. char result[64];  
  6. struct crypto_tfm *tfm;  
  7. struct scatterlist sg[2];  
  8.   
  9. tfm = crypto_alloc_tfm("des", 0);  
  10. if(tfm == NULL)  
  11.     fail();  
  12.   
  13. crypto_cipher_setkey(tfm, key, 8);  
  14.   
  15. //把需要加密的数据复制到scatterlist   
  16.   
  17. crypto_cipher_encrypt(tfm, sg[0], sg[0], len); //这里可以模拟输入输出   
  18.   
  19. crypto_free_tfm(tfm);  
以上两个例子仅示范了如何使用API,可以看到最重要的2个数据结构是: crypto_tfm 和 scatterlistcrypto_tfm类型指针tfm可以理解为指代了一个算法对象scatterlist类型数据可以认为是这些密码算法操纵的数据对象。同时也可以看到,API的命名很容易阅读(这也是Linux内核命名的一个特色)这部分加密库提供的接口都在linux/crypto.h头文件中有定义,进行实验的时候需要与内核相关,这里可能要一些模块编程的补充。Xcode 4.1安装iOS 4.3 Library和Mac OS X Lion LibraryMac OS X 10.6 Snow Leopard 安装笔记(VirtualBox虚拟机)相关资讯      Linux内核 
  • IT人员必须了解的六项Linux内核变  (今 12:05)
  • Linux 内核更新:3.10.98、3.14.62  (02月26日)
  • Linux:让手机运行主线内核  (11/26/2015 22:16:17)
  • Linux内核自防护项目  (05月24日)
  • Linux 内核架构的理解  (12/09/2015 09:01:01)
  • Linux内核被指缺乏安全性  (11/07/2015 08:28:47)
本文评论 查看全部评论 (0)
表情: 姓名: 字数