【Ubuntu18.04配置sgx环境】

Ubuntu18.04中配置sgx环境:

提示:本教程仅仅适用于Ubuntu18.04系统,而不一定适合ubuntu虚拟机
提示:本教程仅仅适用于计算机CPU支持sgx的电脑,配置真实环境,不使用模拟环境https://ark.intel.com/content/www/us/en/ark.html#@PanelLabel12213 为Intel提供硬件信息的官方网址,输入电脑CPU型号,查看是否有SGX支持。如下图一所示,则CPU支持sgx

图一

大体步骤:

  1. 在bios中开启sgx服务(enabled),设置大小为128MB(这是我电脑能设置的最大的了,更大的应该也行)
  2. 在电脑上装好ubuntu18.04系统
  3. 安装sgx驱动
  4. 安装sgx sdk
  5. 安装sgx psw
  6. 测试是否配置成功(运行样例enclave程序)

详细步骤:

第一步:在bios中开启sgx服务

  1. 百度如何在自己类型的电脑进入bios界面
    例如DELL是开机启动时不停按F2键

  2. 在bios中找到Software Guard Extendsions(SGX)项
    推荐设置为Enabled(又称启用状态),如果没有Enabled也可以设置为Software Controlled(又称软件控制,此时sgx仍处于禁用状态,直到通过软件应用程序启用为止)
    然后在紧接着的下一行将内存大小设置为可选项中的最大值(我电脑最大支持128MB)
    结果如下图二所示

图二

第二步:在电脑上装好ubuntu18.04系统

  1. 此处ubuntu系统不能是虚拟机,要在电脑上直接安装Ubuntu系统,可以在windows系统下安装双系统ubuntu。
  2. 进入Ubuntu系统,从这一步开始,一直在Ubuntu18.04中运行。
  3. 在Ubuntu18.04系统上,安装一些必要的包,例如gcc,make等。
    输入以下命令
    sudo apt install gcc
    sudo apt install make
    注意,在下面的命令运行过程中,如果有报错,可能是提示缺少一些库,且会提示安装对应库。按照提示安装即可。

第三步: 安装sgx驱动

  • 在这要检查硬件,通过编译一个小程序判断环境是否支持SGX
    情况一: BIOS中SGX如果设置为Enabled,则可以在终端中按序输入以下命令,进行编译小程序
    git clone https://github.com/ayeks/SGX-hardware.git
    cd SGX-hardware
    gcc test-sgx.c -o test-sgx
    ./test-sgx

      			执行结果如下,则代表硬件环境支持SGX
      			Extended feature bits (EAX=07H, ECX=0H)
      			eax: 0 ebx: 29c6fbf ecx: 0 edx: 0
      			sgx available: 1  (注意:此处一定要为1)
      			
      			CPUID Leaf 12H, Sub-Leaf 0 of Intel SGX Capabilities (EAX=12H,ECX=0)
      			eax: 1 ebx: 0 ecx: 0 edx: 241f
      			sgx 1 supported: 1  (注意:此处一定要为1)
      			sgx 2 supported: 0
      			MaxEnclaveSize_Not64: 1f
      			MaxEnclaveSize_64: 24
      			(注意:执行结果别处可以有细微不同,只要标记注意的地方为1就可以)
    

    情况二: BIOS中SGX如果设置为Software Controlled(又称软件控制),则应该通过软件应用程序启用sgx。这一步请自行百度。启用后,按照情况一执行命令,编译小程序判断环境是否支持sgx即可。

  • 下载安装驱动sgx-driver

    1. 进入以下网站,将三个bin文件下载。(默认下载到/home/用户名/Downloads文件夹下)
      https://download.01.org/intel-sgx/sgx-linux/2.13/distro/ubuntu18.04-server/
    2. 到下载文件夹下,输入
      sudo chmod 777 sgx_linux_x64_driver_2.11.0_0373e2e.bin
      以赋予这个.bin文件执行权限
    3. 运行这个.bin文件
      sudo ./sgx_linux_x64_driver_2.11.0_0373e2e.bin
      ok,驱动安装完成
  • 准备阶段

    1. 安装编译SGX SDK要用到的工具
      sudo apt-get install build-essential ocaml ocamlbuild automake autoconf libtool wget python libssl-dev git cmake perl
      该命令默认安装在系统上,所以可以在任何位置运行,不用担心安装位置
      由于网络原因,有些包容易安装失败,出现失败情况,不用担心,重复运行这条命令,直至全部安装成功即可。

    2. 安装编译SGX PSW要用到的工具
      sudo apt-get install libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev debhelper cmake reprepro unzip
      该命令默认安装在系统上,所以可以在任何位置运行,不用担心安装位置

    3. 从仓库获取源码
      到下载文件夹下,输入
      git clone https://github.com/intel/linux-sgx.git
      运行成功后,下载文件夹中将会多出一个linux-sgx文件。
      进入下边这个网站,将整个项目down下来,然后把./QuoteVerification和./QuoteGeneration俩文件夹直接copy到 linux-sgx/external/下。
      https://github.com/intel/SGXDataCenterAttestationPrimitives/
      到下载文件夹下,输入
      cd linux-sgx && make preparation

    4. 把准备好的工具列表添加到全局变量中,方便之后编译工作的展开
      到linux-sgx文件夹下,输入以下命令
      sudo cp external/toolset/{current_distr即当前系统的版本}/{as,ld,objdump} /usr/local/bin
      再用下面这个语句检查是不是添加成功:
      which as ld objdump

    5. 编译SGX SDK和SGX SDK安装工具(installer)
      进入linux-sgx文件夹,输入以下命令
      make sdk
      运行完成后,再输入以下命令
      make sdk_install_pkg
      成功运行的话,在linux-sgx/linux/installer/bin文件夹下会有一个sgx_linux_x64_sdk_${version}.bin文件生成

第四步: 安装SGX SDK

  • 安装好需要用到的工具
    输入以下命令
    sudo apt-get install build-essential python
    该命令默认安装在系统上,所以可以在任何位置运行,不用担心安装位置
  • 安装sdk
    进入linux-sgx文件夹,输入以下两条命令
    cd linux/installer/bin
    ./sgx_linux_x64_sdk_${version}.bin
    注意:运行第二条命令时,它询问是否安装在当前文件夹的时候,最好选择“no”,然后输入/opt/intel/, 即将SGX SDK安装在/opt/intel/文件夹下。
    安装好了之后,会显示它安装的路径,记下来,以后编译运行sgx程序的时候需要先运行以下命令,令开发环境生效
    source /opt/intel/sgxsdk/environment
    该命令在任何位置都可运行
    运行该命令

第五步: 安装SGX PSW

  • 命令行运行以下命令添加下载Intel sgx psw的下载路径
    echo ‘deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu bionic main’ | sudo tee /etc/apt/sources.list.d/intel-sgx.list
    该命令在任何位置都可运行
  • 命令行运行以下命令,添加仓库拉取的ssh密钥
    wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -
    运行后等一会儿看到【ok】就是运行成功。
    该命令在任何位置都可运行
  • 更新一下apt-get的列表
    sudo apt-get update
    该命令在任何位置都可运行
  • 分别安装SGX PSW 提供的3个服务
    分别是launch、EPID-based attestation和Algorithm agnostic attestation
    输入以下命令
    sudo apt-get install libsgx-launch libsgx-urts
    sudo apt-get install libsgx-epid libsgx-urts
    sudo apt-get install libsgx-quote-ex libsgx-urts
    sudo apt-get install libsgx-dcap-ql //但这句其实可能是没有用的,但是还是运行吧。
    该命令默认安装在系统上,所以可以在任何位置运行,不用担心安装位置
    安装完毕,可以在/opt/intel/目录下找到一个sgx-asem-services目录

第六步: 测试是否配置成功

进入安装目录(我的是/opt/intel/sgxsdk),再进入/SampleCode/SampleEnclave目录

  1. 首先准备一下编译环境
    输入以下命令
    source /opt/intel/sgxsdk/environment
  2. 查看当前文件目录:
    输入以下命令
    ls
    结果返回为
    App Enclave Include Makefile README.txt
  3. 编译
    输入以下命令
    make
  4. 再次查看文件目录
    输入以下命令
    ls
    结果返回为
    app App Enclave enclave.signed.so enclave.so Include Makefile README.txt
  5. 运行
    输入以下命令
    ./app
    结果返回如下
    Checksum(0x0x7ffd6d822ff0, 100) = 0xfffd4143
    Info: executing thread synchronization, please wait…
    Info: SampleEnclave successfully returned.
    Enter a character before exit …
    hello world
    恭喜,环境配置成功!!!

最后十分感谢我所参考的博主分享的教程
假如对我的某些步骤不理解,可以去这个大佬的文章中研究。
参考链接:
https://blog.youkuaiyun.com/weixin_40893822/article/details/114005699
推荐以下链接,研究BIOS中Software Controlled(又称软件控制)的原理,以及如何通过软件启用sgx(不一定管用,但是看看也能了解些信息)
https://www.idcbest.com/idcnews/11006171.html
https://github.com/intel/sgx-software-enable
https://blog.youkuaiyun.com/kimbing/article/details/120023776

评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值