CN108595950A - 一种结合远程认证的sgx安全增强方法 - Google Patents

一种结合远程认证的sgx安全增强方法 Download PDF

Info

Publication number
CN108595950A
CN108595950A CN201810346206.8A CN201810346206A CN108595950A CN 108595950 A CN108595950 A CN 108595950A CN 201810346206 A CN201810346206 A CN 201810346206A CN 108595950 A CN108595950 A CN 108595950A
Authority
CN
China
Prior art keywords
sgx
enclave
application programs
remote authentication
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810346206.8A
Other languages
English (en)
Inventor
王国军
舒扬
周雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Central South University
Original Assignee
Central South University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Central South University filed Critical Central South University
Priority to CN201810346206.8A priority Critical patent/CN108595950A/zh
Publication of CN108595950A publication Critical patent/CN108595950A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种结合远程认证的SGX安全增强方法。SGX的隔离区域Enclave的强安全性可以保证处于Enclave中数据和代码的保密性与完整性。也正是由于Enclave的保密性,使得安全检测工具不能对SGX应用程序的Enclave进行检查,这个特性被恶意攻击者利用就能在Enclave中实施攻击行为且能够隐藏攻击行为。本发明提出的方法是在SGX源码级别增加远程认证模块,通过远程认证在SGX应用程序运行前,远程服务器正对此应用程序进行可信性认证。如此便能够保证只有经过安全认证的SGX应用程序才能够在用户***中运行,杜绝了恶意SGX应用程序进入用户平台的可能。

Description

一种结合远程认证的SGX安全增强方法
技术领域
本发明属于计算机科学与技术领域,特别涉及一种结合远程认证的SGX安全增强方法。
背景技术
随着计算机技术的迭代和网络化在现实生活中的日益普及,各种计算机设备如个人电脑、手机、平板等逐渐成为人们生活的“必需品”。然而,伴随着网络化进程而来的种种便利之外,还有各种通过不正当方法以获取对攻击者有益信息的网络攻击。为了对抗层出不穷的攻击,保护用户设备及数据安全,出现了大量在软件层面、硬件层面对计算机设备进行保护的方法。如可信计算、ARM TrustZone、Intel Software Guard Extensions(SGX)等技术。
隔离的可信计算和代码执行对于保护敏感数据信息和工作流程免受其他恶意特权或非特权软件的攻击极为重要,也是现如今主要采用的方法之一。Intel公司在可信执行技术基础上,于2013年推出了一套新的CPU架构SGX,SGX软件防护扩展是Intel Skylake系列CPU架构中首次引入的一组安全扩展,是Intel指令集架构(ISA)的扩展,通过引入新的指令集和内存访问机制,为用户提供以软件为安全基础保障的可供应用程序使用的可信执行环境TEE(Trusted Execution Environment)。SGX允许应用程序将敏感数据和关键操作封装在一个被称为Enclave的隔离环境中。此被隔离的Enclave是在应用程序进程空间中划分出来的一块安全区域,此区域能够保证其中数据和代码的完整性和机密性,即使是在存在特权恶意软件(OS、Hypervisor)的情况下。对于SGX,可信计算基TCB只包括CPU与可信执行环境Enclave,SGX在拥有最小的TCB的情况下可以对应用程序进行全面的保护。SGX基本原理如附图1所示。
SGX的强安全保护性给安全研究人员提供了一种全面且稳固的安全保障手段,但是,恶意攻击人员也同样发现了SGX的“优点”。SGX中Enclave内容由于是被加密后保存在进程空间内,因此,在Enclave中实施攻击行为具有很高的隐蔽性。即不能被安全检测攻击检测出来,又可以很好隐藏恶意攻击行为。导致恶意的SGX应用软件在运行时能够肆无忌惮的实施自己的攻击行为,不用担心被查杀。既然,在运行时几乎不能够发现恶意SGX应用程序,那么可以通过某种安全机制防止恶意SGX应用程序的运行。本发明提出的方法便是通过远程认证的方式,对即将在平台上运行的SGX应用程序进行安全性验证,防止安全性未知的SGX应用程序在用户***中的运行,从而对用户***造成破坏。
发明内容
本发明提供了一种结合远程认证的SGX安全增强方法,该方法在SGX创建Enclave并进行初始化过程中,通过增加远程认证模块,将此SGX应用程序的可执行文件的SHA1值作为认证信息,发送至事先保存了可信应用程序可执行文件SHA1值的远程服务器进行可信性验证。以验证结果来判断此SGX应用程序的来源是否可靠,如此便能够对SGX应用程序的安全属性进行甄别,防止恶意SGX应用程序进入用户***。
一种结合远程认证的SGX安全增强方法,包括以下步骤:
步骤1:初始化操作
步骤1.1:启动支持SGX的机器并进入基本输入输出***BIOS(Basic InputOutput System),在BIOS的Security列表下设置Security Boot项为Disable;
步骤1.2:下载并安装SGX Driver;
步骤1.3:返回至步骤1.1并将Security列表下的Security Boot项重新设置为原来的Enable;
步骤1.4:下载官方开源的SGX Software Development Kit(SDK)和Intel SGXPlatform Software(PSW);
步骤2:构建并运行远程服务器。此服务器用于接受并处理来自SGX应用程序的连接请求,对SGX应用程序发送过来的数据进行验证,并将验证结果返回给SGX应用程序。
步骤3:对目录linux-sgx-master/psw/urts下的源文件enclave.cpp中的函数CEnclave::initialize()进行如步骤4、步骤5、步骤6、步骤7和步骤7的改造,增加远程认证模块。并在对Enclave进行定义的头文件enclave.h中增加表示远程认证状态的成员变量flag_authenticate。
所述linux-sgx-master是从官方Github上下载的开源SGX Linux版本。
步骤4:根据成员变量flag_authenticate的值判断此SGX应用程序的远程认证状态。
步骤5:获取本SGX应用程序可执行文件的路径。调用readlink()函数获得应用程序可执行文件的绝对路径,并由绝对路径提取出可执行文件名。然后执行步骤6。
步骤6:计算应用程序可执行文件的SHA1值。
步骤7:将可执行文件名和可执行文件SHA1值发送至远程服务器。
步骤8:根据远程服务器的验证结果Result选择执行步骤8或者步骤9。
步骤9:承接原函数CEnclave::initialize()代码运行。正常情况下此函数将对创建的Enclave进行初始化,初始化成功返回SGX_SUCCESS,否则返回相对应的错误代码。
步骤10:调用进程终止函数abort()。
有益效果
本发明提供一种结合远程认证的SGX安全增强方法。SGX的隔离区域Enclave的强安全性可以保证处于Enclave中数据和代码的保密性与完整性。也正是由于Enclave的保密性,使得安全检测工具不能对SGX应用程序的Enclave进行检查,这个特性被恶意攻击者利用就能在Enclave中实施攻击行为且能够隐藏攻击行为。本发明提出的方法是在SGX源码级别增加远程认证模块,通过远程认证在SGX应用程序运行前,远程服务器正对此应用程序进行可信性认证,如附图2所示。如此便能够保证只有经过安全认证的SGX应用程序才能够在用户***中运行,杜绝了恶意SGX应用程序进入用户平台的可能。
附图说明
附图1为SGX整体架构示意图;
附图2为本发明架构示意图;
附图3为本发明中函数CEnlave::initialize()改造流程图。
具体实施方式
下面结合具体实例和说明书附图对本发明作进一步说明。如附图3所示。
在本实施方案中,实验平台为一台配置Inter(R)Core(TM)i5-6300HQ中央处理器,8GB内存的Lenovo笔记本,操作***为64位Ubuntu 16.04.3LTS。
步骤1:初始化操作
步骤1.1:启动支持SGX的机器并进入基本输入输出***BIOS(Basic InputOutput System),在Security列表下设置Security Boot项为Disable;在Lenovo机器上进入BIOS的方式为,在开机阶段按F2键。进入BIOS界面后可以用方向键进行选择,设置成功之后按F10保存设置并退出即可。
步骤1.2:下载并安装SGX Driver;
Linux平台下开源的SGX Driver下载地址为:https://github.com/01org/linux-sgx。
步骤1.3:返回至步骤1.1并将Security列表下的Security Boot项重新设置为原来的Enable;
步骤1.4:下载官方开源的SGX Software Development Kit(SDK)和Intel SGXPlatform Software(PSW);Github上的开源代码下载地址为:https://github.com/01org/linux-sgx。
所述支持SGX的机器指的是配备Intel 6代及更新型系列中央处理器(CPU)的计算机;
所述Software Development Kit(SDK)是建立SGX应用程序的开发工具集合;
所述Intel SGX Platform Software(PSW)包含了SGX运行的支撑工具以及调试工具等。
步骤2:构建并运行远程服务器。此服务器用于接受并处理来自SGX应用程序的连接请求,对SGX应用程序发送过来的数据进行验证,并将验证结果放回给SGX应用程序。
所述远程服务器可以采用多线程技术,结合MySQL数据库。首先将平台上允许用户运行的SGX应用程序信息保存至MySQL数据库中,此SGX应用程序信息在MySQL数据库中可以以名为SGX_App_table的数据库表的形式存在,此表中包括两个属性,分别为可执行文件名称SGX_App_Name和可执行文件SHA1值SGX_App_SHA1。
所述的数据库表SGX_App_table将在步骤6中的远程服务器验证过程中提供依据。
所述SGX_App_table中保存的为经过平台安全检测认证,允许用户执行的SGX应用程序。如果平台用户运行的是不存在此表中的应用程序或者SGX_App_SHA1值不匹配的SGX应用程序,将被认为此SGX应用程序来源不可靠,此SGX应用程序本身有可能是恶意程序,因此,在用户终端上拒绝此应用程序的执行。
在远程服务器进行认证过程中,首先进行SGX_App_Name的匹配,匹配成功则继续进行SGX_App_SHA1的匹配,否则向SGX应用程序返回表示验证不通过的值FAILED;GX_App_SHA1值的匹配也通过时,向SGX应用程序返回表示验证通过的值SUCCESS,否则,返回FAILED。
步骤3:在目录linux-sgx-master/psw/urts中找到enclave.cpp,然后通过步骤4、步骤5、步骤6、步骤7对其中的函数CEnclave::initialize()进行改造,增加远程认证模块。
所述linux-sgx-master是从官方Github上下载的开源SGX Linux版本。
在对enclave.cpp进行改造的同时,还需要在enclave.h中增加一个成员变量。static int flag_authenticate=0。此变量表示此SGX应用程序是否经过远程认证,默认值为0表示未经过远程认证。由于一个SGX应用程序可以创建多个Enclave,因此,此变量的另一个作用为:当SGX应用程序创建的Enclave数量大于1时,此后在创建Enclave时就能够根据此变量来判断是否需要进行远程认证,如果flag_authenticate=1时,表示此SGX应用程序已经经过远程认证,且认证结果为SUCCESS。如果flag_authenticate=-1时,表示此SGX应用程序已经经过远程认证,且认证结果为FAILED。
步骤4:根据成员变量flag_authenticate的值判断此SGX应用程序的远程认证状态。
SGX应用程序的远程认证状态由成员变量flag_authenticate表示,具体表示如步骤3所述。当flag_authenticate为0时,进入步骤5;当flag_authenticate为1时,进入步骤9;当flag_authenticate为-1时,进入步骤10。
步骤:5:获取本SGX应用程序可执行文件的路径。调用readlink()函数获得应用程序可执行文件的绝对路径,并由绝对路径提取出可执行文件名。然后执行步骤6。
所述readlink()函数的调用方式为:readlink("/proc/self/exe",path,1024),如此便能够将改SGX应用程序的可知文件路径保存在长度为1024个字节的字符数组path中。
步骤6:计算应用程序可执行文件的SHA1值。
由步骤5获得的可执行文件路径path,就可以利用SGX中的散列函数sgx_sha256_get_hash()计算出应用程序可执行文件的SHA1值。另外,从可执行文件路径path中,可以截取到可执行文件名name。
步骤7:将可执行文件名和可执行文件SHA1值发送至远程服务器。
所述可执行文件名name和可执行文件SHA1值可以从步骤6中得到。然后将可执行文件name和SHA1值打包成一个认证消息结构体msg_authenticate,通过网络编程接口Socket发送至远程服务器。
远程服务器接收到认证消息结构体,并按照特定的格式解析之后,进行如所述步骤2的步骤进行查询MySQL表信息进程认证。认证完成后,将认证结果Result放回至SGX应用程序。
步骤8:根据远程服务器的验证结果Result选择执行步骤8或者步骤9
SGX应用程序接收到来自远程服务器的认证结果之后,根据返回的认证结果,进行如下操作:若返回的认证结果为SUCCESS,将flag_authenticate赋值为1,并继续进行步骤9的执行;若返回的认证结果为FAILED,将flag_authenticate赋值为-1,并继续进行步骤10的执行。
步骤9:承接原函数CEnclave::initialize()代码运行。正常情况下此函数将对创建的Enclave进行初始化,初始化成功返回SGX_SUCCESS,否则返回相对应的错误代码。
步骤10:调用进程终止函数abort()。
函数abort()的调用将直接结束本进程。进入此步骤说明,此SGX应用程序的远程认证结果没有通过。表示此SGX应用程序是没有得到平台安全认证的不可靠来源应用程序,若此应用程序被执行有可能对用户造成潜在的威胁。为了防范于未然,选择将此潜在的威胁扼杀在摇篮。

Claims (1)

1.一种结合远程认证的SGX安全增强方法,其特征在于,包括以下步骤:
步骤1:初始化操作
步骤1.1:启动支持SGX的机器并进入基本输入输出***BIOS(Basic Input OutputSystem),在BIOS的Security列表下设置Security Boot项为Disable;
步骤1.2:下载并安装SGX Driver;
步骤1.3:返回至步骤1.1并将Security列表下的Security Boot项重新设置为原来的Enable;
步骤1.4:下载官方开源的SGX Software Development Kit(SDK)和Intel SGXPlatform Software(PSW);
步骤2:构建并运行远程服务器。此服务器用于接受并处理来自SGX应用程序的连接请求,对SGX应用程序发送过来的数据进行验证,并将验证结果返回给SGX应用程序。
步骤3:对目录linux-sgx-master/psw/urts下的源文件enclave.cpp中的函数CEnclave::initialize()进行如步骤4、步骤5、步骤6、步骤7和步骤7的改造,增加远程认证模块。并在对Enclave进行定义的头文件enclave.h中增加表示远程认证状态的成员变量flag_authenticate。
所述linux-sgx-master是从官方Github上下载的开源SGX Linux版本。
步骤4:根据成员变量flag_authenticate的值判断此SGX应用程序的远程认证状态。
步骤5:获取本SGX应用程序可执行文件的路径。调用readlink()函数获得应用程序可执行文件的绝对路径,并由绝对路径提取出可执行文件名。然后执行步骤6。
步骤6:计算应用程序可执行文件的SHA1值。
步骤7:将可执行文件名和可执行文件SHA1值发送至远程服务器。
步骤8:根据远程服务器的验证结果Result选择执行步骤8或者步骤9。
步骤9:承接原函数CEnclave::initialize()代码运行。正常情况下此函数将对创建的Enclave进行初始化,初始化成功返回SGX_SUCCESS,否则返回相对应的错误代码。
步骤10:调用进程终止函数abort()。
CN201810346206.8A 2018-04-18 2018-04-18 一种结合远程认证的sgx安全增强方法 Pending CN108595950A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810346206.8A CN108595950A (zh) 2018-04-18 2018-04-18 一种结合远程认证的sgx安全增强方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810346206.8A CN108595950A (zh) 2018-04-18 2018-04-18 一种结合远程认证的sgx安全增强方法

Publications (1)

Publication Number Publication Date
CN108595950A true CN108595950A (zh) 2018-09-28

Family

ID=63613584

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810346206.8A Pending CN108595950A (zh) 2018-04-18 2018-04-18 一种结合远程认证的sgx安全增强方法

Country Status (1)

Country Link
CN (1) CN108595950A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726588A (zh) * 2018-12-21 2019-05-07 上海邑游网络科技有限公司 基于信息隐藏的隐私保护方法和***
CN111382445A (zh) * 2020-03-03 2020-07-07 首都师范大学 利用可信执行环境***提供可信服务的方法
CN112182560A (zh) * 2020-09-17 2021-01-05 上海交通大学 针对Intel SGX内部高效的隔离方法、***及介质
CN113302893A (zh) * 2019-01-08 2021-08-24 华为技术有限公司 用于信任验证的方法及装置
CN113721919A (zh) * 2021-08-09 2021-11-30 上海交通大学 基于Intel SGX可信执行环境的在线编译混淆实现方法
CN113810382A (zh) * 2021-08-24 2021-12-17 东北大学秦皇岛分校 一种用于抵御sgx侧信道攻击的密文加载方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726588A (zh) * 2018-12-21 2019-05-07 上海邑游网络科技有限公司 基于信息隐藏的隐私保护方法和***
CN113302893A (zh) * 2019-01-08 2021-08-24 华为技术有限公司 用于信任验证的方法及装置
CN113302893B (zh) * 2019-01-08 2022-11-18 华为云计算技术有限公司 用于信任验证的方法及装置
CN111382445A (zh) * 2020-03-03 2020-07-07 首都师范大学 利用可信执行环境***提供可信服务的方法
CN111382445B (zh) * 2020-03-03 2023-04-07 首都师范大学 利用可信执行环境***提供可信服务的方法
CN112182560A (zh) * 2020-09-17 2021-01-05 上海交通大学 针对Intel SGX内部高效的隔离方法、***及介质
CN112182560B (zh) * 2020-09-17 2022-04-26 上海交通大学 针对Intel SGX内部高效的隔离方法、***及介质
CN113721919A (zh) * 2021-08-09 2021-11-30 上海交通大学 基于Intel SGX可信执行环境的在线编译混淆实现方法
CN113721919B (zh) * 2021-08-09 2024-03-12 上海交通大学 基于Intel SGX可信执行环境的在线编译混淆实现方法
CN113810382A (zh) * 2021-08-24 2021-12-17 东北大学秦皇岛分校 一种用于抵御sgx侧信道攻击的密文加载方法

Similar Documents

Publication Publication Date Title
JP6888011B2 (ja) 信頼できる実行環境を有するモバイル装置
CN106778103B (zh) 一种安卓应用程序防逆向破解的加固方法、***及解密方法
CN108595950A (zh) 一种结合远程认证的sgx安全增强方法
EP3674954B1 (en) Security control method and computer system
Parno et al. Bootstrapping trust in modern computers
JP6227772B2 (ja) 動的ライブラリを保護する方法及び装置
US10659237B2 (en) System and method for verifying integrity of an electronic device
US20160203087A1 (en) Method for providing security for common intermediate language-based program
Liu et al. On manually reverse engineering communication protocols of linux-based iot systems
JP2008537224A (ja) 安全な起動方法およびシステム
CN107430650B (zh) 保护计算机程序以抵御逆向工程
CN112749088B (zh) 应用程序检测方法、装置、电子设备和存储介质
Ibrahim et al. SafetyNOT: on the usage of the SafetyNet attestation API in Android
Lim et al. Structural analysis of packing schemes for extracting hidden codes in mobile malware
CN114662150A (zh) 一种数据获取方法、装置及电子设备
CN112134905B (zh) 基于安卓***的签名方法、装置以及设备
CN108563953B (zh) 一种安全可扩展的可信应用开发方法
CN112861137A (zh) 安全固件
Msgna et al. Secure application execution in mobile devices
KR20190128534A (ko) 기능확장을 위한 신뢰실행환경들의 결합 방법 및 비즈니스 프로세스 지원을 위한 fido u2f 활용 방법
CN115048630A (zh) 应用程序的完整性校验方法及装置、存储介质及电子设备
Egners et al. Hackers in your pocket: A survey of smartphone security across platforms
DONG et al. Sesoa: Security enhancement system with online authentication for android apk
Zhang et al. Design and implementation of trustzone-based blockchain chip wallet
CN108595981B (zh) 加密安卓***的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180928

WD01 Invention patent application deemed withdrawn after publication