OpenSSL与证书的那些事儿

    前面分析过加解密、证书与安全通信之间的关联关系,现在换个角度来剖析证书的制作与其本质。我们先构建一个CA环境,生成CA密钥、制作CA证书请求、自签名等,然后通过自建的CA来签发用户证书。

准备工作

通过命令查询openssl的环境信息,主要是确认openssl的配置路径信息OPENSSLDIR

命令:openssl version -a[……]

阅读全文

漫谈从加解密到信任证书构成的安全通信

加密(Encryption就是通过某种方法将可以被理解的数据信息隐藏起来并生成不可被理解的数据信息。可理解的数据信息通常称之为明文(Plain Text,而隐藏了明文的不可被理解的数据信息被称之为密文(Cipher。至于解密(Decryption,则恰好相反,它是将密文转变为明文的过程,将被隐藏的信息从不可被理解的数据信息中还原出来。

加密解密的历史甚为久远,早在古代就出现了采用字符替代或者字符移[……]

阅读全文

【Linux内存源码分析】vmalloc不连续内存管理(1)

伙伴管理算法初衷是解决外部碎片问题,而slab算法则是用于解决内部碎片问题,但是内存使用的得不合理终究会产生碎片。碎片问题产生后,申请大块连续内存将可能持续失败,但是实际上内存的空闲空间却是足够的。这时候就引入了不连续页面管理算法,即我们常用的vmalloc申请分配的内存空间,它主要是用于将不连续的页面,通过内存映射到连续的虚拟地址空间中,提供给申请者使用,由此实现内存的高利用。

按照分析管理,从该管理算法的初始化入手。[……]

阅读全文

【Linux内存源码分析】内存泄漏检测kmemleak示例

分析完kmemleak实现后,照常实验一下,以确定功能正常。

kmemcheck一样,该功能需要在内核开启的情况下才能够使用。主要的配置项有:CONFIG_DEBUG_KERNELCONFIG_HAVE_DEBUG_KMEMLEAKCONFIG_DEBUG_KMEMLEAK,以及配置信息记录条数的CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE,通常情况下配置数量的可以不必修改,但是针对自启[……]

阅读全文

【Linux内存源码分析】内存泄漏检测kmemleak分析

kmemleak的工作原理很简单,主要是对kmalloc()vmalloc()kmem_cache_alloc()等接口分配的内存地址空间进行跟踪,通过对其地址、空间大小、分配调用栈等信息添加到PRIO搜索树中进行管理。当有匹配的内存释放操作时,将会把跟踪的信息从kmemleak管理中移除。

通过内存扫描(包括对保存的寄存器值),如果发现某块内存在没有任何一个指针指向其起始地址或者其空间范围,那么该内存将会被判定为孤[……]

阅读全文

【Linux内存源码分析】内存破坏检测kmemcheck示例

前面分析了kmemcheck的实现,那么现在就针对其功能进行试验,鉴于kmemcheck支持KMEMCHECK_SHADOW_UNALLOCATED、KMEMCHECK_SHADOW_UNINITIALIZEDKMEMCHECK_SHADOW_FREED的检测且检测上报信息大同小异,本文中的实验主要针对于未初始化的内存进行。

如果需要使能kmemcheck,需要进行一系列的内核参数设置,具体的配置项可以参考内核源码Do[……]

阅读全文

【Linux内存源码分析】内存破坏检测kmemcheck分析

kmemcheck和kmemleaklinux2.6.31版本开始对外提供的内核内存管理方面的两个检测工具,最初仅支持x86环境,时至今日已经能够支持arm环境了。其中kmemcheck主要是用于内核内存破坏检测,而kmemleak则是用于内核内存泄露检测。本文主要分析kmemcheck的实现,至于kmemleak下一篇文章再详细介绍。

为什么要有kmemcheck?古人云:人非圣贤孰能无过,程序员也会犯错,但是[……]

阅读全文