摘要:
密钥是保证Android设备安全的重要组件之一,密钥的生成与使用均需要用到随机数,生成高质量的随机数需要高熵值的随机源。另一方面,移动广告等业务对不同的Android设备提供个性化服务时,需要对智能终端进行识别,因此需要采集设备特征,而识别设备需要低熵值的信息源。鉴于此,本文分析了Android的进程调度信息,通过信息熵分析其随机性,在进程调度信息中找到了较高熵值的随机源与相对唯一的进程访问密度特征。基于此分别提出真随机数和设备特征生成方法,主要分为以下两个方面:一方面,真随机数发生器主要利用物理随机事件作为噪声源,而目前大多数Android设备均未集成真随机数发生器芯片,因此从操作系统中寻找高熵值的真随机源尤为重要。本文分析了Android系统中的侧信道信息,发现进程调度中的进程调用号访问顺序规律体现着中断次数变化情况。增加相同的中断次数所需时间间隔t序列满足负指数分布,即其为Poisson流,而Poisson流具有无记忆特性,则时间间隔t序列中的每一个值只与邻近值相关,所以可以考虑将相同时间间隔内增加的中断次数作为随机数噪声源。基于此,通过分析进程调用号的访问顺序,把中断次数作为噪声源,经过对噪声源信息进行预处理、划分区间和量化编码生成随机数。通过计算生成随机数序列的最小熵来评价随机数序列的优劣。同时比较了不同区间划分方法的效果,分析采样间隔、噪声源方差和随机数最小熵之间的关系,讨论了系统中几个主要进程与随机数最小熵的相关性。最终得到结论:采用不均匀划分五个区间、采样间隔为1ms、抑制ksoftirqdr进程的运行,可以得到较高熵值的随机数序列。另外一方面,目前Android设备特征生成方法,多是读取IMEI等信息,需要获取敏感权限,但获取root权限的用户可以任意修改这些信息。针对以上问题,本文提出两种零权限设备特征生成方法。系统运行时需要调用多个进程,不同设备相同时刻系统运行状态不同,从而进程调度中的进程号访问密度不同。同一设备一段时间内系统稳定运行,进程号访问密度基本不变。设备稳定运行提供较小的信息熵,体现出较小的随机性。基于此,本文分析进程号访问密度,以系统中正在运行且进程号小于300的进程信息为设备特征信息源,提出两种设备特征生成方法。采用误识率、拒识率和等误率三个评价指标确定相似性匹配算法中的阈值,利用精准率、召回率和F_β分数对设备特征生成方法进行评价。
展开