论文部分内容阅读
HDFS的安全认证机制是分布式环境下保障数据进行安全交互的第一道关卡,它可以有效防止非法用户的入侵,保障集群的安全,对其进行研究具有重大的实际及应用意义。传统HDFS的安全认证机制直接采用了kerberos第三方认证协议,该机制采用了KDC作为认证中心来集中处理大量DataNode节点的安全认证,因此容易引发单点负载过重、重复认证、重放攻击、密钥多次分配等安全漏洞,所以,本文针对现有安全机制出现的问题展开研究,具体研究内容包括:(1)针对传统HDFS认证机制中由KDC认证中心集中处理大量DataNode节点的安全认证所引发的单点负载过重、重复认证和重放攻击问题,改进了客户端Client、认证中心端KDC、命名节点端NameNode和数据节点端DataNode的整体认证过程,引进令牌推送机制,将HDFS认证过程重新规划为三个阶段,建立HDFS认证协议改进模型----HDFS-TPK认证模型。该模型将认证过程分为三个阶段进行,即NameNode票据认证阶段、基于KDC的Agent令牌生成和推送阶段、DataNode数据访问认证阶段。KDC在NameNode票据认证后直接生成Agent跨节点令牌并推送给所有DataNode,用户访问DataNode时不再经过KDC进行认证,而是直接采用令牌来进行认证,从而极大地缓解KDC认证服务器的负载,同时也减少了通过KDC的重复认证;另外,在Client与NameNode及DataNodes的认证包中引入一个新的参数T-nonce,该参数是由时间戳和IP地址经过hash处理得到的,参数生成函数中结合时间戳Timestamp和IP地址确保它的实时性和唯一性,使非法用户无法实施重放攻击。(2)HDFS因存在大量DataNode节点,Clilent访问这些数据节点的认证过程中要生成很多会话密钥用于加解密认证过程中的消息包,从而容易导致密钥的多次发放和重复存储。本文在HDFS-TPK模型中引入基于多级单向哈希链的HDFS密钥管理机制。KDC在第一阶段对NameNode票据进行认证时,为本次用户服务生成根密钥k0并随着Agent令牌被一起分发给所有DataNode节点,在DataNode上建立主密钥链,采用数组方式保存每次用户服务的根密钥和副密钥链表头。在认证过程中,从主密钥链中查到本次用户服务的根密钥K0和副密钥链,并根据访问序列号Seq值生成对应的密钥值进行加解密操作,并把该密钥值加入副密钥链。因为采用了存储在本地的密钥链机制从而避免了会话密钥多次分配和重复存储的问题。另外,采用多级单向哈希链加解密的密钥都是由哈希函数进行生成的,因此可以确保每次获取到不同的密钥值,由此可以有效规避口令猜测攻击;副密钥链在本次用户服务结束后即被释放,简化了密钥的管理操作。(3)将本文提出的基于HDFS-TPK的HDFS认证机制与传统基于Kerberos的HDFS认证机制进行对比实验与分析。首先,搭建实验平台,将HDFS-TPK和Kerberos分别部署Hadoop集群上,通过实验验证表明,改进后的模型可以有效解决传统身份认证模型中存在的单点负载过重问题、重复认证问题、重放攻击问题。尤其在面向大量数据节点的集群系统中效果显著。另外,实验表明,改进后的密钥管理机制,由于简化了密钥管理过程,从而缩短用户认证的时间,有效避免了口令猜测攻击。