万向区块链技术研究报告 | 隐私链相关调研-Oasis

区块链技术迅猛发展,新想法、新概念、新名词层出不穷。万向区块链因此推出“技术研究报告”专栏,定期与大家分享在区块链行业创新及热门技术方面的研究成果,带领大家第一时间研究学习新技术,紧跟技术发展趋势,探索发掘技术的应用价值。

本期技术研究将带大家了解Oasis网络。

本文作者:万向区块链通用架构技术部 宋广洋

1.概要

隐私始终是保护用户和扩大加密货币使用的基本要求,并被认为是Web3.0的重要方向之一。

隐私赛道的角逐日益激烈,协议与应用层都诞生了诸多主打隐私的项目,其中一些项目尝试利用可信执行环境(TEE)、多方安全计算等方式保护数据隐私 (区块链混合架构) ,例如身份信息、医疗信息,一些项目则专注于使用 ZKP (零知识证明数据) 等解决方案来保护资产隐私,例如币种数量、类型等。

1. 隐私交易网络

主要针对链上交易数据(持有或交易的币种类型与数量)进行隐私化处理,通过零知识证明等技术原生支持用户进行隐私交易,无需使用Tornado Cash等协议,就可以保证自己的隐私数据不会被外界查看,同时支持在该协议开发更多类型的隐私应用。

包括Aleo、Nym、Secret Network、HOPR等,目前,隐私交易网络大多数处于测试与开发阶段

2. 隐私计算网络

隐私计算协议是一种更底层的基础设施,具体的交易信息(币种类型与数量等)往往可以通过区块浏览器公开查看,但更强调用户使用数据的隐私。目前主要的隐私技术包括零知识证明、安全多方计算、基于现代密码学的联邦学习、可信执行环节(TEE)等。

目前比较知名的区块链隐私计算网络包括Oasis Network、PlatON、Phala Network、ARPA、Aleph Zero、Findora和Deeper Network等。

由于仍然很少被产业型项目所采用,以及部分技术尚不成熟,所以隐私计算网络目前的实际应用场景亦比较有限。

3. 隐私应用

隐私应用是指建立在Layer1或Layer2协议之上,为用户或DApp提供不同应用场景隐私保护功能的应用,例如交易、支付、邮件等。

隐私应用包括Tornado Cash、Railgun、Ruby Protocol等。

其中,Tornado Cash是目前最为常用的隐私应用,如今许多加密用户都会使用该应用对资产信息进行隐私化处理。

4. 隐私币

隐私币是指原生支持隐私性的加密货币,外界无法查看交易双方的具体交易类型、金额等信息,通常不支持智能合约及相关应用,最早在2014年就有相关项目诞生。

较为知名的隐私币包括Zcash、DASH、Horizen 、MobileCoin、BEAM、Grin等。

总结:

目前,隐私币普遍发展状况一般,用户量、交易量都大幅小于智能合约平台、DeFi等赛道项目。主要是发展隐私计算网络,作为隐私计算平台与区块链结合,以及隐私应用的发展

Oasis network

1.简介

Oasis 网络是去中心化的区块链 Layer 1 网络,旨在设计拥有独特的可扩展性、隐私优先和多功能性,2020年11月19日正式上线。

该网络有两个主要的架构组件,共识层和计算(ParaTime)层。

  • 共识层由一组去中心化的验证节点来运行具有可扩展、高吞吐量、安全、基于权益证明(Proof-of-Stake)的共识。
  • 共识层是利用 Tendermint 的拜占庭容错共识算法的权益证明(PoS)
  • ParaTime层托管许多并行运行态(ParaTimes),每个运行态代表一个计算环境的拷贝,各计算环境之间共享状态。

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第1张图片

技术

  • 将共识和执行分为两层 —— 共识层和ParaTime层 —— 以实现更好的可扩展性和多功能性。
  • 共识和执行的分离允许多个 ParaTime 并行处理事务,这意味着在一个 ParaTime 上处理的复杂工作负载不会减慢另一个更快、更简单的事务的处理。
  • ParaTime 层是完全去中心化的,允许任何人开发和构建自己的 ParaTime。每个 ParaTime 都可以单独开发,以满足特定应用程序的需求,例如隐私计算、开放或封闭委员会等。
  • Oasis 网络高级的差异检测技术使得其比分片和平行链更有效
  • 该网络广泛支持隐私计算技术。

官方现支持paraTime

  • emerald-paratime (EVM 兼容的paratime)
  • cipher-paratime (机密智能合约执行环境的Paratime,rust ,TEE可信执行环境)
  • parcel-paratime (隐私存储相关,不对外开放,申请使用)
  • sapphire-paratime (7.21上线测试网,首个EVM兼容的隐私ParaTime)

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第2张图片

交易

交易API定义和用于创建和验证事务的辅助方法存在于go/consensus/ API /transaction中。共识后端Api文档

版本

  • Oasis Core version:
  • 22.1.7
  • Emerald ParaTime
  • Runtime binary version
  • 9.0.1
  • Runtime identifier
  • 000000000000000000000000000000000000000000000000e2eaa99fc008f87f
  • Cipher ParaTime
  • Runtime binary version:
  • 1.1.0
  • Runtime identifier
  • 000000000000000000000000000000000000000000000000e199119c992377cb

区块链浏览器

Oasis区块链浏览器:https://www.oasisscan.com/

Emerald 链上浏览器:https://explorer.emerald.oasis.dev/

代币

ROSE:

总量:100亿

Oasis主网分为共识层及计算层,原生代币ROSE存放于共识层,计算层(即ParaTime层)中用于部署各种应用,其中,Emerald(ParaTimes中的一个)提供EVM的兼容环境,因此可以实现跨链。

YuzuSwap是建立在Emerald上的去中心化交易所,可实现跨链的代币交易(如下图)

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第3张图片

投资机构

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第4张图片

团队

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第5张图片

https://oasisprotocol.org/team

2.计算层

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

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第6张图片

可信执行环境(Trusted Execution Environment,TEE),通过软硬件方法构建一个安全区域,保证其内部加载的程序和数据在机密性和完整性上得到保护。可信的中央处理器一般是指可信执行控制单元已被预置集成的商用CPU计算芯片,无法后置,因此,只有新研发的部分芯片支持TEE。目前主流的TEE技术以X86指令集架构的Inter SGX和ARM指令集架构的TrustZone为代表

TEE基础原理:将系统的硬件和软件资源划分为两个执行环境——可信执行环境和普通执行环境。两个环境是安全隔离的,有独立的内部数据通路和计算所需存储空间。普通执行环境的应用程序无法访问TEE,即使在TEE内部,多个应用的运行也是相互独立的,不能无授权而互访。

Intel sgx

  • intel sgx 被设计保护应用程序的机密信息,防止恶意软件的攻击,即便在应用程序和操作系统都不可信的情况下,哪怕攻击者获得了整个平台的控制权,应用程序的机密信息仍然可以受到保护
  • 机密信息:比如医疗数据,个人识别信息,密码,密钥
  • Intel sgx 在内存中划分了安全区域,用来存放代码和数据,这些不可寻址的分页内存是从系统的物理内存中保留的,并且经过了加密
  • 其本质是设计了一套cpu指令,利用硬件创建一个可信安全区,相关数据和指令在安全区内运行
  • 通过E_CALL O_CALL和外部交互调用

发展趋势

  • 2015年 Intel 发布具备SGX技术的商业CPU 创建应用级的可信执行环境
  • 2017年 AMD 发布具有SEV技术的商业CPU 创建加密虚拟机
  • 2022年 Intel shpphire Rapids CPU 支持TDX(Trust Domain Extensions) 技术 可创建加密虚拟机

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第7张图片

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

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第8张图片

SGX

程序初始化

  • 生成一组RSA3072公私钥对,公钥提交给Intel官方申请加入一个白名单
  • 开发者用私钥对源代码hash,配置文件(包括产品ID,序列号等)进行签名
  • 将签名,源码,配置,公钥打包就是一个enclave文件
  • 加载:SGX判断hash,签名,授权书(intel)是否合法

注:SGX内部的代码本身还是可以通过静态分析获取(尽管很复杂),故代码本身不应包含任何隐私信息。

intel SGX为每一个enclave提供的两个度量值,分别为MRENCLAVE MRSIGNER

MRENCLAVE :Enclave Identity,值为sha256hash结果,hash包括从enclave构建开始到初始化完成(EINIT指令执行后)之间的活动记录日志,日志包括代码,数据,堆栈,不同的enclave,该值不同

MRSIGNERSealing Identityenclave构建时使用的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"`
}

密钥

  • Root Provisioning Key(RPK):由iKGF(Intel Key Generation Facility)生成的key,intel和SGX共同保存。
  • Root Sealing Key(RSK):由iKGF生成的key,仅SGX保存。

RPK,RSK是刻录在硬件上

  • Provisioning key:通过EGETKEY指令获取,通过RPK推导出,用于intel认证SGX(EPID协议

通过Provisioning key,与intel配置服务认证完成后,enclaveIAS会通过the EPID scheme Join protocol生成一对非对称keyenclave保存着的私钥叫做Provisioning key,用Provisioning key report签名,然后转发到IAS做远程认证。

  • Provisioning Seal key:通过EGETKEY指令获取,通过RSK推导出,对Provisioning key加密,然后可以封存在外部环境。
  • Report key:通过EGETKEY指令获取,入参包含RPK,MRENCLAVE ,attributes,所以同一SGX平台上的enclave可以获取的和对端enclave一样的report key(需要提供自己MRENCLAVE ,attributes参数);因此本地认证时候,一个enclave用MAC算法加密的report,可以被同一SGX上的另一个enclave 验证。
  • Seal key:通过EGETKEY指令获取,入参包含MRENCLAVE 或者MRSIGNER,可以在enclave外部封存秘密

Architectural Enclave(AE)

包括了LauchEnclave、QuotingEnclave、ProvisioningEnclave

所有的AE都是特殊的Enclave,预先由Intel进行编译、签名。他们会在PSW安装的时候启动起来,叫做aemd,AE的一个守护进程。

  • LaunchEnclaveLE)是专门用来管理普通Enclave启动的Enclave
  • ProvisioningEnclave (PvE)提供密钥配置服务。
  • QuotingEnclave (QE)用于远程认证中,对本地Enclave报告签名发送,以及对远程Enclave报告进行验证(来自对端QE的可信签名)并转发给本地Enclave

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)

万向区块链技术研究报告 | 隐私链相关调研-Oasis_第9张图片

  • 远程验证者发出验证,验证该Enclave可信程度。
  • Enclave使用EREPORT指令将验证与自身绑定。
  • 然后不可信APP将本地认证EREPORT交给QE,QE推导报告密钥(report key)来验证报告完整性。然后用配置密封密钥(Provisioning Seal key)来解密不可信系统软件返回的SGX平台长期配置密钥。
  • (Provisioning key),QE用SGX平台长期认证密钥(本质是EPID私钥)签名本地认证报告,形成一个Quote。
  • 验证者收到认证响应Quote,将其交给Intel Quote服务,使用EPID组公钥(配置密钥使EPID私钥)来验证Quote。

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

你可能感兴趣的:(区块链)