• 技术文章 >运维 >linux运维

    如何由CPU保护您的数据和隐私不被恶意代码窃取?英特尔SGX基础介绍

    坏嘻嘻坏嘻嘻2018-09-29 11:42:52原创1849
    本篇文章给大家带来的内容是关于英特尔SGX的基础介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    英特尔 SGX 基础介绍

    英特尔 SGX(Intel Software Guard Extension)是英特尔指令集架构的一个扩展。SGX 为您提供了围圈(Enclave),即内存中一个加密的可信执行区域,由 CPU 保护您的数据和隐私不被恶意代码窃取。

    原理

    SGX 利用新增的处理器指令,在内存中分配一部分区域 EPC(Enclave Page Cache),通过 CPU 内的加密引擎 MEE(Memory Encryption Engine)对其中的数据进行加密。EPC 中加密的内容只有进入 CPU 后才会被解密成明文。因此,在 SGX 中,您可以不信任操作系统、VMM、甚至 BIOS,只需要信任 CPU 便能确保隐私数据不会泄漏。

    应用

    实际应用中,您可以把隐私数据加密后以密文形式传递至云上的围圈中,并通过远程证明把对应的秘钥也传入围圈。然后在 CPU 的加密保护下利用数据进行运算,结果会以密文形式返回给您。这种模式下,您既可以利用云计算强大的计算力,又不用担心数据泄漏。

    微信截图_20180929113842.png

    EDL(Enclave Definition Language)

    EDL 是 SGX 编程的核心,其中定义了所有围圈里对外读写、处理数据的函数。在编译阶段,SDK 提供的 Edger8r 工具会根据 EDL 中定义的函数生成围圈和普通内存的桥接函数,并做相应的安全检测。

    函数分为信任函数(ecall)和不可信函数(ocall):

    ecall:定义在信任区域(trusted),在围圈外被调用,并在围圈内执行。

    ocall:定义在不可信区域(untrusted),在围圈内被调用,并在围圈外执行。

    // demo.edl
    enclave {
            // Add your definition of "secret_t" here
            trusted {
                     public void get_secret([out] secret_t* secret);
            };
            untrusted {
            // This OCALL is for illustration purposes only.
            // It should not be used in a real enclave,
            // unless it is during the development phase
            // for debugging purposes.
            void dump_secret([in] const secret_t* secret);
            };
    };

    安装 SGX

    您可以通过安装文件或者源代码安装 SGX,包括驱动、PSW 和 SDK 等。两种安装方式都需要安装对应 Linux 内核版本的头文件。

    以上就是如何由CPU保护您的数据和隐私不被恶意代码窃取?英特尔SGX基础介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:Linux
    上一篇:如何快速简单的查看网站首页大小 下一篇:如何处理ECS实例无法加载内核启动
    线上培训班

    相关文章推荐

    • 在linux中使用包管理器安装node.js_node.js• Linux下使用jq友好的打印JSON技巧分享_javascript技巧• 在Linux上用forever实现Node.js项目自启动_node.js• Linux(CentOS)下PHP扩展PDO编译安装的方法_php技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网