首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >英特尔SGX的本地认证

英特尔SGX的本地认证
EN

Stack Overflow用户
提问于 2017-01-07 02:11:51
回答 1查看 890关注 0票数 0

我试图在从两个不同的应用程序创建的两个飞地之间执行本地认证。

为Linux 这里提供的示例代码创建了3个不同的包,然后在它们之间建立安全连接。但是这些飞地都是由同一个应用程序创建的,因此它知道所有的飞地is。

如果两个不同的应用程序正在创建自己的飞地,它们应该相互通信,那么源enclave如何知道目标飞地的ID?该ID是否必须通过“通用”方式(IPC)从一个应用程序传输到飞地?

通过启动目标飞地并打印其ID:"26ce00000002“,我尝试了一些简单的测试。

然后,我在本地认证示例中使用了这个ID来尝试连接到这个正在运行的目标飞地:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uint64_t wrapper(const char *c) {
    errno = 0;
    uint64_t result = strtoull(c, NULL, 16);

    if (errno == EINVAL) {
        cout << "WRONG NUMBER" << endl;
    } else if (errno == ERANGE) {
        cout << "Too big\n";
    }

    return result;
}

uint32_t load_enclaves() {
    uint32_t enclave_temp_no;
    int ret, launch_token_updated;
    sgx_launch_token_t launch_token;

    enclave_temp_no = 0;

    ret = sgx_create_enclave(ENCLAVE1_PATH, SGX_DEBUG_FLAG, &launch_token, &launch_token_updated, &e1_enclave_id, NULL);
    if (ret != SGX_SUCCESS) {
        return ret;
    }
    enclave_temp_no++;
    g_enclave_id_map.insert(std::pair<sgx_enclave_id_t, uint32_t>(e1_enclave_id, enclave_temp_no));

const char *test = "26ce00000002";
e2_enclave_id = wrapper(test);

    enclave_temp_no++;
    g_enclave_id_map.insert(std::pair<sgx_enclave_id_t, uint32_t>(e2_enclave_id, enclave_temp_no));

    return SGX_SUCCESS;
}

int main(int argc, char **argv) {
    uint32_t ret_status;
    sgx_status_t status;


    if(load_enclaves() != SGX_SUCCESS) {
        printf("\nLoad Enclave Failure");
    }

    printf("\nAvaliable Enclaves");
    printf("\nEnclave1 - EnclaveID %lx",e1_enclave_id);
    printf("\nEnclave2 - EnclaveID %lx",e2_enclave_id);

    do {
        //Test Create session between Enclave1(Source) and Enclave2(Destination)
        status = Enclave1_test_create_session(e1_enclave_id, &ret_status, e1_enclave_id, e2_enclave_id);
        if (status!=SGX_SUCCESS)
        {
            printf("Enclave1_test_create_session Ecall failed: Error status code is %x", status);
            print_error_message(status);   
            break;
        }
        else
        {
            if(ret_status==0)
            {
                printf("\n\nSecure Channel Establishment between Source (E1) and Destination (E2) Enclaves successful !!!");
            }
            else
            {
                printf("\nSession establishment and key exchange failure between Source (E1) and Destination (E2): Error return status is %x\n", ret_status);
                break;
            }
        }

当使用源飞地执行本地认证程序时,我会收到"SGX_ERROR_INVALID_ENCLAVE_ID“错误吗?此错误不是由本地认证示例程序引发的,而是来自SGX库中的某个地方,我不知道为什么目标飞地仍在运行,因此ID应该存在!?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 00:52:47

我们不需要安全连接来交换飞地id。应用程序可以将飞地id存储在注册表或磁盘上,以及相应的应用程序可以检索的飞地名称,以获得所需飞地的id。然后,应用程序通过在源飞地中执行ECALL来启动源飞地和目标飞地之间的会话,并传入目标飞地的enclave id。在接收到目标飞地的enclave id后,源enclave对核心不可信代码执行OCALL操作,然后对目标飞地执行ECALL操作,以交换使用ECDH密钥交换协议建立会话所需的消息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41520253

复制
相关文章
使用 iptables 将 Kubernetes Service 流量随机发送到 Pod
本文将带大家了解 Kubernetes 的 kube-proxy 组件如何使用 iptables 将 service 流量随机发送到 Pod,目的是实现 service 所需的 iptables 规则。
CNCF
2021/04/21
1.7K0
python web应用_如何使用Python将通知发送到Web应用
如何使用Python将通知发送到Web应用 (How to send notifications to your Web App using Python)
用户7886150
2021/01/01
2.5K0
使用Logstash接收Netflow日志并发送到syslog服务器
接受90端口的netflow日志,解析netflow中的源IP、端口、目的IP、端口,并输出syslog到任意端口
heasy3
2020/08/02
2K0
linux审计日志在哪里,linux – 将审计日志发送到SYSLOG服务器
这个答案可能仍然有效,但在2014年,using the Audisp plugin是更好的答案.
全栈程序员站长
2022/08/23
4.1K0
将CSV的数据发送到kafka(java版)
前面的图可以看出,读取CSV再发送消息到kafka的操作是Java应用所为,因此今天的主要工作就是开发这个Java应用,并验证;
程序员欣宸
2021/04/16
3.5K0
将CSV的数据发送到kafka(java版)
使用alpha混合将图像分层和图像抗锯齿。
import matplotlib.pyplot as plt import numpy as np methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell',
裴来凡
2022/05/28
1.2K0
使用alpha混合将图像分层和图像抗锯齿。
如何将Flink应用的日志发送到kafka
产线环境上的Flink应用是长时运行的应用,日志量较大,通过flink web页面查看任务日志会导致浏览器卡死,通过日志排查问题非常不便。因此,需要将flink应用的日志发送到外部系统,方便进行日志检索
Eights
2020/09/10
2.4K0
如何将Flink应用的日志发送到kafka
系统捕获异常并发送到服务器
大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了
xiangzhihong
2018/01/30
9400
系统捕获异常并发送到服务器
构建fluentd镜像将收集的日志发送到elasticsearch
构建脚本: version: "3" services: fluentd: build: ./fluentd volumes: - ./fluentd/conf:/fluentd/etc privileged: true ports: - "24224:24224" - "24224:24224/udp" environment: - TZ=Asia/Shanghai restart: always
johnhuster的分享
2022/03/28
5340
Office.Core服务器无法使用问题
1).通过webconfig中增加模拟,加入管理员权限, <identity impersonate="true" userName="系统管理员" password="系统管理员密码"/> 2).这样就能够启动Application进程,操作EXCEL了,能够新建EXCEL,导出EXCEL,但是还是不能打开服务器端的EXCEL文件
happlyfox
2018/10/31
9270
Ubuntu下无法使用SecureCRT连接服务器
把配置文件中的"PermitRootLogin without-password"加一个"#"号注释掉,再增加一句"PermitRootLogin yes",保存文件,如下图。这样做是为了允许root用户登录
知忆
2021/06/09
4.3K0
H3C交换机配置信息中心将日志发送到日志服务器
摘自官方文档 http://www.h3c.com/cn/d_200711/317187_30005_0.htm#_Toc164570689
yuanfan2012
2020/06/10
10.4K0
H3C交换机配置信息中心将日志发送到日志服务器
[记]使用jQuery Jcrop 图像裁剪无法更换图片的坑
​ 因为公司需求,需要完成一个显示屏定制的业务,用户自主上传图片然后在线裁剪的功能,我选择了jQuery Jcrop这个插件。 先看看怎么使用 使用方法 载入 CSS 文件 <link rel="stylesheet" href="jquery.Jcrop.css"> 载入 JavaScript 文件 <script src="jquery.js"></script> <script src="jquery.Jcrop.js"></script> 给 IMG 标签加上 ID <img id="e
游魂
2018/06/08
1.6K0
Python中日志异步发送到远程服务器
背景 在Python中使用日志最常用的方式就是在控制台和文件中输出日志了,logging模块也很好的提供的相应 的类,使用起来也非常方便,但是有时我们可能会有一些需求,如还需要将日志发送到远端,或者直
CeshirenTester
2022/06/09
3820
使用K-Means算法将图像压缩6倍!
在本文中,我们将讨论K-Means算法,它是一种基于聚类的无监督机器学习算法。此外,我们还将讨论如何使用K-Means来压缩图像。
Python数据科学
2019/04/09
1.4K0
使用K-Means算法将图像压缩6倍!
如何将SVG图像使用在HTML网站中
使用PS生成SVG图像用编辑器打开发现是data:img/png;base64而非/path
Din
2018/10/19
4.7K0
如何将SVG图像使用在HTML网站中
Apache报错:无法使用可靠的服务器域名
网上很多说改为 ServerName localhost:80, 其实去掉前面注释报错就不显示了
很酷的站长
2023/02/18
1.1K0
Apache报错:无法使用可靠的服务器域名
使用 Proxifier 将本机代理为服务器
  咱们并不能直接使用 Proxifier 进行代理,需要为其先创建一个隧道。就好比咋给两个世界搞一个虫洞,让小飞机可以穿过虫洞到达另外一个世界。常见的 SSH 工具都有构建隧道的功能,我这里以 FinalShell 为例。毫无疑问,第一步先连接上服务器。第二步点击右下角设置 ☞ 然后选择隧道 ☞ 添加隧道。其中隧道名称可以任意填写,类型选择 SOCKS5,监听端口任意,该端口为隧道服务的端口,IP 为隧道的 ip,一般为 127.0.0.1。
Demo_Null
2020/09/28
4.8K0
使用 Proxifier 将本机代理为服务器
使用OpenTelemetry Operator将可观测数据发送到SigNoz
OpenTelemetry Operator 是一个用于部署和管理 OpenTelemetry 组件的 Kubernetes Operator。它是一个自定义的 Kubernetes 控制器,使用 Operator 模式自动化了 OpenTelemetry 环境的部署、配置和管理过程。
我是阳明
2023/09/11
1.1K0
使用OpenTelemetry Operator将可观测数据发送到SigNoz
点击加载更多

相似问题

无法将图像发送到服务器

21

如何使用angular-file-upload获取图像尺寸

20

无法将图像发送到Go服务器

16

无法将图像发送到我的服务器

20

使用NSURLSession将图像发送到服务器

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文