Hyperledger Avalon --01

什么是Hyperledger Avalon?
Hyperledger Avalon支持区块链交易中的隐私,将密集处理从主区块链转移到可扩展性和延迟,并支持经过认证的Oracle。

什么是链外可信计算规范?
链下可信计算规范(TCS)定义了链下计算事务,这些事务可以私下进行计算并且可信。这些交易可能会或可能不会与区块链相关联。Avalon实现了TCS

代理模式和直接模式有什么区别?
代理模式是请求者(客户端)在区块链上执行智能合约(或链码或类似代码)的地方。智能合约事件调用Avalon,Avalon通过该区块链平台(以太坊,Fabric等)的Blockchain Connector接口执行Avalon工作负载处理器。
直接模式是请求者(客户端)直接与Avalon工作负载处理器(通过HTTP JRPC侦听器)进行操作而无需区块链的情况。

什么是可信计算框架(TCF)?
TCF是Hyperledger Avalon的前身。可信工作区(即英特尔SGX可信执行环境)托管于可信计算服务(TCS)中,并准备执行工作任务(WO)。

Avalon支持多少种节点?
一种,特别是连接到区块链节点的Avalon区块链连接器。将来,Avalon将支持并行处理多个工作订单,但是仍然会有一个连接器。没有其他Avalon组件连接到区块链。
与任何其他Avalon实例无关的另一个Avalon实例可以独立连接到区块链。

Avalon支持哪些同步模式?
链外可信计算规范具有三种模式(异步,通知和同步)。Avalon当前支持异步模式。使用ZMQ的同步模式可用于单例模式工作人员。

LMBD数据库可用于应用程序吗?
LMDB专供Avalon内部使用。应用程序数据可以存储在单独的数据库或文件中。LMDB唯一可能的外部用途是由Avalon托管服务使用其监视和管理工具。

有没有自动修剪LMDB数据库的机制?
在超过最大阈值后,Avalon应该通过删除旧条目来自动修剪LMDB。还有一个用于删除特定工作单的显式API,因此Orchestrator应用可以显式删除已完成的工作单。这对于删除较大的过时的响应特别有用,以免耗尽数据库。该API减轻了LMDB的大小,但不能替代自动清理。
将来可能会添加清理工具。

Avalon Enclave Manager是否支持多名工人?
目前,Avalon进行了硬编码以支持一位Enclave工人。将来计划支持多名并行工作的工人。

Avalon工人如何在直接模式下(无区块链)进行协调?
在代理模式下,Avalon工作者可以与区块链条目进行协调。在直接模式下,一种可行的解决方案是编写一个“协调器”或“总督”工作程序,该工作程序充当受信任的服务器,并存储所有安全区工作人员所需的任何全局注册表信息(例如,数据访问权限和数据集密钥)。本质上,这通过某种分布式数据库或分类帐来模仿区块链功能。

工作量和工人之间有什么关系?
工作量-您的业务逻辑
工作者-将工作分配给工作负载的框架组件

Avalon使用哪些TCP端口?
TCP 1947:从Avalon客户端到Avalon侦听器的连接。http://localhost:1947/对于Docker,URL是或 http://avalon-listener:1947/
TCP 9090:与KV存储的LMDB侦听器的连接。http://localhost:9090/对于Docker,URL是或 http://avalon-lmdb:9090/
TCP 5555:从Avalon侦听器到Avalon Enclave Manager的ZMQ连接。Avalon单身飞地工作人员使用“同步模式”使用此功能。tcp://localhost:5555对于Docker,URL是或 tcp://avalon-enclave-manager:5555
TCP 7777:Avalon Graphene Enclave Manager使用的ZMQ套接字端口与Graphene Python Worker通信。tcp://localhost:7777对于Docker,URL是或 tcp://graphene-python-worker:7777
TCP 1948:与Avalon密钥管理区域(KME)的连接。仅用于工作人员池模式(不适用于单例模式)。tcp://localhost:1948对于Docker,URL是或 tcp://avalon-kme:1948

如何使用工作订单中的JRPC请求ID?
所述jrpc_req_id用于验证张贴JRPC请求之后接收到响应的情况下。我们建议使用UUID作为请求ID。目前,Avalon的SDK中尚未对其进行验证,因为通信是通过HTTP进行的,并且每个调用中仅包含一个调用。当流量很大时,可能在单个HTTP请求中进行多调用JRPC请求。该字段将在其中起到将请求映射到响应的作用。从HTTP(同步请求-响应)的转变也将需要对该字段进行适当的处​​理。

Docker和容器
使用Docker的目的是什么,与Intel SGX有什么关系?我的意思是,英特尔SGX飞地是否在容器中运行?
Docker仅是为了方便使用。它与Avalon安全模型或Intel SGX安全区无关。Docker使构建和设置Avalon更加容易,但是您也可以不使用Docker进行构建(尽管它需要更多步骤)。

如何在Docker中打开TCP端口?
用ports:线。例如,如果要向外部世界(主机和Docker容器外部)打开Avalon侦听器使用的TCP端口1947,请在docker-compose.yaml文件(或类似名称的文件)中添加这两行

端口:
-“ 1947:1947”
这使您可以从主机或主机外部连接到TCP端口1947。请注意,如果防火墙规则允许,这可能允许从外部世界(Internet)访问端口1947。您也可以将端口映射到主机上的另一个端口。例如,- "80:1947"将Docker端口1947映射到主机端口80(http)。

TEE和英特尔®SGX
什么是受信任的执行环境?
可信执行环境(TEE)是处理器的安全区域。它可以确保代码和数据不受外界环境的影响,并通过身份验证保持输入和输出的完整性。

TEE可以被视为“反向沙箱”。传统的沙箱会限制软件访问计算机(例如Java VM)上的系统或外部资源。TEE“反向沙箱”或隔离区可防止系统(其他应用程序甚至OS内核)访问隔离区内的数据。英特尔SGX是TEE的硬件实现,并且受Avalon支持。

英特尔SGX是否需要使用Avalon?
不能。您可以使用Intel SGX模拟器来模拟TEE。将来,我们计划添加其他受信任的工作程序,例如其他硬件TEE,MPC(多方计算)和ZK(零知识证明)。

英特尔SGX TEE工作者的工作原理是什么?
在较高的级别上,您应设计一个应用程序,以便核心业务部分驻留在Enclave中,以确保即使您的不信任部分受到威胁,也不能保证信任部分。英特尔SGX是一组指令,可提高应用程序代码和数据的安全性,从而为它们提供了更多的保护,以防泄露或修改。开发人员可以将敏感信息划分到英特尔SGX安全区,这是内存中具有更高安全保护功能的执行区域。

使用Intel SGX时输入数据的最大大小吗?
Avalon不希望特定于应用程序的代码使用英特尔SGX密封数据。Avalon在内部使用密封的数据来存储专用安全区签名和加密密钥。结果,应用程序特定的数据大小不取决于密封的数据存储。它间接受最大Enclave页面缓存(EPC)大小限制(enclave包括数据和代码)。EPC的最大大小在Intel Xeon E3上限制为128 MB,在Intel Xeon E Mehlow-R上限制为256 MB。EPC可以更大一些,但会导致交换区域的进出,这大大降低了工作速度。

是否有用于工单提交的SDK?
我们还没有Avalon的客户端SDK,Avalon客户端可以使用该SDK向Avalon提交工作订单请求。因此,没有可用的正式文档。Avalon的Client SDK正在开发中。通用客户端使用一些实用程序功能来创建和提交工作订单。文档目前仅限于代码注释。

使用Intel SGX启动Avalon时,为什么我会从Avalon侦听器收到错误SGX_ERROR_BUSY?
如果您是公司代理人,请确保在中设置了proxy type和 aesm proxy行/etc/aesmd.conf。如果您重新安装Intel SGX SDK,此文件可能会被覆盖。

我怎么知道我处于英特尔SGX硬件模式?
如果您SGX_MODE=HW在环境中进行设置并正确设置了Intel SGX,则Avalon将以Intel SGX硬件模式启动。当您在启动时在Avalon Enclave Manager输出中看到与此类似的消息时,便知道您处于Intel SGX硬件模式(SGX_MODE = HW):

AES-GCM 256
Avalon的经过身份验证的加密算法,带有96b IV和128b标签。加密工作订单请求或响应中的数据。也用于加密请求摘要和自定义数据加密密钥

应用程序类型ID
一种Avalon应用程序的标识符。Avalon worker支持一种或多种应用程序类型
证明书

证明已检查某些内容(例如代码或数据)的有效性(例如使用签名验证)

Base64
以AZ,az,0-9,+和/编码的基数为64的数字。将二进制数据编码为可打印的ASCII字符。有时会附加一个或两个代表未使用位的“ =”填充字符。首次与MIME编码一起使用,以编码电子邮件中的二进制附件

Besu
Hyperledger Besu是以太坊客户端,用于设计为企业友好型的公共和私人许可区块链

区块链
用于记录交易的单链接块列表。区块链是不可变的,分布式的和密码保护的

挖洞
兼容EVM的以太坊智能合约平台

链码(CC)
已签名,版本化,可寻址的程序,这些程序使用Fabric分类帐作为数据在Hyperledger Fabric区块链上执行

客户
对于以太坊来说,它是任何区块链节点。这不是客户端-服务器体系结构中使用的传统含义。为了避免歧义,将Avalon客户端正确地称为请求者

机密计算
通过在基于硬件的可信执行环境(TEE)中执行计算来保护使用中的数据

DCAP
英特尔SGX数据中心证明原语。允许企业为英特尔SGX TEE提供自己的证明服务

Dapp(或ÐApp)
以太坊分布式应用程序。在后端使用智能合约,通常使用网络浏览器执行前端

DID
以太坊去中心化ID在区块链中是全球唯一的

DLT
分布式账本技术;区块链是DLT

直接模型
Avalon工作订单执行模型,其中请求者应用程序直接调用JSON RPC网络API以在Worker中执行工作订单

码头工人
轻量级的OS级VM技术,可将进程隔离到单独的“容器”中

ECDSA-SECP256K1 256
Avalon的数字签名算法也被比特币和其他区块链平台使用。签署工作指令响应摘要和工作人员的加密RSA-OAEP公钥

以太坊企业联盟(EEA)
一个财团寻求在私有企业区块链而不是以太坊主网上使用以太坊软件

EEA规范
EEA定义的链外可信计算规范。Avalon是此EEA规范的实现

Enclaves
在基于硬件的TEE中实例化可信计算。某些基于硬件的TEE(包括Intel SGX)允许Enclaves的多个实例同时执行。为了简化,在本说明书中,术语TEE和Enclave可互换使用

Ether (ETH)
以太坊网络上使用的数字加密货币

Ethereum Virtual Machine (EVM)
虚拟机执行已编译为EVM字节码的以太坊智能合约

Fabric
超级账本结构。IBM贡献的企业区块链平台技术

Gas
以太坊加密货币用于支付以太坊交易或智能合约执行

Ganache
用于以太坊开发的个人区块链软件

Graphene
在用户空间库中提供操作系统环境以执行应用程序的库OS(或“ LibOS”)。它用于执行TEE中未修改的代码,例如Intel SGX。

Hyperledger
创建了开源协作成果来推进企业区块链技术。它由The Linux Foundation托管

ID
识别码

JSON RPC(JRPC)
使用HTTP协议发送JSON格式的字符串的远程过程调用接口。Avalon为此JRPC使用TCP端口1947

JRPC error codes
JSON RPC错误代码返回值是:0是成功,1是未知错误,2是无效的参数格式或值,3是访问被拒绝,4是无效的签名,5是没有更多的查找结果,6是不受支持的模式(同步,异步,轮询或通知)。错误代码-32768至-3200保留用于JSON RPC规范中的预定义错误

K8S
Kubernetes容器平台

KECCAK-256
Avalon的摘要算法之一。用于工单请求和响应或以太坊原始交易数据包字节。比特币和其他区块链使用Keccak的早期形式,即“提交的版本3”,然后将Keccak标准化为SHA-3(FIPS-202),而Keccak与SHA-3的变化很小

KME
关键管理飞地阿瓦隆工人。KME是负责密钥管理的工作人员池的一部分。它可以访问工作人员的私钥,并控制WPE执行工作订单。与Singleton和WPE相比

KV
简单的键值查找数据库

最后查询标签
函数返回的标签,返回部分结果(例如,工单或工人)。如果返回,则意味着可以通过将此标记作为输入参数传递给匹配函数并在函数名称后附加“ _next”来检索更多匹配结果。

库操作系统(LibOS)
LibOS将操作系统的服务封装到库中。可以这样做以具有单个地址空间可执行文件,或最小化可信计算库(TCB)。对于Avalon,LibOS允许Avalon工作者在带有传统操作系统和库调用的TEE安全区中执行。它还允许以解释性语言(例如Python)实现工作程序。

LMDB
闪电内存映射数据库,由稀疏随机访问文件实现

多方计算(mpc)
使用密码学的安全计算,使用来自多方的输入来计算结果,但是这些输入对这些方是不公开的

随机数
保证唯一且永不重复的唯一编号。通常由长随机数生成器或非重复硬件序列号生成器生成

脱链
信息存储在区块链外部

链上
内部存储在区块链中的信息

机构编号
对于Avalon,是托管工人的组织的组织标识符,例如,财团或匿名实体中的银行

代理模式
Avalon工作订单执行模型,其中企业应用程序智能合约使用工作订单调用代理智能合约来调用Worker中的工作订单执行

仅查询
对于Hyperledger Fabric,一个参数,指示函数调用是否不会导致区块链分类帐更改

收据
对于Avalon,证明工单的交易是由工人处理的

收货创建状态
具有以下值之一的Avalon工作订单收货创建状态:0待定,1完成,2处理,3失败和4被拒绝。值5-254保留。255表示任何状态,而> 255是应用程序特定的值。在EEA规范7.1中定义

收据状态
阿瓦隆工作订单收据的状态

登记处
对于Avalon,是用于将工作单转发给适当工人的工人注册表

注册表状态
Avalon worker注册表状态具有以下值之一:1处于活动状态,2暂时脱机,3停止使用

请求
对于Avalon,是从请求者发送到应用程序或智能合约的JSON RPC消息

要求编号
对于Avalon,是标识JSON RPC(JRPC)请求的唯一标识符

请求者
使用应用程序或智能合约发布工作订单的Avalon实体。请求者由以太坊地址或可以解析为以太坊地址的DID标识

要求者编号
对于Avalon,是唯一标识符,用于标识生成工作订单的请求者

罗普斯滕
以太坊测试网。允许无需花费以太(ETH)即可测试以太坊智能合约

RSA-OAEP 3072
Avalon的非对称加密算法。加密对称数据加密密钥

SGX
英特尔软件保护扩展,英特尔SGX,硬件TEE实施

SHA-256
Avalon的用于工作单请求和响应的摘要算法之一

签名
在Avalon中,签名使用私有密钥对经常连接的数据进行签名,以帮助确保生成器是真实的。使用签名者的相应公钥验证签名

签名规则
在Avalon中,定义了哈希和签名算法。在Avalon中,规则由正斜杠(/)分隔

Singleton
Singleton Enclave Avalon worker。单Enclave同时管理密钥和工作负载。默认的Avalon worker类型。与KME和WPE相比

智能合约地址
对于以太坊,是一个为该注册表运行Worker Registry Smart Contract API智能合约的以太坊地址。对于Fabric,Fabric链代码名称

智能合约(SC)
使用以太坊分类帐作为数据在以太坊区块链上执行的经过签名的可寻址程序

Solidity
一种面向智能合约的编程语言,用于编写以太坊智能合约。可靠性源已编译为EVM字节码

标签
在Avalon中,加密密钥的标识符。通常使用请求者ID代替

Truffle
流行的以太坊开发环境

可信计算(TC)
用于执行工作订单的受信任计算资源。它可以保护数据机密性,执行完整性并执行数据访问策略。本规范中描述的所有工作程序也是可信计算。可信计算可以各种方式实施这些保证。例如,Trusted Compute可以基于基于软件的密码安全保证,服务的信誉,虚拟化或基于硬件的可信执行环境(例如英特尔的SGX)建立其信任。

可信计算库(TCB)
可信计算使用的硬件,固件和软件资源

可信计算服务(TCS)
提供可信计算功能的服务。Hyperledger Avalon是TCS的示例

可信执行环境(TEE)
基于硬件的技术,仅执行经过验证的任务,产生经过验证的结果,提供对恶意主机软件的保护,并确保共享加密数据的机密性

Worker
对于Avalon,一种用于执行工作订单的链外机密计算处理器,通常在TEE(例如Intel SGX)中执行,该处理器接收输入数据并产生结果。可以通过以太坊地址或DID标识工作人员

工号
唯一的标识符,用于标识处理工作订单的Avalon工作者。对于结构,是结构地址。对于以太坊,它可以从工作人员的DID派生

工人服务编号
工人服务标识符

工人服务
依赖于实现的中间件实体,充当区块链与工作人员之间通信的桥梁。工作者服务可能属于企业,云服务提供商或共享他或她可用的计算资源的个人(取决于供应)

工人身份
具有以下值之一的Avalon工人的状态:1处于活动状态,2暂时脱机,3停止使用,4受到威胁

工人类型
阿瓦隆工人的特征或分类。当前定义的类型是用于Intel SGX TEE的“ TEE-SGX”,用于多方计算的“ MPC”和用于零知识证明的“ ZK”

工作负荷ID
一个字符串,标识一类工作负载以便查找正确的工作负载处理器。

Work order(WO)
对于Avalon,是请求者提交给Worker进行执行的工作单元。工作单可以包括一个或多个输入(例如消息,输入参数,状态和数据集)和一个或多个输出。工单输入和输出可以作为请求或响应正文的一部分(也称为内联)发送,也可以作为到远程存储位置的链接发送。工单输入和输出通常以加密方式发送

工作单编号
标识Avalon工作订单的唯一标识符。请求者在工单提交请求中生成

工单响应
Avalon工人对工单产生的响应。响应是一个JSON字符串

工人池
准备为特定工作负载ID执行工作订单的空闲工人池

WPE
工单处理器飞地Avalon工作人员。WPE是负责工作单处理的工作人员池的一部分。它无权访问工作人员的私钥,并且依靠KME为工作单处理提供必要的上下文。与KME和Singleton比较

零知识证明(zk证明)
在不知道输入的情况下可以确保结果的证明。例如,不知道某人的年龄,但是知道他们是否在年龄范围内

ZMQ(又称0MQ,ZeroMQ)
零消息队列。消息传输API在Linux上可用;在Avalon Enclave Manager和Listener之间使用

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值