区块链技术迅猛发展,新想法、新概念、新名词层出不穷。万向区块链因此推出“技术研究报告”专栏,定期与大家分享在区块链行业创新及热门技术方面的研究成果,带领大家第一时间研究学习新技术,紧跟技术发展趋势,探索发掘技术的应用价值。
本期技术研究将带大家了解Oasis网络。
本文作者:万向区块链通用架构技术部 宋广洋
隐私始终是保护用户和扩大加密货币使用的基本要求,并被认为是Web3.0的重要方向之一。
隐私赛道的角逐日益激烈,协议与应用层都诞生了诸多主打隐私的项目,其中一些项目尝试利用可信执行环境(TEE)、多方安全计算等方式保护数据隐私 (区块链混合架构) ,例如身份信息、医疗信息,一些项目则专注于使用 ZKP (零知识证明数据) 等解决方案来保护资产隐私,例如币种数量、类型等。
主要针对链上交易数据(持有或交易的币种类型与数量)进行隐私化处理,通过零知识证明等技术原生支持用户进行隐私交易,无需使用Tornado Cash等协议,就可以保证自己的隐私数据不会被外界查看,同时支持在该协议开发更多类型的隐私应用。
包括Aleo、Nym、Secret Network、HOPR等,目前,隐私交易网络大多数处于测试与开发阶段
隐私计算协议是一种更底层的基础设施,具体的交易信息(币种类型与数量等)往往可以通过区块浏览器公开查看,但更强调用户使用数据的隐私。目前主要的隐私技术包括零知识证明、安全多方计算、基于现代密码学的联邦学习、可信执行环节(TEE)等。
目前比较知名的区块链隐私计算网络包括Oasis Network、PlatON、Phala Network、ARPA、Aleph Zero、Findora和Deeper Network等。
由于仍然很少被产业型项目所采用,以及部分技术尚不成熟,所以隐私计算网络目前的实际应用场景亦比较有限。
隐私应用是指建立在Layer1或Layer2协议之上,为用户或DApp提供不同应用场景隐私保护功能的应用,例如交易、支付、邮件等。
隐私应用包括Tornado Cash、Railgun、Ruby Protocol等。
其中,Tornado Cash是目前最为常用的隐私应用,如今许多加密用户都会使用该应用对资产信息进行隐私化处理。
隐私币是指原生支持隐私性的加密货币,外界无法查看交易双方的具体交易类型、金额等信息,通常不支持智能合约及相关应用,最早在2014年就有相关项目诞生。
较为知名的隐私币包括Zcash、DASH、Horizen 、MobileCoin、BEAM、Grin等。
目前,隐私币普遍发展状况一般,用户量、交易量都大幅小于智能合约平台、DeFi等赛道项目。主要是发展隐私计算网络,作为隐私计算平台与区块链结合,以及隐私应用的发展
Oasis 网络是去中心化的区块链 Layer 1 网络,旨在设计拥有独特的可扩展性、隐私优先和多功能性,2020年11月19日正式上线。
该网络有两个主要的架构组件,共识层和计算(ParaTime)层。
官方现支持paraTime
交易
交易API定义和用于创建和验证事务的辅助方法存在于go/consensus/ API /transaction中。共识后端Api文档
Oasis区块链浏览器:https://www.oasisscan.com/
Emerald 链上浏览器:https://explorer.emerald.oasis.dev/
ROSE:
总量:100亿
Oasis主网分为共识层及计算层,原生代币ROSE存放于共识层,计算层(即ParaTime层)中用于部署各种应用,其中,Emerald(ParaTimes中的一个)提供EVM的兼容环境,因此可以实现跨链。
YuzuSwap是建立在Emerald上的去中心化交易所,可实现跨链的代币交易(如下图)
投资机构
团队
https://oasisprotocol.org/team
Cipher-paratime(TEE计算节点)
节点搭建
如果ParaTime被配置为在TEE中运行(目前只有Intel SGX),你必须确保你的系统支持运行SGX enclave。这要求你的硬件有SGX支持,SGX支持被启用,并且额外的驱动和软件组件被正确安装和运行。
确保时钟同步
由于运行时 enclave 中的额外健全性检查,您应该确保节点的本地时钟是同步的(例如使用 NTP)。否则,可能会遇到意外的运行时中止。
安装SGX Linux驱动程序
提示 如果您运行的是 Linux 内核版本 5.11 或更高版本,则已包含所需的 SGX 驱动程序,无需额外安装,可跳过本节。
如在较旧的发行版上安装,请参见下文 旧版驱动程序的安装说明。
https://docs.oasis.dev/general/run-a-node/prerequisites/set-up-trusted-execution-environment-tee
TEE
可信执行环境(Trusted Execution Environment,TEE),通过软硬件方法构建一个安全区域,保证其内部加载的程序和数据在机密性和完整性上得到保护。可信的中央处理器一般是指可信执行控制单元已被预置集成的商用CPU计算芯片,无法后置,因此,只有新研发的部分芯片支持TEE。目前主流的TEE技术以X86指令集架构的Inter SGX和ARM指令集架构的TrustZone为代表
TEE基础原理:将系统的硬件和软件资源划分为两个执行环境——可信执行环境和普通执行环境。两个环境是安全隔离的,有独立的内部数据通路和计算所需存储空间。普通执行环境的应用程序无法访问TEE,即使在TEE内部,多个应用的运行也是相互独立的,不能无授权而互访。
Intel sgx
发展趋势
Super. |
Description |
User |
Description |
EADD |
Add a page |
EENTER |
Enter an enclave |
EBLOCK |
Block an EPC page |
EEXIT |
Exit an enclave |
ECREATE |
Create an enclave |
EGETKEY |
Create a cryptographic key |
EDBGRD |
Read data by debugger |
EREPORT |
Create a cryptographic report |
EBDGWR |
Write data by debugger |
ERESUME |
Re-enter an enclave |
EINIT |
Initialize en enclave |
||
ELDB |
Load an EPC page as blocked |
||
ELDU |
Load an EPC page as unblocked |
||
EPA |
Add a version array |
||
EREMOVE |
Remove a page from EPC |
||
ETRACE |
Activate EBLOCK checks |
||
EWB |
Write back/invalidate an EPC page |
SGX
程序初始化
注:SGX内部的代码本身还是可以通过静态分析获取(尽管很复杂),故代码本身不应包含任何隐私信息。
intel SGX为每一个enclave提供的两个度量值,分别为MRENCLAVE 和 MRSIGNER;
MRENCLAVE :Enclave Identity,值为sha256的hash结果,hash包括从enclave构建开始到初始化完成(EINIT指令执行后)之间的活动记录日志,日志包括代码,数据,堆栈,不同的enclave,该值不同
MRSIGNER:Sealing Identity,enclave构建时使用的RSA签名的公钥的hash结果。签名的rsa密钥对相同,该值即相同。
const (
// MrEnclaveSize is the size of an MrEnclave in bytes.
MrEnclaveSize = sha256.Size
// MrSignerSize is the size of an MrSigner in bytes.
MrSignerSize = sha256.Size
// enclaveIdentitySize is the total size of EnclaveIdentity in bytes.
enclaveIdentitySize = MrSignerSize + MrEnclaveSize
)
// EnclaveIdentity is a byte serialized MRSIGNER/MRENCLAVE pair.
type EnclaveIdentity struct {
MrEnclave MrEnclave `json:"mr_enclave"`
MrSigner MrSigner `json:"mr_signer"`
}
密钥
RPK,RSK是刻录在硬件上
通过Provisioning key,与intel配置服务认证完成后,enclave和IAS会通过the EPID scheme Join protocol生成一对非对称key,enclave保存着的私钥叫做Provisioning key,用Provisioning key 对report签名,然后转发到IAS做远程认证。
Architectural Enclave(AE)
包括了LauchEnclave、QuotingEnclave、ProvisioningEnclave
所有的AE都是特殊的Enclave,预先由Intel进行编译、签名。他们会在PSW安装的时候启动起来,叫做aemd,AE的一个守护进程。
SGX attestation
local attestation(本地认证-同一个平台上多个enclave可以证明运行在enclave中)
简单来说:本端用对端的target info,双方DH公钥的hash值及一些系统信息,生成report,该report带有一个MAC值(用report key)。对端拿到这个report之后,通过EGETKEY指令获取Report Key,来验证MAC值是否和对端发送的一致。
typedef struct _report_body_t
{
sgx_cpu_svn_t cpu_svn; /* ( 0) Security Version of the CPU */
sgx_misc_select_t misc_select; /* ( 16) Which fields defined in SSA.MISC */
uint8_t reserved1[SGX_REPORT_BODY_RESERVED1_BYTES]; /* ( 20) */
sgx_isvext_prod_id_t isv_ext_prod_id;/* ( 32) ISV assigned Extended Product ID */
sgx_attributes_t attributes; /* ( 48) Any special Capabilities the Enclave possess */
sgx_measurement_t mr_enclave; /* ( 64) The value of the enclave's ENCLAVE measurement */
uint8_t reserved2[SGX_REPORT_BODY_RESERVED2_BYTES]; /* ( 96) */
sgx_measurement_t mr_signer; /* (128) The value of the enclave's SIGNER measurement */
uint8_t reserved3[SGX_REPORT_BODY_RESERVED3_BYTES]; /* (160) */
sgx_config_id_t config_id; /* (192) CONFIGID */
sgx_prod_id_t isv_prod_id; /* (256) Product ID of the Enclave */
sgx_isv_svn_t isv_svn; /* (258) Security Version of the Enclave */
sgx_config_svn_t config_svn; /* (260) CONFIGSVN */
uint8_t reserved4[SGX_REPORT_BODY_RESERVED4_BYTES]; /* (262) */
sgx_isvfamily_id_t isv_family_id; /* (304) ISV assigned Family ID */
sgx_report_data_t report_data; /* (320) Data provided by the user */
} sgx_report_body_t;
remote attestation(远程认证,不同平台之前多个enclave证明运行在enclave中)
SGX2远程认证协议 DCAP
github:https://github.com/oasisprotocol Oasis文档中心:https://docs.oasis.dev/general/ Parcel使用文档:https://docs.oasislabs.com/parcel/latest/ 博客:https://medium.com/oasis-protocol-project 官网:https://oasisprotocol.org/ 白皮书:https://assets.website-files.com/5f59478e350b91447863f593/628ba74a9aee37587419cf65_20200623%20The%20Oasis%20Blockchain%20Platform.pdf Intel sgx https://github.com/intel/linux-sgx |