文档

数据模型

更新时间:

SDK 包含以下数据模型:

MYTFProfile

MYTFProfile 是可验证的 MYTF 身份信息。Profile的概念是指可信计算引擎中的某个独立组件的身份和状态信息。该组件持有自己的签名密钥和加密密钥,签名密钥可以用于向外证明该组件在可信计算引擎中的行为,加密密钥可以用于该组件和外界进行端到端的加密通信。

在 MYTF 计算节点初始化时,首先通过 Intel SGX 提供的 Local Attestation 本地认证功能,Enclave 会生成代表自身身份的自荐信息 Quote。然后,通过 Intel SGX 提供的 Remote Attestation 远程认证功能,MYTF 会将自荐信息发送给 Intel 远程认证服务IAS。IAS 会对 MYTF 所在的可信执行硬件和 MYTF 中运行的 Enclave 代码进行核身校验。其中,具有唯一性的 MYTF 身份信息数据profileData的哈希会作为自荐信息中的一部分,一起被 IAS 进行完整性校验。

使用 MYTF SDK 的用户,可以向任意一个 MYTF 实例获取被IAS服务认证过的 MYTF 身份信息MYTFProfile并验证该 MYTF 实例是否安全可信。

参数 类型 说明
report String IAS 验证自荐信息的正确性报告
xIasreportSignature String IAS 对该报告的签名
xIasreportSigningCertificate String IAS 证书链
profileData String MYTF 身份信息数据

SGXReport

Intel SGX 认证报告,IAS 对 MYTF 身份信息和所在硬件信息的验证报告。更多信息参考 Intel SGX 官方文档

参数 类型 说明
id String 报告唯一标识
timestamp timestamp 报告生成时间戳
epidPseudonym String epid 相关信息
isvEnclaveQuoteStatus String ISV 远程认证报告的状态,”OK” 表示 ISV 认证通过
platformInfoBlob String 平台信息 Blob
isvEnclaveQuoteBody IsvEnclaveQuoteBody 远程认证报告的详细信息

ProfileData

ProfileData是具有唯一性的 MYTF 身份信息数据,其中包括MYTFInfoMYTF 身份信息和CounterInfo计数信息。在 MYTF 生成自荐信息Quote时,ProfileData的哈希会作为自定义数据,由 MYTF 自己注入在 Quote 中,一起被 IAS 进行完整性校验。

参数 类型 说明
MYTFInfo byte[] MYTF身份信息
CounterInfo byte[] 用于防重放,确保用户每次请求的 MYTFInfo 具有唯一性。

MYTFInfo

MYTFInfo是 MYTF 的身份信息。MYTFProfile 是被 IAS 校验过的MYTF身份信息,其中包括 MYTFInfo 和 IAS 的校验证明。在 MYTFInfo 中,Encryption Keys是 MYTF 的加密公钥,Signing Keys是 MYTF 的签名公钥,公钥根据不同算法有多个。

参数 类型 说明
version Int MYTF 当前版本
domainName String MYTF 所在域名
regionName String MYTF 所在分区名
MREnclave byte[] MYTF 实例代码的度量值
MRSigner byte[] MYTF 实例签发者公钥的度量值
IASCACert String Intel Attestation Service CA 根证书
property Map< String, String> 其他附加属性
encryptionKeys Map< KeyType, byte[]> MYTF 的加密公钥,包含多把加密公钥
signingKeys Map< KeyType, byte[]> MYTF 的签名公钥,包含多把签名公钥

TAPPProfile

TAPPProfile是可验证的 TAPP 身份信息。包括TAPPInfo和 MYTF 对TAPPInfo的签名。

参数 类型 说明
TAPPInfo byte[] TAPP 信息
signature byte[] MYTF 对 TAPP 信息的签名
signingPK byte[] MYTF 签名公钥

TAPPInfo

TAPPInfo是 TAPP 的身份信息。其中Encryption Keys是该 TAPP 的加密公钥。Signing Keys是 TAPP 的签名公钥,公钥根据不同加密算法有多个。

参数 类型 说明
tappId String TAPP 名称
version Int TAPP 版本号
execEngine String 执行引擎类型
codeHash byte[] TAPP 可执行字节码的哈希
description String TAPP 描述
property Map< String, String> 附加属性
encryptionKeys Map< KeyType, byte[]> TAPP 的加密公钥
signingKeys Map< KeyType, byte[]> TAPP 的签名公钥

TAPPInstallRequest

参数 类型 说明
tappId String TAPP 名称
tappVersion Int TAPP 版本号
tappExecEngine ExecEngineType TAPP 的执行引擎类型,默认为 MYVM
bytecode byte[] TAPP 的字节码,编写TAPP代码后通过 MYCDT 编译的字节码
description String TAPP 的描述
property Map< String, String> TAPP 的附加属性

构造安装 TAPP 请求示例:

  1. // 构造安装 TAPP 请求
  2. TappInstallRequest tappInstallRequest = TappInstallRequest.builder()
  3. .newTapp(tappId, tappVersion, bytecodes)
  4. .setTappDescription(tappDesc)
  5. .build();

TAPPInstallResponse

参数 类型 说明
isSuccess boolean 安装是否成功
errorCode Int 错误码
errorMessage String 错误信息

解析安装 TAPP 响应示例:

  1. // 解析安装 TAPP 响应
  2. TappInstallResponse tappInstallResponse = restClient.installTapp(tappInstallRequest);
  3. boolean ifSuccess = tappInstallResponse.isSuccess();
  4. int errorCode = tappInstallResponse.getErrorCode();
  5. String errorMsg = tappInstallResponse.getErrorMessage();

TAPPRemoveRequest

参数 类型 说明
tappId String TAPP 名称
tappVersion int TAPP 版本号

构造删除 TAPP 请求示例:

  1. // 构造删除 TAPP 请求
  2. TappRemoveRequest tappRemoveRequest = TappRemoveRequest.builder()
  3. .defaultRequest(tappId, tappVersion)
  4. .build();

TAPPRemoveResponse

参数 类型 说明
isSuccess boolean 安装是否成功
errorCode Int 错误码
errorMessage String 错误信息

解析删除 TAPP 响应示例:

  1. // 解析删除 TAPP 响应
  2. TappRemoveResponse tappRemoveResponse = restClient.removeTapp(tappRemoveRequest);
  3. Assert.assertTrue(tappRemoveResponse.isSuccess());

TAPPExecuteRequest

参数 类型 说明
tappId String TAPP 名称
tappVersion Int TAPP 版本号
method String 要执行的方法
args byte[] 方法参数

构造执行 TAPP 请求示例:

  1. // 构造执行 TAPP 请求
  2. TappExecuteRequest tappExecuteRequest = TappExecuteRequest.builder()
  3. .defaultRequest(tappId, tappVersion, testReqMethod)
  4. .build();

TAPPExecuteResponse

参数 类型 说明
requestHash byte[] 执行请求的 Hash
responseCode Int 错误码
responseMessage String 错误信息
returnValue byte[] 在 MYVM 中执行代码返回的结果
output byte[] 用户规定的输出值或执行失败后的日志

解析执行 TAPP 响应示例:

  1. // 发送执行 TAPP 请求
  2. TappExecuteResponse tappExecuteResponse = restClient.executeTapp(tappExecuteRequest);
  3. // 可信计算任务请求是否合法
  4. boolean ifReqSuccess = tappExecuteResponse.isRequestSuccess();
  5. // 可信计算任务执行是否成功
  6. boolean ifExeSuccess = tappExecuteResponse.isExecuteSuccess();
  7. // 查看计算任务请求是否合法及错误码
  8. int responseCode = tappExecuteResponse.getResponseCode();
  9. String responseMessage = tappExecuteResponse.getResponseMessage();
  10. // 查看计算任务执行过程中用户自定义输出或执行失败后计算引擎抛出的错误信息
  11. byte[] returnValue = tappExecuteResponse.getOutput();
  12. // 获取执行结果
  13. byte[] returnValue = tappExecuteResponse.getReturnValue().getRawReturnValues();
  14. // 获取 TAPP 签名
  15. byte[] sig = tappExecuteResponse.getSignature();

TAPPAuthorizeRequest

参数 类型 说明
tappId String TAPP 的身份标识
tappVersion Int TAPP 的版本
authData UserIdentityData 授权数据

构造授权 TAPP 请求示例:

  1. // 构造授权TAPP请求
  2. UserIdentityData authorizeeData = new UserIdentityData(UserDomainEnum.BAASREST, "user_id","", AccessTypeEnum.EXECUTE);
  3. TappAuthorizeRequest tappAuthorizeRequest = TappAuthorizeRequest.builder()
  4. .defaultRequest(tappId, tappVersion, authorizeeData)
  5. .build();

TAPPAuthorizeResponse

参数 类型 说明
isSuccess boolean 是否成功
errorCode Int 错误码
errorMessage String 错误信息

解析授权 TAPP 响应示例:

  1. // 解析授权 TAPP 响应
  2. TappAuthorizeResponse tappAuthorizeResponse = restClient.authorizeTapp(tappAuthorizeRequest);
  3. Assert.assertTrue(tappAuthorizeResponse.isSuccess());
  • 本页导读 (0)
文档反馈