以下配置已经在ubuntu 18.04上测试通过, ubuntu16.04以为很多默认so库版本过低(比如glibc, gcc等),需求额外做一些事情, 所有非常建议使用ubuntu18.04 作为编译环境。


Graphene with out SGX

Clone the Graphene Repository:

git clone https://github.com/oscarlab/graphene.git

Build Graphene:

sudo apt-get install -y build-essential autoconf gawk bison
cd graphene
make

Build and Run helloworld:

cd LibOS/shim/test/native
make
./pal_loader helloworld

Test LMBench Application:

cd ../../../../Examples/lmbench
make
cd lmbench-2.5/bin/linux
./pal_loader lat_syscall null
./pal_loader lat_syscall open
./pal_loader lat_syscall read
./pal_loader lat_proc fork


Graphene with SGX

需求

1. 保证BIOS已经打开SGX的开关
2. 已安装Intel SGX SDK
3. 已安装Intel SGX 的driver
4. 已安装Intel SGX PSW相关服务(尤其是aesmd service, 因为graphene APP 编译时刻需要请求aesmd生成一个token)

编译安装Intel SGX相关

  • 编译 Intel SGX 的 SDK 和 PSW
// 下载SGX 相关的代码
# git clone https://github.com/intel/linux-sgx.git
// 安装编译所需的一些工具
# cd linux-sgx
# sudo apt-get install build-essential ocaml ocamlbuild automake autoconf libtool wget python libssl-dev git cmake perl
# sudo apt-get install libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev debhelper cmake reprepro
// 下载一些SGX提供的预编译好的库
# ./download_prebuilt.sh
// 复制SGX预提供的一些toolset到/usr/local/bin
# sudo cp external/toolset/{as,ld,ld.gold,objdump} /usr/local/bin
// 编译SDK 的安装包, 生成的目录为: linux/installer/bin/sgx_linux_x64_sdk_${version}.bin
# make sdk_install_pkg DEBUG=1 -j32
// 编译PSW 的安装包, 生成的目录为: linux/installer/deb/
# make deb_psw_pkg -j32
  • 安装Intel SGX 的 SDK 和 PSW
// 安装SDK
# cd linux/installer/bin
# ./sgx_linux_x64_sdk_${version}.bin
# source ${sgx-sdk-install-path}/environment// 安装PSW
sudo apt-get install libssl-dev libcurl4-openssl-dev libprotobuf-dev
// 目前测试感觉好像只依赖urts 和aesm 2个service, 所有只安装了这2个, 暂时没发现问题, 如果有需要可以尝试安装其他的
# cd linux/installer/deb
# sudo dpkg -i libsgx-urts/*.deb
# sudo dpkg -i sgx-aesm-service/*.deb// aesmd 服务相关
# sudo service aesmd status
# sudo service aesmd start
# sudo service aesmd restart
// 有时候需要配置aesmd的proxy
# sudo vim /etc/aesmd.conf
// 添加或修改, 修改完记得重启aesmd service
proxy type = manual
aesm proxy = http://xxx:port/
  • 编译安装Intel SGX driver
// 下载driver相关的代码
# git clone https://github.com/intel/linux-sgx-driver.git
# cd linux-sgx-driver
# make -j32// 安装SGX的驱动, 可以将下面几条命令放到一个自定义的脚本里面运行
# sudo mkdir -p "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"
# sudo cp isgx.ko "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"
# sudo sh -c "cat /etc/modules | grep -Fxq isgx || echo isgx >> /etc/modules"
# sudo /sbin/depmod
# sudo /sbin/modprobe isgx// 检查驱动是否安装成功
# lsmod |grep sgx// 卸载SGX的驱动, 同样建议将下面命令放到一个自定义的脚本里运行
# sudo /sbin/modprobe -r isgx
# sudo rm -rf "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"
# sudo /sbin/depmod
# sudo /bin/sed -i '/^isgx$/d' /etc/modules
  • 检查Intel SGX的状态
lsmod | grep sgx  // 应该可以看到isgx
ps ax | grep [a]esm_service // 查看asesm的状态

编译Graphene-SGX 相关

// 下载graphene的代码
# git clone https://github.com/oscarlab/graphene.git
# cd graphene
# git submodule update --init -- Pal/src/host/Linux-SGX/sgx-driver/
# export GRAPHENE_DIR=$PWD// 准备一个3K的RSA key用来前面APP
# cd $GRAPHENE_DIR/Pal/src/host/Linux-SGX/signer
# openssl genrsa -3 -out enclave-key.pem 3072// 编译和安装Graphene-SGX的驱动
# cd $GRAPHENE_DIR/Pal/src/host/Linux-SGX/sgx-driver
# make // 改名了会要求你输入sgx.h的路径, 我们可以选择Intel SGX driver对应的source code目录
# sudo insmod gsgx.ko// 编译Graphene-SGX
# sudo apt-get install -y build-essential autoconf gawk bison libcurl4-openssl-dev \
python3-protobuf libprotobuf-c-dev protobuf-c-compiler
# cd $GRAPHENE_DIR
# make SGX=1// 设置mmap_min_addr, 这个目前好像是SGX的一个workaround
# sudo sysctl vm.mmap_min_addr=0// 编译和运行Helloworld
# cd $GRAPHENE_DIR/LibOS/shim/test/native
# make SGX=1
# make SGX=1 sgx-tokens
# SGX=1 ./pal_loader helloworld// 编译和运行lmbench
cd $GRAPHENE_DIR/Examples/lmbench
make SGX=1
cd lmbench-2.5/bin/linux
SGX=1 ./pal_loader lat_syscall null
SGX=1 ./pal_loader lat_syscall open
SGX=1 ./pal_loader lat_syscall read
SGX=1 ./pal_loader lat_proc fork

Graphene-SGX 总结相关推荐

  1. 4.3 论文笔记 | Achieving Keyless CDNs with Conclaves

    Achieving Keyless CDNs with Conclaves Achieving Keyless CDNs with Conclaves Achieving Keyless CDNs w ...

  2. SGX,为数据处理构建硬件级 “安全隔离区” | 至强秘笈

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 通过数据协同,引入更多源.多维.高质量的数据来打破数据孤岛,已成为各行各业深入开展大数据和AI应用,充分挖掘数据价值,进而加速推进数字化和智能化转 ...

  3. Intel SGX Remote Attestation实例代码安装和执行,笔记

    Windows10, x64,安装了visual studio,已经安装好了Intel SGX JDK. 源码下载:https://github.com/intel/sgx-ra-sample 源码说 ...

  4. 通俗理解SGX attestation

    英特尔CPU从第六代酷睿开始增加了SGX特性,含有Intel Xeon版服务器级的CPU也包含了,比如Intel Xeon E3 v6.它是Software Gaurd Extensions的缩写,目 ...

  5. 详细介绍Intel SGX开发环境搭建和Hello Enclave程序运行

    这里记录Windows10下搭建Intel SGX开发环境和编写第一个Hello World程序的过程. 总共分为两部分,第一是环境搭建,第二是hello world程序编写.每一步都有截图,希望以通 ...

  6. chameleon 算法_使用Chameleon,Shrinkwrap,Drone / Graphene与Arquillian进行Java EE集成测试...

    chameleon 算法 从我以前的帖子继续在这里 ,我想我已经了解了Java EE和也的Arquillian,并测试了一些新的(和令人兴奋的)事,我想与大家分享. 但是,在开始之前,我想首先请您注意 ...

  7. 使用Chameleon,Shrinkwrap,Drone / Graphene与Arquillian进行Java EE集成测试

    从我以前的帖子继续在这里 ,我想我已经了解了Java EE和也的Arquillian,并测试了一些新的(和令人兴奋的)事,我想与大家分享. 但是,在开始之前,我想首先请您注意以下几点(这些纯粹是我的观 ...

  8. 芯片漏洞攻击出现新变种,涉及英特尔SGX技术支持的应用

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今年年初爆出的CPU设计漏洞事件,使得整个计算机行业面临着严重的信任危机,几乎1995年以后 ...

  9. 研究员使用新型CPU攻击技术 “SmashEx” 攻破 Intel SGX

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 攻击者可滥用影响英特尔处理器中的漏洞 (CVE-2021-0186) 访问存储在enclaves 中的敏感信息,甚至在易受攻击系统上运行任意代码 ...

  10. 30美元攻陷Intel SGX enclave,Intel 不打算修复

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 英国伯明翰大学的研究人员发现了另外一种攻陷 Intel SGX 安全enclave 机密性的方法.而 Intel SGX 安全 enc ...

最新文章

  1. IBM Rational AppScan使用详细说明
  2. 在tomcat上部署项目,实现类似添加这样的功能之后,tomcat要运行很久,解决办法
  3. golang中创建logger时候踩过的坑
  4. maya mel uf8_如何在maya中创建uv 的mel语言
  5. 国编是什么,需要什么条件,是什么流程?
  6. BZOJ 4802 欧拉函数(Pollard_Rho)
  7. QT学习之路:从入门到精通
  8. Android 自定义控件之---3D画廊
  9. 目前可以用的短信验证码平台有哪些?
  10. 苹果系统虚拟机无usb服务器,苹果电脑Mac系统中VMware虚拟机无法识别USB Key的解决方法...
  11. linux 桌面背景图,linux常用命令桌做成的桌面图片,可当背景图片
  12. matlab plot bo,Matlab的plot~各种颜色和线形
  13. 泰坦尼克号幸存者的预测
  14. 海量资源!开发人员成功转行数据科学必备清单
  15. 图像处理笔记二(阙值、霍夫变换、重映射)
  16. 计算机外存是ram硬盘还是,都是存储器,但RAM、ROM、闪存、硬盘怎么分?
  17. Big Faceless Java PDF 阅读器
  18. JAVA获取自定义配置文件的kv值
  19. 霍比特E姐有约|Exploit Network 如何打造 Web3.0 匿名支付协议
  20. 《新闻联播》报道百度山西数据标注基地 培育新业态打开新就业空间

热门文章

  1. 数据集 过滤时 RecordCount 属性
  2. wamp mysql 密码_wamp如何设置数据库的密码
  3. webpackjsonp 还原_冰点还原标准版v8.56.020.5542——墨涩网
  4. 金融人必须掌握的词汇
  5. UML之教学管理系统——4、Rational Rose画活动图
  6. 光波叠加matlab,光波的叠加教程.ppt
  7. 招聘海报在线设计,平面海报设计思路分享
  8. winpCap中compile和nocap函数
  9. SpringIOC控制反转之XML配置
  10. 怎么给图片加边框线?图片加边框的方法