Graphene-SGX 总结
以下配置已经在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 总结相关推荐
- 4.3 论文笔记 | Achieving Keyless CDNs with Conclaves
Achieving Keyless CDNs with Conclaves Achieving Keyless CDNs with Conclaves Achieving Keyless CDNs w ...
- SGX,为数据处理构建硬件级 “安全隔离区” | 至强秘笈
数据智能产业创新服务媒体 --聚焦数智 · 改变商业 通过数据协同,引入更多源.多维.高质量的数据来打破数据孤岛,已成为各行各业深入开展大数据和AI应用,充分挖掘数据价值,进而加速推进数字化和智能化转 ...
- Intel SGX Remote Attestation实例代码安装和执行,笔记
Windows10, x64,安装了visual studio,已经安装好了Intel SGX JDK. 源码下载:https://github.com/intel/sgx-ra-sample 源码说 ...
- 通俗理解SGX attestation
英特尔CPU从第六代酷睿开始增加了SGX特性,含有Intel Xeon版服务器级的CPU也包含了,比如Intel Xeon E3 v6.它是Software Gaurd Extensions的缩写,目 ...
- 详细介绍Intel SGX开发环境搭建和Hello Enclave程序运行
这里记录Windows10下搭建Intel SGX开发环境和编写第一个Hello World程序的过程. 总共分为两部分,第一是环境搭建,第二是hello world程序编写.每一步都有截图,希望以通 ...
- chameleon 算法_使用Chameleon,Shrinkwrap,Drone / Graphene与Arquillian进行Java EE集成测试...
chameleon 算法 从我以前的帖子继续在这里 ,我想我已经了解了Java EE和也的Arquillian,并测试了一些新的(和令人兴奋的)事,我想与大家分享. 但是,在开始之前,我想首先请您注意 ...
- 使用Chameleon,Shrinkwrap,Drone / Graphene与Arquillian进行Java EE集成测试
从我以前的帖子继续在这里 ,我想我已经了解了Java EE和也的Arquillian,并测试了一些新的(和令人兴奋的)事,我想与大家分享. 但是,在开始之前,我想首先请您注意以下几点(这些纯粹是我的观 ...
- 芯片漏洞攻击出现新变种,涉及英特尔SGX技术支持的应用
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今年年初爆出的CPU设计漏洞事件,使得整个计算机行业面临着严重的信任危机,几乎1995年以后 ...
- 研究员使用新型CPU攻击技术 “SmashEx” 攻破 Intel SGX
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 攻击者可滥用影响英特尔处理器中的漏洞 (CVE-2021-0186) 访问存储在enclaves 中的敏感信息,甚至在易受攻击系统上运行任意代码 ...
- 30美元攻陷Intel SGX enclave,Intel 不打算修复
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 英国伯明翰大学的研究人员发现了另外一种攻陷 Intel SGX 安全enclave 机密性的方法.而 Intel SGX 安全 enc ...
最新文章
- IBM Rational AppScan使用详细说明
- 在tomcat上部署项目,实现类似添加这样的功能之后,tomcat要运行很久,解决办法
- golang中创建logger时候踩过的坑
- maya mel uf8_如何在maya中创建uv 的mel语言
- 国编是什么,需要什么条件,是什么流程?
- BZOJ 4802 欧拉函数(Pollard_Rho)
- QT学习之路:从入门到精通
- Android 自定义控件之---3D画廊
- 目前可以用的短信验证码平台有哪些?
- 苹果系统虚拟机无usb服务器,苹果电脑Mac系统中VMware虚拟机无法识别USB Key的解决方法...
- linux 桌面背景图,linux常用命令桌做成的桌面图片,可当背景图片
- matlab plot bo,Matlab的plot~各种颜色和线形
- 泰坦尼克号幸存者的预测
- 海量资源!开发人员成功转行数据科学必备清单
- 图像处理笔记二(阙值、霍夫变换、重映射)
- 计算机外存是ram硬盘还是,都是存储器,但RAM、ROM、闪存、硬盘怎么分?
- Big Faceless Java PDF 阅读器
- JAVA获取自定义配置文件的kv值
- 霍比特E姐有约|Exploit Network 如何打造 Web3.0 匿名支付协议
- 《新闻联播》报道百度山西数据标注基地 培育新业态打开新就业空间