掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Intel SGX的Kerberos安全增强方法

文献发布时间:2023-06-19 11:35:49


一种基于Intel SGX的Kerberos安全增强方法

技术领域

本方法涉及信息安全,Kerberos身份认证,Intel SGX技术

背景技术

Kerberos协议是分布式网络中一种重要的基于可信第三方认证协议,广泛应用于各主流操作系统以及云计算、大数据、物联网等场景.Kerberos协议最初是在八十年代末由麻省理工学院开发出来的,其设计目标是通过密钥系统为客户端/服务器端应用程序提供有效的认证服务。Kerberos适于在公共网络上进行分布计算,使用了加密技术和分布式数据库技术,随着计算机网络的发展,安全问题日益突出。身份认证机制是网络安全的基础,也是通信安全的第一道屏障,身份信息一旦被假冒,将严重损害被假冒者的利益。

而Kerberos作为广泛使用的身份认证机制仍然存在一定的缺陷,Kerberos认证协议基于可信第三方,一般把可信第三方称为KDC(密钥分发中心),KDC提供了通信参与者之间身份的相互认证,KDC密钥分发中心负责密钥的存储管理,需要安全可信的环境。

当前通过为应用提供隔离的安全执行环境来保证应用安全的方式主要有软件和硬件的两种保护方式。主流的软件保护方式是通过虚拟化的技术提供可信的系统执行安全敏感性较高的应用程序,全(部分)同态加密的密码学手段也被应用于保护云计算平台的用户数据安全。硬件保护方式主要有安全协处理器,可信平台模块(Trusted PlatformModule,TPM),ARM Trust Zone等相关技术。

英特尔SGX(Intel Software Guard Extensions)作为一种新的解决思路,是一套扩展的CPU指令,支持应用程序创建安全区(enclave),即应用程序地址中受保护的区域。安全区可以保障内部信息的机密性,完整性和可靠性,试图从软件角度访问安全区内存是不允许的。即使是高级特权软件(操作系统,虚拟机监控器等)也不允许访问。SGX技术中单个CPU可以运行多个安全enclaves,支持并发执行。因此SGX技术对API秘钥保护提供了新的可能。

SGX技术相对于以上技术的优势主要有以下几点。

(1)广适用性和强运算性能。SGX技术可以在较小开销的前提下,实现指定关键代码数据的隐私性和完整性的保证。

(2)小的可信计算基础。SGX技术的可信计算基础大小只包含处理器和Enclave中的代码,很大程度上增强了被保护代码数据的安全性能。

国内外研究者针对Kerberos协议的安全漏洞,提出了很多改进方案,主要有以下几种:

(1)使用公钥加密方法对Kerberos协议进行扩充的方案,用来抵御口令猜测攻击。

将非对称密钥和签名算法引入Kerberos协议的初始认证阶段来解决密钥管理问题,但是需要的计算资源和通信带宽也大大增加,且需要PKI的支持,部署起来更困难。

(2)在客户端通过增加随机数,或使用动态密钥来代替时间戳,或采用基于时间戳和MAC地址的双重验证,用来解决重放攻击问题。

但上述方法均增加了协议的计算复杂性和认证会话次数,取消时间戳机制,降低了Kerberos机制本身所具有的灵活性。

针对Kerberos的改进措施主要面向口令猜测和重放攻击,未关注Kerberos系统中KDC本身的安全问题。

通过分析Kerberos身份认证过程可知,KDC密钥分发中心的安全核心是TGS密钥,该密钥仅由KDC持有,用于加密和验证票据授权票据TGT(TGT包含了会话密钥和票据信息等重要信息),用于防止票据信息被篡改,一旦主密钥TGS密钥被获取,那么网络通信过程中票据中的用户信息、时间戳,以及会话密钥都可以随意获取和修改,涉及TGS密钥的主要有以下两个安全问题。

(1)存储安全问题。相比短期的会话密钥,TGS密钥属于长期密钥,客户端和应用服务器之间进行消息交互中使用到KDC颁发的密钥加密,因此更需要保障隐蔽安全性。而密钥存储在数据库中,这样,一旦Kerberos数据库被攻击,攻击者就能对交互过程中的消息进行解密,系统的安全性受到了严重的威胁。

(2)运行安全问题。KDC密钥中心在认证过程中,会涉及到使用TGS密钥在内存中进行加密与解密,此时针对于内存的攻击与监听都将威胁到密钥的安全。

发明内容

本发明的主要内容是通过使用Intel SGX技术的内存保护、数据加密技术,构建一个基于处理器可信的Kerberos身份认证系统。主要功能是保护Kerberos认证系统中的可信第三方KDC的TGS密钥的使用生命周期,具体指:

(1)在SGX的内存保护区域中安全使用密钥。

(2)对其使用后进行加密保存。

从而保障密钥使用生命周期的安全,进而防止获取和篡改票据信息,威胁Kerberos认证系统的安全。

为了实现上述发明目的:本发明提供了如下技术方案:一种基于SGX的Kerberos安全增强方法。在硬件层面上,中央处理器通过指令扩展和访问控制策略提供了EPC物理隔离内存区域,逻辑内存enclave存储程序和数据,通过内存映射存储在EPC中,实现内存隔离。内核层面上,SGX驱动为应用层提供创建enclave,数据密封等功能。应用层上,将KDC中涉及到TGS密钥的关键模块(初始化模块,使用模块,持久化存储模块)运行至安全区enclave中。该方案确保:尽可能减少性能开销,减少针对认证协议流程的修改。密封机制保障TGS密钥的持久化存储安全性,攻击者无法直接读取到明文的机密信息。内存隔离机制保障TGS密钥的动态安全,当KDC提供身份认证服务时无法通过操作系统或特权软件层面读取。

其特征在于,包括以下步骤:(1)Kerberos认证系统的安全初始化。(2)KDC密钥分发中心的认证服务的安全执行。(3)认证服务结束后密钥的安全存储。

(1)Kerberos认证系统的初始化包括:客户和应用服务器各主体以及密钥分发中心KDC首先检测Kerberos程序是否正确,确认无误之后进行程序安全配置并启动,其中KDC在系统安全区内完成主密钥的初始化和安全存储;

(2)KDC密钥分发中心的认证服务的安全执行包括:KDC进行认证服务,用户向KDC申请票据,KDC通过验证后授予用户票据,用户使用票据和应用服务器进行通信,其中KDC使用主密钥加密票据信息的过程使用SGX来保证内存安全。

(3)KDC认证服务结束后使用SGX加密封装主密钥包括:使用SGX密封技术加密结束使用的主密钥,将加密后的主密钥安全存储在数据库中。

进一步的,步骤(1)Kerberos认证系统初始化具体步骤包括:

(1-1):领域中的每个主体,即用户和应用服务器部署Kerberos程序,部署完毕后检查该程序是否已经遭到篡改。检查方式包括但不限于计算程序的哈希摘要值(如SHA256),并与该程序完成和发布版本的哈希摘要进行比对。检查无误后进入下一步,否则终止后续流程;

(1-2):用户进行程序配置,键入用户密码,程序通过单向哈希生成用户密钥,用于Kerberos身份验证。

(1-3):管理员在KDC部署Kerberos程序,部署完毕后检查该程序是否已经遭到篡改,检查无误后进入下一步,否则终止后续流程;

(1-4):管理员进行程序配置,创建Kerberos数据库,数据库包含所有主体,主体密码以及其他相关信息。由管理员键入主体信息。

(1-5):数据库中内置的krbtgt主体对应的密钥即为TGS密钥,由管理员键入密码字段。

(1-6)创建内存安全区,并调用Ecall可信接口函数,进入内存安全区,密码字段作为函数输入参数传入。

(1-7)在SGX安全区生成执行由密码字段派生TGS密钥的算法,密钥生成使用SGX加密技术加密后再保存至Kerberos数据库中。

进一步的,步骤(2)KDC密钥分发中心的认证服务的安全执行具体步骤包括:

(2-1):客户端C向KDC的认证服务器AS发出认证请求。C→AS:K

(2-2):KDC验证步骤(2-1)的认证请求。KDC通过数据库获得主体C对应的K

(2-3):验证通过后,客户端C得到访问票据授权服务器TGS的票据授权票据TGT。AS→Client:K

其中票据授权票据TGT的加密过程在SGX内存安全区中执行。首先从Kerberos数据库中读取经SGX加密封装的TGS密钥,在SGX内存安全区中解密出TGS密钥,在内存安全区内使用TGS密钥对票据授权票据进行加密。

(2-4):客户C将TGT发送给TGS服务器。Client→TGS:{TGT||Authenticator_1},其中Authenticator_1=SK

(2-5):TGS服务器接收步骤(2-4)Client发送的信息,并进行验证。

其中票据授权票据TGT的验证过程在SGX内存安全区中执行。在内存安全区内使用步骤(2-3)解密的TGS密钥对票据授权票据TGT进行解密,获取到SK

(2-6):验证通过后,TGS服务器向客户C授予票据。TGS→Client:SK

(2-7)客户C通过票据步骤(2-6)获得的Ticket票据与应用服务器进行通信。二者会使用SK

进一步的,步骤(3)认证服务结束后密钥的安全存储的具体步骤包括:

(3-1)在安全区内部执行扩展的CPU指令EGETKEY自动读取出硬件固化在CPU内部的SGX主派生密钥,并参与到AES-CMAC算法中进行密钥派生,生成唯一标识的安全区密钥。

(3-2)在安全区内部调用SDK封装提供的密封函数sgx_seal_data来封装密钥,函数检索通过策略生成的安全区密钥,并使用该密钥对TGS密钥进行AES-GCM加密。

(3-3)将加密后的TGS密钥存储至Kerberos数据库。

附图说明

图1是本发明的总体框架图。

图2是本发明的Kerberos认证系统的安全初始化流程图。

图3是Kerberos身份认证系统认证服务的安全执行流程图。

图4是密钥持久化存储流程图。

具体实施方式

本发明的目的是提供一个基于Intel SGX的Kerberos安全增强方法及系统,该方案的整体架构如图1所示,主要流程图如图2,图3所示。本发明主要包括三个模块:安全初始化模块,密钥保护的认证服务模块,密钥安全封装模块。

一、安全初始化模块主要是完成用户及应用服务器各主体以及KDC的Kerberos程序的部署,并完成相关的配置。主要步骤如下:

(1-1):用户和应用服务器部署Kerberos程序,部署完毕后检查该程序是否已经遭到篡改。

(1-2)用户进行程序配置,键入用户口令并生成用户密钥,用于Kerberos身份验证。

(1-3):管理员在KDC部署Kerberos程序,并进行程序配置,创建Kerberos数据库,数据库包含所有主体,主体密码以及其他相关信息。由管理员键入主体信息。

(1-4):数据库中内置的krbtgt主体对应的密钥即为TGS密钥,由管理员键入,使用SGX保护密钥键入生成过程,并将生成的TGS密钥使用SGX加密技术加密后再保存至Kerberos数据库中。

二、密钥保护的认证服务模块主要是完成认证服务,并使用SGX内存保护和加密技术保证认证服务过程中KDC服务器主密钥的使用安全。具体步骤包括:

(2-1):客户端C向KDC的认证服务器AS发出认证请求,Client使用自己的K

(2-2):KDC验证步骤(2-1)的认证请求。KDC通过数据库获得主体C对应的K

(2-3):验证通过后,AS认证服务器使用TGS密钥加密生成TGT(用于访问TGS服务器),其中票据授权票据TGT的加密过程在SGX内存安全区中执行。首先从Kerberos数据库中读取经SGX加密封装的TGS密钥,在SGX内存安全区中解密出TGS密钥并对信息加密生成TGT。

(2-4):客户C将TGT发送给TGS服务器。

(2-5):TGS服务器接收步骤(2-4)Client发送的信息,使用TGS密钥解密TGT,并验证是否合法。

其中票据授权票据TGT的验证过程在SGX内存安全区中执行:在内存安全区内使用步骤(2-3)解密的TGS密钥对票据授权票据TGT进行解密,来验证TGT当中的信息,包括Client的ID信息和时间戳TS(TS用于判断是否超过时间阈值),验证不通过,则认证服务结束。

(2-6):验证通过后,TGS服务器向客户C授予票据Ticket。

(2-7)客户C通过票据步骤(2-6)获得的Ticket票据与应用服务器进行通信。二者会使用SK

三、密钥安全封装模块主要是在认证服务完成结束后,完成针对密钥的密封存储操作,具体包括以下步骤:

(3-1)在KDC认证服务结束后,将处于内存安全区的主密钥TGS使用SGX加密技术加密;

(3-2)将加密后的TGS密钥存储至Kerberos数据库。

(1)保障了可信第三方KDC本身的密钥安全性。本发明将其核心密钥TGS使用生命周期纳入到可信硬件的保护,在密钥使用结束后加密封装后再保存至数据库,攻击者无法从内存或者数据库中嗅探到明文的TGS密钥,也限制了管理员和ROOT用户的特权性;攻击者无法通过窃听通信数据来解密出票据信息,保障了通信安全性。

(3)SGX技术本身具有安全性和高效性。有较小的可信基,因此具备灵活和高效性。经SGX密封机制加密的TGS密钥只有在相同的SGX内存安全区中才可以解密,用于加密TGS密钥的SGX根密钥的安全性是基于硬件级别的,确保TGS密钥的明文状态只存在于在SGX内存安全区中,安全性高。

相关技术
  • 一种基于Intel SGX的Kerberos安全增强方法
  • 基于联盟链的Kerberos及PKI安全域间的跨域认证方法
技术分类

06120112981252