{"id":2298,"date":"2017-09-28T05:00:53","date_gmt":"2017-09-28T05:00:53","guid":{"rendered":"https:\/\/www.inforsec.org\/wp\/?p=2298"},"modified":"2017-09-28T05:02:38","modified_gmt":"2017-09-28T05:02:38","slug":"sgx-%e4%be%a7%e4%bf%a1%e9%81%93%e6%94%bb%e5%87%bb%e7%bb%bc%e8%bf%b0","status":"publish","type":"post","link":"http:\/\/202.112.238.40\/wp\/?p=2298","title":{"rendered":"SGX \u4fa7\u4fe1\u9053\u653b\u51fb\u7efc\u8ff0"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>\u4f5c\u8005\uff1a\u7a0b\u8d8a\u5f3a\u00a0 \u00a0 \u767e\u5ea6\u7f8e\u56fd\u7814\u7a76\u9662\u5b89\u5168\u5b9e\u9a8c\u5ba4\u7684\u8d44\u6df1\u5b89\u5168\u79d1\u5b66\u5bb6<\/p>\n<p>Intel SGX \u6280\u672f\u662f\u4e00\u79cd\u65b0\u7684\u57fa\u4e8e\u786c\u4ef6\u7684\u53ef\u4fe1\u8ba1\u7b97\u6280\u672f\u3002\u8be5\u6280\u672f\u901a\u8fc7CPU\u7684\u5b89\u5168\u6269\u5c55\uff0c\u5bf9\u7528\u6237\u7a7a\u95f4\u8fd0\u884c\u73af\u5883\uff08enclave\uff09\u63d0\u4f9b\u673a\u5bc6\u6027\u548c\u5b8c\u6574\u6027\u4fdd\u62a4\u3002\u5373\u4f7f\u662f\u653b\u51fb\u8005\u83b7\u5f97OS\uff0chypervisor\uff0cBIOS \u548cSMM \u7b49\u6743\u9650\uff0c\u4e5f\u65e0\u6cd5\u76f4\u63a5\u653b\u51fbenclave\u3002\u56e0\u6b64\uff0c\u653b\u51fb\u8005\u4e0d\u5f97\u4e0d\u901a\u8fc7\u4fa7\u4fe1\u9053\u7684\u653b\u51fb\u65b9\u6cd5\u6765\u95f4\u63a5\u83b7\u53d6\u6570\u636e\uff08\u6bd4\u5982\u9690\u79c1\u6570\u636e\uff0c\u52a0\u5bc6\u5bc6\u94a5\u7b49\u7b49\uff09\u3002\u5f97\u76ca\u4e8eenclave \u7684\u5f3a\u5b89\u5168\u5047\u8bbe\u548c\u5de5\u4f5c\u6a21\u578b\uff0c\u653b\u51fb\u8005\u6709\u5927\u91cf\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u9762\u53ef\u4ee5\u9009\u62e9\uff0c\u6bd4\u5982\u9875\u8868\uff0ccache\uff0cDRAM \u7b49\u7b49\u3002\u8fd9\u4e2a\u5de5\u4f5c\u5c31\u662f\u5bf9\u4fa7\u4fe1\u9053\u653b\u51fb\u9762\u8fdb\u884c\u4e00\u4e2a\u5168\u9762\u7684\u603b\u7ed3\uff0c\u5e76\u8ba8\u8bba\u4e00\u4e9b\u53ef\u80fd\u7684\u9632\u5fa1\u548c\u68c0\u6d4b\u65b9\u6cd5\u3002<!--more--><\/p>\n<p><strong>1 \u5f15\u8a00<\/strong><\/p>\n<p>\u5f53\u6211\u4eec\u4e0d\u80fd\u591f\u5b8c\u5168\u76f8\u4fe1\u67d0\u4e2a\u8ba1\u7b97\u5e73\u53f0\uff08\u6bd4\u5982\u516c\u6709\u4e91\u548c\u53ef\u80fd\u88ab\u653b\u7834\u7684\u64cd\u4f5c\u7cfb\u7edf\uff09\u7684\u65f6\u5019\uff0c\u5efa\u7acb\u4e2a\u53ef\u4fe1\u7684\u8fd0\u884c\u73af\u5883\uff08TEE\uff09\u662f\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u5b89\u5168\u8981\u6c42\u3002\u8fd1\u4e9b\u5e74\u7814\u7a76\u4eba\u5458\u63d0\u51fa\u4e86\u5f88\u591aTEE \u7cfb\u7edf\u7528\u4e8e\u4fdd\u62a4\u5e94\u7528\u7a0b\u5e8f\uff0c\u4f7f\u5176\u80fd\u591f\u62b5\u5fa1\u6765\u81ea\u64cd\u4f5c\u7cfb\u7edf\u7684\u653b\u51fb[5, 6, 12]\u3002\u4e3a\u4e86\u9632\u5fa1\u66f4\u5f3a\u7684\u653b\u51fb\uff0c\u6bd4\u5982\u6765\u81eahypervisor \u6216SMM \u7684\u653b\u51fb\uff0cIntel\u57282013 \u5e74HASP\u4f1a\u8bae\u7684workshop\u6b63\u5f0f\u63a8\u51fa\u4e86Intel SGX\u3002\u8be5\u6280\u672f\u901a\u8fc7CPU \u7684\u5b89\u5168\u6269\u5c55\uff0c\u5bf9\u7528\u6237\u7a7a\u95f4\u8fd0\u884c\u73af\u5883\uff08enclave\uff09\u63d0\u4f9b\u57fa\u4e8e\u786c\u4ef6\uff08CPU\uff09\u7684\u4fdd\u62a4\u3002\u5373\u4f7f\u662f\u653b\u51fb\u8005\u83b7\u5f97\u4e86OS\uff0chypervisor\uff0cBIOS\uff0cSMM \u7b49\u6743\u9650\uff0c\u4e5f\u65e0\u6cd5\u76f4\u63a5\u8bfb\u53d6\u6216\u8005\u4fee\u6539enclave \u7684\u5185\u5bb9\u3002<\/p>\n<p>Enclave \u7684\u8fd0\u884c\u73af\u5883\u6709\u5927\u91cf\u7684\u8d44\u6e90\u548c\u5916\u9762non-enclave \u516c\u7528\uff0c\u6bd4\u5982cache\uff0c\u9875\u8868\uff0cDRAM \u548c\u5206\u652f\u9884\u6d4b\u5668\u7b49\uff0c\u8fd9\u5c31\u7ed9\u653b\u51fb\u8005\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u9762\u3002\u800c\u4e14\uff0c\u4e0d\u53ef\u4fe1\u7684\u64cd\u4f5c\u7cfb\u7edf\u8fd8\u4ecd\u7136\u8d1f\u8d23\u7ba1\u7406\u7cfb\u7edf\u7684\u8d44\u6e90\uff0c\u6bd4\u5982\u9875\u8868\uff0c\u5185\u5b58\uff0c\u4e2d\u65ad\uff0c\u8fdb\u7a0b\u8c03\u5ea6\u7b49\u7b49\uff0c\u8fd9\u5c31\u8fdb\u4e00\u6b65\u65b9\u4fbf\u653b\u51fb\u8005\u51cf\u5c0f\u4fa7\u4fe1\u9053\u653b\u51fb\u8fc7\u7a0b\u4e2d\u7684\u566a\u97f3\uff0c\u4ece\u800c\u63d0\u9ad8\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u6210\u529f\u7387\u3002<\/p>\n<p>\u672c\u6587\u4e3b\u8981\u8c03\u7814\u548c\u603b\u7ed3\u76ee\u524d\u5df2\u6709\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u6839\u636e\u653b\u51fb\u9762\u7684\u4e0d\u540c\uff0c\u6211\u4eec\u5c06\u4ece\u9875\u8868\uff0cTLB\uff0ccache\uff0cDRAM \u548c\u5206\u652f\u9884\u6d4b\u5668\u7b49\u51e0\u4e2a\u9762\u8fdb\u884c\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u4ecb\u7ecd\u3002SGX \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u5341\u5206\u96be\u4ee5\u9632\u5fa1\u3002\u76ee\u524d\u8fd8\u6ca1\u6709\u4e00\u79cd\u9632\u5fa1\u7b56\u7565\u53ef\u4ee5\u9632\u5fa1\u4ee5\u4e0a\u6240\u6709\u653b\u51fb\u3002\u672c\u6587\u6700\u540e\u5bf9\u53ef\u80fd\u7684\u4fa7\u4fe1\u9053\u9632\u5fa1\u653b\u51fb\u65b9\u6cd5\u8fdb\u884c\u7b80\u8981\u7684\u603b\u7ed3\uff0c\u5e0c\u671b\u8bfb\u8005\u80fd\u591f\u5728\u67d0\u4e9b\u65b9\u9762\u53d7\u5230\u542f\u53d1\u3002<\/p>\n<p><strong>2 SGX \u80cc\u666f\u4ecb\u7ecd<\/strong><\/p>\n<p>Intel SGX \u662f\u4e00\u79cd\u57fa\u4e8e\u786c\u4ef6\u7684TEE\u7cfb\u7edf\u3002\u8be5\u529f\u80fd\u5df2\u7ecf\u96c6\u6210\u5728Intel Sky-Lake \u7cfb\u5217\u3002\u533a\u522b\u4ee5\u5f80\u7684TEE \u7cfb\u7edf\u6709\u7740\u8f83\u5927\u7684\u53ef\u4fe1\u8ba1\u7b97\u57fa\uff08TCB\uff09\uff0cSGX \u7684\u53ef\u4fe1\u8ba1\u7b97\u57fa\u975e\u5e38\u5c0f\uff0c\u4ec5\u4ec5\u5305\u542bCPU \u548cenclave \u672c\u8eab\u3002\u4efb\u4f55\u7684\u7279\u6743\u8f6f\u4ef6\uff0c\u6bd4\u5982OS\uff0chypervisor\uff0cBIOS\uff0cSMM \u7b49\u90fd\u4e0d\u5305\u542b\u5728\u53ef\u4fe1\u8ba1\u7b97\u57fa\u5185\u3002Enclave\u6709SGX \u786c\u4ef6\u4e13\u95e8\u9884\u7559\u7684EPC\uff08Enclave Page Cache\uff09\u5185\u5b58\u3002EPC\u662fPRM\uff08processor reserved memory\uff09\u7684\u5b50\u96c6\uff0c\u5e76\u88ab\u7cfb\u7edf\u8f6f\u4ef6\u6309\u71674KB\u7c92\u5ea6\u8fdb\u884c\u5206\u9875\u7ba1\u7406\u3002\u6bcf\u4e00\u4e2aEPC \u9875\u9762\u53ea\u80fd\u5206\u914d\u7ed9\u4e00\u4e2aenclave\u3002CPU \u963b\u6b62\u4efb\u4f55non-enclave \u53bb\u8bbf\u95eePRM\uff0c\u4efb\u4f55non-enclave \u7684\u8bbf\u95ee\u90fd\u4f1a\u5bfc\u81f4\u4e00\u4e2a\u5931\u8d25\u7684\u4e8b\u52a1\uff08aborted transaction\uff09\u3002\u5728\u76ee\u524dSkyLake \u7684\u5904\u7406\u5668\u4e0a\u9762\uff0c\u5931\u8d25\u7684\u5199\u64cd\u4f5c\u88ab\u5ffd\u7565\uff0c\u5931\u8d25\u7684\u8bfb\u64cd\u4f5c\u76f4\u63a5\u8fd4\u56de\u4e00\u4e2a\u51681\u7684\u503c\u3002<\/p>\n<p>\u6bcf\u4e2aenclave \u7684\u7a0b\u5e8f\u6307\u5b9a\u4e00\u6bb5ELRANGE\uff08Enclave Linear AddressRange\uff09\u7684\u865a\u62df\u7a7a\u95f4\u4f9b\u81ea\u8eab\u8fd0\u884c\u3002\u9875\u8868\u8d1f\u8d23\u628a\u865a\u62df\u5730\u5740\u6620\u5c04\u4e3aEPC\u6240\u5728\u7684\u7269\u7406\u5730\u5740\u3002\u9875\u8868\u7684\u5de5\u4f5c\u539f\u7406\u548c\u4ee5\u5f80\u7684\u9875\u8868\u4e00\u6837\uff0c\u6bd4\u5982\u4f1a\u8fdb\u884c\u6743\u9650\u7684\u68c0\u6d4b\u3001\u4f1a\u8bbe\u7f6eaccess bit\u548cdirty bit\u7b49\u7b49\u3002Enclave \u548cnon-enclave \u53ef\u4ee5\u901a\u8fc7EENTER \u548cEEXIT \u6765\u4e3b\u52a8\u5207\u6362\u5de5\u4f5c\u6a21\u5f0f\u3002Enclave \u8fd0\u884c\u65f6\u53ef\u80fd\u4f1a\u88ab\u4e2d\u65ad\u6216\u8005\u5f02\u5e38\u6253\u65ad\uff0c\u8fd9\u4e2a\u65f6\u5019enclave \u4f1a\u901a\u8fc7AEX\uff08Asynchronous EnclaveExit\uff09\u673a\u5236\u9000\u51fa\uff0c\u5207\u6362\u5230non-enclave\u5de5\u4f5c\u6a21\u5f0f\u3002\u5728\u6a21\u5f0f\u5207\u6362\u8fc7\u7a0b\u4e2d\uff0c\u8fd0\u884c\u72b6\u6001\u4f1a\u4fdd\u5b58\u5230SSA\u7ed3\u6784\u4f53\uff08State Save Area \uff09\u91cc\u9762\uff0c\u540c\u65f6\u6e05\u9664TLB\u4ee5\u4fdd\u8bc1enclave \u7684\u5b89\u5168\u3002<\/p>\n<p><a href=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132647.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2324 aligncenter\" src=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132647.png\" alt=\"\" width=\"416\" height=\"284\" srcset=\"http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132647.png 416w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132647-300x205.png 300w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132647-220x150.png 220w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132647-150x102.png 150w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/a><\/p>\n<p>\u56fe1: Intel SGX \u5185\u5b58\u5206\u5e03\u548c\u9694\u79bb\u673a\u5236\u3002Enclave \u8dd1\u5728EPC \u4e0a\u9762\u3002Enclave\u7684\u6570\u636e\u4ec5\u53ef\u4ee5\u88abenclave \u81ea\u5df1\u8bbf\u95ee\uff0c\u4efb\u4f55\u5916\u754c\u4ee3\u7801\u7684\u8bbf\u95ee\u90fd\u4f1a\u88ab\u62d2\u7edd\u3002<\/p>\n<p><strong>3 SGX \u4fa7\u4fe1\u9053\u653b\u51fb<\/strong><\/p>\n<p>\u672c\u7ae0\u91cd\u70b9\u4ecb\u7ecdSGX \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u9996\u5148\u4ecb\u7ecdSGX\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u5a01\u80c1\u6a21\u578b\uff0c\u7136\u540e\u6982\u62ec\u4ecb\u7ecd\u4fa7\u4fe1\u9053\u7684\u653b\u51fb\u9762\u3002\u6700\u540e\uff0c\u6839\u636e\u653b\u51fb\u9762\u7684\u4e0d\u540c\uff0c\u518d\u5206\u522b\u4ecb\u7ecd\u4e00\u4e0b\u76ee\u524d\u5df2\u7ecf\u53d1\u8868\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002<\/p>\n<p>3.1 \u5a01\u80c1\u6a21\u578b<\/p>\n<p>\u4fa7\u4fe1\u9053\u653b\u51fb\u4e3b\u8981\u76ee\u6807\u662f\u653b\u51fbenclave\u6570\u636e\u7684\u673a\u5bc6\u6027\uff08confidentiality\uff09\u3002\u653b\u51fb\u8005\u6765\u81eanon-enclave \u90e8\u5206\uff0c\u5305\u62ec\u5e94\u7528\u7a0b\u5e8f\u548c\u7cfb\u7edf\u8f6f\u4ef6\u3002\u7cfb\u7edf\u8f6f\u4ef6\u5305\u62ecOS\uff0chypervisor\uff0cSMM\uff0cBIOS \u7b49\u7279\u6743\u7ea7\u8f6f\u4ef6\u3002<\/p>\n<p>\u4fa7\u4fe1\u9053\u653b\u51fb\u4e00\u822c\u5047\u8bbe\u653b\u51fb\u8005\u77e5\u9053enclave \u521d\u59cb\u5316\u65f6\u5019\u7684\u4ee3\u7801\u548c\u6570\u636e\uff0c\u5e76\u4e14\u77e5\u9053\u5185\u5b58\u5e03\u5c40\u3002\u5185\u5b58\u5e03\u5c40\u5305\u62ec\u865a\u62df\u5730\u5740\uff0c\u7269\u7406\u5730\u5740\u4ee5\u53ca\u4ed6\u4eec\u4e4b\u95f4\u7684\u6620\u5c04\u5173\u7cfb\u3002\u6709\u4e9b\u4fa7\u4fe1\u9053\u653b\u51fb\u5047\u8bbe\u653b\u51fb\u8005\u77e5\u9053enclave \u7684\u8f93?\u6570\u636e\uff0c\u5e76\u4e14\u53ef\u4ee5\u53cd\u590d\u89e6\u53d1enclave\uff0c\u8fdb\u884c\u591a\u6b21\u89c2\u5bdf\u8bb0\u5f55\u3002\u4fa7\u4fe1\u9053\u653b\u51fb\u8fd8\u5047\u8bbe\u653b\u51fb\u8005\u77e5\u9053\u8fd0\u884cenclave \u5e73\u53f0\u7684\u786c\u4ef6\u914d\u7f6e\u3001\u7279\u6027\u548c\u6027\u80fd\uff0c\u6bd4\u5982CPU\uff0cTLB\uff0ccache\uff0cDRAM\uff0c\u9875\u8868\uff0c\u4e2d\u65ad\u4ee5\u53ca\u5f02\u5e38\u7b49\u5404\u79cd\u7cfb\u7edf\u5e95\u5c42\u673a\u5236\u3002<\/p>\n<p>3.2 \u4fa7\u4fe1\u9053\u7684\u653b\u51fb\u9762<\/p>\n<p>enclave \u548cnon-enclave\u5171\u4eab\u5927\u91cf\u7684\u7cfb\u7edf\u8d44\u6e90\uff0c\u8fd9\u5c31\u7ed9\u4fa7\u4fe1\u9053\u653b\u51fb\u7559\u4e0b\u4e86\u975e\u5e38\u5927\u7684\u653b\u51fb\u9762\u3002\u7ecf\u8fc7\u5bf9\u73b0\u6709\u8d44\u6599\u7684\u603b\u7ed3\u548c\u7cfb\u7edf\u7ed3\u6784\u7684\u5206\u6790\uff0c\u6211\u4eec\u628aSGX\u7684\u653b\u51fb\u603b\u7ed3\u5728\u56fe2\u91cc\u9762\u3002<\/p>\n<p><a href=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132715.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2325 aligncenter\" src=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132715.png\" alt=\"\" width=\"542\" height=\"376\" srcset=\"http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132715.png 542w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132715-300x208.png 300w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132715-216x150.png 216w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132715-150x104.png 150w\" sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u56fe2: Intel SGX \u4fa7\u4fe1\u9053\u7684\u653b\u51fb\u9762\u3002<\/p>\n<p>\u5982\u56fe2\u6240\u793a\uff0cenclave \u7684\u8fd0\u884c\u8fc7\u7a0b\u4e2d\u4f1a\u7528\u5230<\/p>\n<p>1. CPU \u5185\u90e8\u7ed3\u6784\u3002\u6bd4\u5982pipeline\uff0cbranch prediction Buffer\uff08BPB\uff09\u7b49\u7b49\u3002\u8fd9\u4e9b\u7ed3\u6784\u4e0d\u80fd\u591f\u76f4\u63a5\u8bbf\u95ee\uff0c\u4f46\u662f\u5982\u679c\u53ef\u4ee5\u95f4\u63a5\u5229\u7528[16]\uff0c\u4ecd\u7136\u53ef\u80fd\u6cc4\u9732enclave\u7684\u63a7\u5236\u6d41\u6216\u6570\u636e\u6d41\u3002<\/p>\n<p>2. TLB\u3002TLB \u6709\u5305\u62eciTLB\uff0cdTLB \u548cL2 TLB\u3002\u5982\u679cHyperThreading\u6253\u5f00\uff0c\u4e24\u4e2a\u903b\u8f91\u6838\u5171\u4eab\u4e00\u4e2a\u7269\u7406\u6838\uff0c\u8fd9\u4e2a\u65f6\u5019\u4f1a\u5927\u5927\u589e\u52a0\u4fa7\u4fe1\u9053\u7684\u53ef\u80fd\u3002<\/p>\n<p>3. Cache\u3002Cache \u5305\u62ecL1 instruction cache\uff0cL1 data cache\uff0cL2cache \u548cL3 cache\uff08\u53c8\u53ebLLC cache\uff09\u3002<\/p>\n<p>4. DRAM\u3002DRAM \u5305\u542bchannels\uff0cDIMMs\uff0cranks\uff0cbanks\u3002\u6bcf\u4e2abanks\u53c8\u5305\u542brows\u3001columns \u548crow buffer\u3002<\/p>\n<p>5. Pagetable\uff08\u9875\u8868\uff09\u3002\u9875\u8868\u53ef\u4ee5\u901a\u8fc7\u6743\u9650\u63a7\u5236\u6765\u89e6\u53d1\u7f3a\u9875\u5f02\u5e38\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u9875\u8868\u7684\u72b6\u6001\u4f4d\u6765\u8868\u660eCPU \u7684\u67d0\u4e9b\u64cd\u4f5c\u3002\u5bf9\u4e8e\u4e0d\u540c\u7684\u653b\u51fb\u9762\uff0c\u653b\u51fb\u8005\u9700\u8981\u4e86\u89e3\u5177\u4f53\u7684\u7ec6\u8282\u548c\u5de5\u4f5c\u539f\u7406\u3002\u5176\u4e2d\u6bd4\u8f83\u91cd\u8981\u7684\u53c2\u8003\u7684\u6587\u6863\u5c31\u662fIntel \u7684\u624b\u518c[14, 13]\u3002\u76ee\u524dSGX \u5df2\u7ecf\u90e8\u7f72\u5728SkyLake \u7684\u673a\u5668\u4e0a\u9762\u3002\u56e0\u6b64\u6211\u4eec\u9700\u8981\u5bf9SkyLake \u7684\u4e00\u4e9b\u786c\u4ef6\u548c\u6027\u80fd\u7ec6\u8282\u91cd\u70b9\u638c\u63e1\u3002\u6587\u6863[2]\u5bf9SkyLake i7-6700 \u7684\u4e00\u4e9bCPU \u7ec6\u8282\u548c\u6027\u80fd\u505a\u4e86\u4e00\u4e2a\u6bd4\u8f83\u5168\u9762\u7684\u4ecb\u7ecd\u548c\u6d4b\u91cf\u3002<\/p>\n<p>\u76ee\u524d\uff0c\u6587\u7ae0[28]\u53d1\u73b0\u4e86Intel\u6587\u6863\u7684\u4e00\u5904\u63cf\u8ff0\u548c\u5b9e\u9645\u5b9e\u9a8c\u6709\u51b2\u7a81\uff0c\u5728\u8fd9\u91cc\u9700\u8981\u91cd\u70b9\u8bf4\u660e\u4e00\u4e0b\u3002\u5177\u4f53\u6765\u8bb2Intel \u6587\u6863[13] \u6307\u51faSkyLake\u673a\u5668\uff0c\u5728\u6253\u5f00hyperthreading\u4e4b\u540e\u7684TLB\u7684\u914d\u7f6e\u4fe1\u606f\u5982\u56fe3\u3002\u7136\u800c\uff0c\u6839\u636e\u6587\u7ae0[28]\u7684\u5b9e\u9a8c\uff0c\u8fd9\u4e2aIntel \u6587\u6863\u5bf9\u4e8eTLB partition \u7684\u63cf\u8ff0\u662f\u4e0d\u51c6\u786e\u7684\u3002\u5b9e\u9a8c\u7ed3\u679c\u8868\u660e\uff0ciTLB \u662ffixed partition\uff0c\u5176\u4ed6(dTLB \u548cL2 TLB\uff09\u90fd\u662fdynamicpartition\u3002\u672c\u6587\u5c1a\u672a\u5b9e\u9a8c\u9a8c\u8bc1\u4e0a\u8ff0\u5b9e\u9a8c\u7ed3\u679c\u3002\u5982\u679c\u5927\u5bb6\u7528\u5230\u8fd9\u90e8\u5206\u77e5\u8bc6\uff0c\u8fd8\u9700\u72ec\u7acb\u5b9e\u9a8c\u9a8c\u8bc1\u3002<\/p>\n<p><a href=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132732.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2326 aligncenter\" src=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132732.png\" alt=\"\" width=\"521\" height=\"164\" srcset=\"http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132732.png 521w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132732-300x94.png 300w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132732-250x79.png 250w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132732-150x47.png 150w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u56fe3: SkyLake \u7684TLB \u914d\u7f6e\u3002\u6ce8\u610f\u8fd9\u91cc\u7684partition \u4fe1\u606f\u53ef\u80fd\u4e0d\u51c6\u786e\u3002<\/p>\n<p>3.3 \u4fa7\u4fe1\u9053\u653b\u51fb<\/p>\n<p>\u4fa7\u4fe1\u9053\u653b\u51fb\u4e3b\u8981\u624b\u6bb5\u662f\u901a\u8fc7\u653b\u51fb\u9762\u83b7\u53d6\u6570\u636e\uff0c\u63a8\u5bfc\u83b7\u5f97\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u4fe1\u606f\uff0c\u6700\u7ec8\u83b7\u53d6\u88abenclave\u7684\u4ee3\u7801\u548c\u6570\u636e\u7684\u4fe1\u606f\uff0c\u6bd4\u5982\u52a0\u5bc6\u5bc6\u94a5\uff0c\u9690\u79c1\u6570\u636e\u7b49\u7b49\u3002\u6211\u4eec\u8fd9\u91cc\u4e0d\u4e00\u4e00\u5217\u4e3e\u5177\u4f53\u7684\u5de5\u4f5c\uff0c\u800c\u662f\u8bd5\u56fe\u4ece\u653b\u51fb\u9762\u7684\u89d2\u5ea6\uff0c\u5168\u9762\u7684\u4ecb\u7ecd\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u672c\u7ae0\u8282\u4e0b\u9762\u7684\u5185\u5bb9\uff0c\u5c31\u4ece\u5178\u578b\u7684\u653b\u51fb\u9762\uff0c\u5305\u62ec\u9875\u8868\uff0cTLB\uff0ccache\uff0cDRAM \u4ee5\u53caCPU \u5185\u90e8\u7ed3\u6784\uff0c\u63cf\u8ff0\u76ee\u524d\u5df2\u77e5\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002<\/p>\n<p>3.3.1 \u57fa\u4e8e\u9875\u8868\u7684\u653b\u51fb<\/p>\n<p>\u6700\u65e9\u7684SGX \u4fa7\u4fe1\u9053\u653b\u51fb\u5c31\u662f\u57fa\u4e8e\u9875\u8868\u7684\u653b\u51fb[29, 27]\u3002\u8fd9\u7c7b\u5229\u7528\u9875\u8868\u5bf9enclave \u9875\u9762\u7684\u8bbf\u95ee\u63a7\u5236\u6743\uff0c\u8bbe\u7f6eenclave \u9875\u9762\u4e3a\u4e0d\u53ef\u8bbf\u95ee\u3002\u8fd9\u4e2a\u65f6\u5019\u4efb\u4f55\u8bbf\u95ee\u90fd\u4f1a\u89e6\u53d1\u7f3a\u9875\u5f02\u5e38\uff0c\u4ece\u800c\u80fd\u591f\u533a\u5206enclave \u8bbf\u95ee\u4e86\u54ea\u4e9b\u9875\u9762\u3002\u6309\u7167\u65f6\u95f4\u987a\u5e8f\u628a\u8fd9\u4e9b\u4fe1\u606f\u7ec4\u5408\uff0c\u5c31\u80fd\u591f\u53cd\u63a8\u51faenclave \u7684\u67d0\u4e9b\u72b6\u6001\u548c\u4fdd\u62a4\u7684\u6570\u636e\u3002\u8be5\u7c7b\u5178\u578b\u7684\u653b\u51fb\u5305\u62eccontrolled-channel attack [29] \u548cpigeonholeattack [27]\u3002\u8fd9\u7c7b\u653b\u51fb\u7684\u7f3a\u70b9\u5c31\u662f\u7cbe\u5ea6\u53ea\u80fd\u8fbe\u5230\u9875\u7c92\u5ea6\uff0c\u65e0\u6cd5\u533a\u5206\u66f4\u7ec6\u7c92\u5ea6\u7684\u4fe1\u606f\u3002\u4f46\u662f\u5728\u67d0\u4e9b\u573a\u666f\u4e0b\uff0c\u8fd9\u7c7b\u653b\u51fb\u5df2\u7ecf\u80fd\u591f\u83b7\u5f97\u5927\u91cf\u6709\u7528\u4fe1\u606f\u3002\u4f8b\u5982\u56fe4\u6240\u793a\uff0c\u8fd9\u7c7b\u57fa\u4e8e\u9875\u8868\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u53ef\u4ee5\u83b7\u5f97libjpeg \u5904\u7406\u7684\u56fe\u7247\u4fe1\u606f.\u7ecf\u8fc7\u8fd8\u539f\uff0c\u57fa\u672c\u4e0a\u8fbe\u5230\u4eba\u773c\u8bc6\u522b\u7684\u7a0b\u5ea6\u3002pigeonhole \u653b\u51fb\u4e5f\u5c55\u793a\u4e86\u5927\u91cf\u5bf9\u73b0\u6709\u7684\u5b89\u5168\u5e93\u7684\u653b\u51fb\uff0c\u5982\u56fe5\u6240\u793a\u3002<\/p>\n<p><a href=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132748.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2327 aligncenter\" src=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132748.png\" alt=\"\" width=\"318\" height=\"355\" srcset=\"http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132748.png 318w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132748-269x300.png 269w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132748-134x150.png 134w\" sizes=\"auto, (max-width: 318px) 100vw, 318px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u56fe4: Controlled-channel \u653b\u51fb\u5bf9libjpeg \u7684\u653b\u51fb\u6548\u679c\u3002<\/p>\n<p>\u540e\u6765\uff0c\u57fa\u4e8e\u9875\u8868\u7684\u653b\u51fb\u6709\u4e86\u65b0\u7684\u53d8\u79cd\u3002\u8fd9\u4e9b\u4fa7\u4fe1\u9053\u653b\u51fb\u4e3b\u8981\u5229\u7528\u9875\u8868\u7684\u72b6\u6001\u4f4d[28]\u3002\u5982\u56fe6\u6240\u793a\uff0c\u4e00\u4e2a\u9875\u8868\u9879\u6709\u5f88\u591a\u4f4d\uff0c\u6709\u4e9b\u662f\u7528\u6765\u505a\u8bbf\u95ee\u63a7\u5236\uff0c\u6bd4\u5982P, RW, US, XD\uff0c\u6709\u4e9b\u5219\u6807\u8bc6\u72b6\u6001\uff0c\u6bd4\u5982D\uff08dirty bit\uff09\u548cA\uff08accessbit\uff09\u3002\u5982\u679cA bit \u88ab\u8bbe\u7f6e\uff0c\u5219\u8868\u660e\u8be5\u9875\u8868\u9879\u6307\u5411\u7684\u9875\u9762\u5df2\u7ecf\u88ab\u8bbf\u95ee\uff1b\u5982\u679cDbit\u88ab\u8bbe\u7f6e\uff0c\u5219\u8868\u660e\u8be5\u9875\u8868\u9879\u6307\u5411\u7684\u9875\u9762\u53d1\u751f\u4e86\u5199\u64cd\u4f5c\u3002\u901a\u8fc7\u76d1\u63a7\u89c2\u5bdf\u8fd9\u4e9b\u72b6\u6001\u4f4d\uff0c\u653b\u51fb\u8005\u5c31\u53ef\u4ee5\u83b7\u53d6\u548ccontrolled-channel\/pigeonhole \u653b\u51fb\u7c7b\u4f3c\u7684\u4fe1\u606f\u3002<\/p>\n<p><a href=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132813.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2328 aligncenter\" src=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132813.png\" alt=\"\" width=\"536\" height=\"219\" srcset=\"http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132813.png 536w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132813-300x123.png 300w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132813-250x102.png 250w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132813-150x61.png 150w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u56fe5: Pigeonhole \u653b\u51fb\u5bf9\u5b89\u5168\u5e93\u7684\u653b\u51fb\u6548\u679c\u3002<\/p>\n<p><a href=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132827.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2329 aligncenter\" src=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132827.png\" alt=\"\" width=\"344\" height=\"57\" srcset=\"http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132827.png 344w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132827-300x50.png 300w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132827-250x41.png 250w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132827-150x25.png 150w\" sizes=\"auto, (max-width: 344px) 100vw, 344px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u56fe6: \u5178\u578b\u7684\u9875\u8868\u9879\u7684\u683c\u5f0f\uff08x64 \u7cfb\u7edf\uff09\u3002\u5176\u4e2dD \u6807\u8bc6dirty\uff0cA \u6807\u8bc6Access\u3002<\/p>\n<p>3.3.2 \u57fa\u4e8eTLB \u7684\u653b\u51fb<\/p>\n<p>\u76ee\u524d\u8fd8\u6ca1\u6709\u5b8c\u5168\u57fa\u4e8eTLB \u7684\u653b\u51fb\uff0c\u4f46\u662f\u5df2\u7ecf\u51fa\u73b0TLB \u4f5c\u4e3a\u8f85\u52a9\u624b\u6bb5\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\uff0c\u6211\u4eec\u4f1a\u5728\u6df7\u5408\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u7ae0\u82823.3.6\u91cc\u9762\u4ecb\u7ecd\u3002\u5173\u4e8eTLB\u7684\u4e24\u70b9\u91cd\u8981\u4fe1\u606f\uff0c\u6211\u4eec\u9700\u8981\u4e86\u89e3\uff0c\u5e0c\u671b\u5bf9\u63d0\u51fa\u65b0\u7684\u57fa\u4e8eTLB \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u548c\u9632\u5fa1\u6709\u6240\u5e2e\u52a9\u30021. TLB \u7684\u5c42\u6b21\u7ed3\u6784\u3002\u76ee\u524dSkyLake \u7684\u673a\u5668\uff0c\u5206\u4e3aL1 \u548cL2 \u4e24\u5c42\u3002\u4e0d\u540c\u5c42\u6b21\u51fa\u73b0\u7684TLB miss \u7684\u65f6\u95f4\u4ee3\u4ef7\u4e0d\u540c\u3002<\/p>\n<p>2. TLB \u5bf9\u4ee3\u7801\u548c\u6570\u636e\u7684\u533a\u5206\u3002L1 \u533a\u5206\u4ee3\u7801\uff08iTLB\uff09\u548c\u6570\u636e\uff08dTLB\uff09\u3002\u4e24\u8005\u76f4\u63a5\u6709cache coherence \u7684\u4fdd\u8bc1\u3002L2 \u4e0d\u533a\u5206\u4ee3\u7801\u548c\u6570\u636e\u3002<\/p>\n<p>3.3.3 \u57fa\u4e8eCache \u7684\u653b\u51fb<\/p>\n<p>\u4f20\u7edf\u4fa7\u4fe1\u9053\u6709\u5f88\u591a\u57fa\u4e8ecache \u7684\u653b\u51fb[19, 30, 17, 10, 11]. \u5728SGX\u7684\u73af\u5883\u91cc\u9762\uff0c\u8fd9\u4e9b\u4fa7\u4fe1\u9053\u6280\u672f\u4ecd\u7136\u9002\u7528\uff0c\u800c\u4e14\u53ef\u4ee5\u505a\u7684\u66f4\u597d\u3002\u539f\u56e0\u5728\u4e8e\uff0c\u5728SGX \u73af\u5883\u91cc\u9762\u653b\u51fb\u8005\u53ef\u4ee5\u63a7\u5236\u6574\u4e2a\u7cfb\u7edf\u7684\u8d44\u6e90\u3002\u56e0\u6b64\uff0c\u653b\u51fb\u8005\u53ef\u4ee5\u6709\u9488\u5bf9\u6027\u5730\u8c03\u5ea6\u8d44\u6e90\uff0c\u51cf\u5c0f\u4fa7\u4fe1\u9053\u7684\u566a\u97f3\uff0c\u589e\u52a0\u4fa7\u4fe1\u9053\u7684\u6210\u529f\u7387\u3002\u964d\u4f4e\u566a\u97f3\u7684\u7b56\u7565\u5927\u4f53\u53ef\u4ee5\u6709\u4ee5\u4e0b\u51e0\u79cd[8, 21, 1, 25]\uff1a<\/p>\n<p>1. Core Isolation(\u6838\u9694\u79bb)\u3002\u8fd9\u4e2a\u65b9\u6cd5\u7684\u4e3b\u8981\u76ee\u6807\u5c31\u662f\u8ba9enclave \u72ec\u81ea\u5360\u6709\u4e00\u4e2a\u6838\uff08\u4e0d\u5141\u8bb8\u5176\u4ed6\u7a0b\u5e8f\u8fd0\u884c\u5728\u8be5\u6838\u4e0a\u9762\uff09\u3002<\/p>\n<p>2. Cache Isolation(\u7f13\u5b58\u9694\u79bb)\u3002\u5c3d\u91cf\u4f7f\u7528L1 \u6216\u8005L2 \u7ea7\u522b\u7684cache \u8fdb\u884c\u4fa7\u4fe1\u9053\u653b\u51fb\u3002L3 \u7684cache \u88ab\u6240\u6709\u7684\u6838\u5171\u7528\uff0c\u4f1a\u5f15\u5165\u4e0d\u5fc5\u8981\u7684\u566a\u97f3\u3002<\/p>\n<p>3. Uninterupted Execution\uff08\u4e0d\u95f4\u65ad\u8fd0\u884c\uff09\u3002\u4e5f\u5c31\u662f\u4e0d\u89e6\u53d1\u6216\u5c3d\u91cf\u5c11\u89e6\u53d1AEX\uff0c\u56e0\u4e3aAEX \u548c\u540e\u7eed\u7684ISR\uff08interrupt sevice rountine) \u90fd\u4f1a\u4f7f\u7528cache\uff0c\u4ece\u800c\u5f15\u5165\u4e0d\u5fc5\u8981\u566a\u97f3\u3002\u5c11\u89e6\u53d1AEX \u5c31\u662f\u8981\u4f7f\u7528\u4e2d\u65ad\u7ed1\u5b9a\uff08interrupt affinity\uff09\u548c\u5c06\u65f6\u949f\u9891\u7387\u3002\u4e0d\u89e6\u53d1AEX \u57fa\u672c\u4e0a\u5c31\u662f\u8ba9\u7cfb\u7edf\u8f6f\u4ef6\uff08\u6bd4\u5982OS\uff09\u5c4f\u853d\u6240\u6709\u4e2d\u65ad\u3002<\/p>\n<p>\u9664\u4e86\u964d\u4f4e\u566a\u97f3\uff0c\u653b\u51fb\u8005\u8fd8\u53ef\u4ee5\u63d0\u9ad8\u653b\u51fb\u7684\u7cbe\u5ea6\uff0c\u5927\u4f53\u7b56\u7565\u6709\uff1a<\/p>\n<p>1.\u9ad8\u7cbe\u5ea6\u65f6\u949f\u3002\u53ef\u4ee5\u91c7\u7528APIC \u63d0\u4f9b\u7684\u9ad8\u7cbe\u5ea6\u65f6\u949f\u548c\u786c\u4ef6TSC\u3002<\/p>\n<p>2. \u653e\u5927\u65f6\u95f4\u5dee\u5f02\u3002\u6bd4\u5982\u653b\u51fb\u8005\u53ef\u4ee5\u914d\u7f6e\u4fa7\u4fe1\u9053\u653b\u51fb\u4ee3\u7801\u6240\u5728\u7684CPU \u4ee5\u6700\u9ad8\u9891\u7387\u8fd0\u884c\uff0c\u800c\u5bf9enclave \u6240\u5728\u7684CPU \u8fdb\u884c\u964d\u9891\u5904\u7406\u3002<\/p>\n<p>\u57fa\u4e8ecache \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u53ef\u4ee5\u8fdb\u884c\u7ec6\u7c92\u5ea6\u7684\u76d1\u63a7\u3002\u6700\u5c0f\u7c92\u5ea6\u53ef\u4ee5\u505a\u5230\u4e00\u4e2acache line\uff0c\u537364 \u4e2a\u5b57\u8282\u3002\u7531\u4e8e\u7c92\u5ea6\u66f4\u5c0f\uff0c\u57fa\u4e8ecache \u7684\u4fa7\u4fe1\u9053\u53ef\u4ee5\u6bd4\u57fa\u4e8e\u9875\u8868\u7684\u4fa7\u4fe1\u9053\uff08\u4ee5\u53ca\u540e\u9762\u4ecb\u7ecd\u7684\u57fa\u4e8eDRAM \u7684\u4fa7\u4fe1\u9053\uff09\u83b7\u5f97\u66f4\u591a\u7684\u4fe1\u606f\u3002<\/p>\n<p>3.3.4 \u57fa\u4e8eDRAM \u7684\u653b\u51fb<\/p>\n<p>\u5728\u8bb2\u89e3\u57fa\u4e8eDRAM \u7684\u4fa7\u4fe1\u9053\u4e4b\u524d\uff0c\u6211\u4eec\u9996\u5148\u4e86\u89e3\u4e00\u4e9bDRAM \u7684\u57fa\u672c\u77e5\u8bc6\u3002DRAM \u4e00\u822c\u7531channel\uff0cDIMM, rank, bank \u7b49\u90e8\u5206\u6784\u6210\uff0c\u5982\u56fe7\u6240\u793a\u3002\u6bcf\u4e2abank \u53c8\u6709columns \u548crows \u7ec4\u6210\u3002\u6bcf\u4e2abank\u91cc\u9762\u8fd8\u6709\u4e00\u4e2arow buffer \u7528\u6765\u7f13\u5b58\u6700\u8fd1\u8bbf\u95ee\u8fc7\u7684\u4e00\u4e2arow\u3002\u5728\u8bbf\u95eeDRAM \u7684\u65f6\u5019\uff0c\u5982\u679c\u8bbf\u95ee\u5730\u5740\u5df2\u7ecf\u88ab\u7f13\u5b58\u5728row buffer \u5f53\u4e2d\uff08\u60c5\u51b5A\uff09\uff0c\u5c31\u76f4\u63a5\u4ecebuffer \u91cc\u9762\u8bfb\u53d6\uff0c\u5426\u5219\u9700\u8981\u628a\u8bbf\u95ee\u5730\u5740\u5bf9\u5e94\u7684\u6574\u4e2arow \u90fd\u52a0\u8f7d\u5230row buffer \u5f53\u4e2d\uff08\u60c5\u51b5B\uff09\u3002\u5f53\u7136\uff0c\u5982\u679crow buffer \u4e4b\u524d\u7f13\u5b58\u4e86\u5176\u4ed6row \u7684\u5185\u5bb9\uff0c\u8fd8\u9700\u8981\u5148\u6362\u51farow buffer \u7684\u5185\u5bb9\u518d\u52a0\u8f7d\u65b0\u7684row\uff08\u60c5\u51b5C\uff09\u3002A\u3001B\u3001C \u5bf9\u5e94\u7684\u4e09\u79cd\u60c5\u51b5\uff0c\u8bbf\u95ee\u901f\u5ea6\u4f9d\u6b21\u9012\u51cf\uff08\u60c5\u51b5A \u6700\u5feb\uff0c\u60c5\u51b5C \u6700\u6162\uff09\u3002\u8fd9\u6837\uff0c\u901a\u8fc7\u65f6\u95f4\u4e0a\u7684\u5dee\u5f02\uff0c\u653b\u51fb\u8005\u5c31\u53ef\u4ee5\u4e86\u89e3\u5f53\u524d\u8bbf\u95ee\u7684\u5185\u5b58\u5730\u5740\u662f\u5426\u5728row buffer \u91cc\u9762\uff0c\u4ee5\u53ca\u662f\u5426\u6709\u88ab\u6362\u51fa\u3002\u6587\u7ae0[25] \u5728\u4fa7\u4fe1\u9053\u653b\u51fb\u8fc7\u7a0b\u4e2d\u7528\u5230\u4e86\u57fa\u4e8eDRAM \u7684\u4fa7\u4fe1\u9053\u4fe1\u606f\u3002\u53e6\u5916\u6587\u7ae0[23] \u4ecb\u7ecd\u4e86\u66f4\u591a\u57fa\u4e8eDRAM \u7684\u653b\u51fb\u7ec6\u8282\uff0c\u4e0d\u8fc7\u8be5\u6587\u7ae0\u4e0d\u662f\u5728SGX \u73af\u5883\u4e0b\u7684\u653b\u51fb\u3002<\/p>\n<p><a href=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132843.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2330 aligncenter\" src=\"https:\/\/www.inforsec.org\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132843.png\" alt=\"\" width=\"444\" height=\"251\" srcset=\"http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132843.png 444w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132843-300x170.png 300w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132843-250x141.png 250w, http:\/\/202.112.238.40\/wp\/wp-content\/uploads\/2017\/09\/QQ\u56fe\u724720170928132843-150x85.png 150w\" sizes=\"auto, (max-width: 444px) 100vw, 444px\" \/><\/a><\/p>\n<p style=\"text-align: center;\">\u56fe7: \u5178\u578b\u7684DRAM \u7684\u683c\u5f0f\u3002DRAM \u6839\u636e\u7269\u7406\u5730\u5740\u9009\u62e9channel\uff0cDIMM,rank, bank, \u4ee5\u53carow \u548ccolumn\u3002<\/p>\n<p>\u57fa\u4e8eDRAM \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u6709\u4e00\u4e9b\u4e0d\u8db3[28]\u3002\u7b2c\u4e00\uff0cenclave \u4f7f\u7528\u7684\u5185\u5b58\u901a\u5e38\u90fd\u5728\u7f13\u5b58\u91cc\u9762\uff0c\u53ea\u6709\u5c11\u90e8\u5206\u9700\u8981\u4eceDRAM \u91cc\u9762\u53bb\u53d6\u3002\u7b2c\u4e8c\uff0cDRAM\u7684\u7cbe\u5ea6\u4e0d\u591f\u3002\u4f8b\u5982\uff0c\u4e00\u4e2a\u9875\u9762\uff084KB) \u901a\u5e38\u5206\u5e03\u57284 \u4e2aDRAM row \u4e0a\u9762\u3002\u8fd9\u6837\uff0c\u57fa\u4e8eDRAM \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u7cbe\u5ea6\u5c31\u662f1KB\u3002\u4ec5\u4ec5\u6bd4\u57fa\u4e8e\u9875\u8868\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u597d\u4e00\u4e9b\uff0c\u8fdc\u8fdc\u4e0d\u53ca\u57fa\u4e8ecache \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u7cbe\u5ea6\u3002\u7b2c\u4e09\uff0cDRAM\u91cc\u9762\u5b58\u5728\u5f88\u96be\u907f\u514d\u7684\u566a\u97f3\u5e72\u6270\uff0c\u56e0\u4e3a\u4e00\u4e2aDRAM row \u88ab\u5f88\u591a\u9875\u9762\u4f7f\u7528\uff0c\u540c\u65f6\u540c\u4e00\u4e2abank \u4e0d\u540crow\u7684\u6570\u636e\u8bfb\u53d6\u4e5f\u4f1a\u5bf9\u65f6\u95f4\u6d4b\u91cf\u9020\u6210\u5e72\u6270\uff0c\u4f7f\u5f97\u8bef\u62a5\u65f6\u5e38\u53d1\u751f\u3002<\/p>\n<p>3.3.5 \u57fa\u4e8eCPU \u5185\u90e8\u7ed3\u6784\u7684\u653b\u51fb<\/p>\n<p>CPU \u5185\u90e8\u6709\u5927\u91cf\u7684\u7ed3\u6784\u662f\u5728enclave \u548cnon-enclave \u4e4b\u95f4\u5171\u7528\u7684\u3002\u8fd9\u5c31\u7ed9\u4fa7\u4fe1\u9053\u653b\u51fb\u63d0\u4f9b\u4e86\u5927\u91cf\u7684\u653b\u51fb\u9762\u7d20\u6750\u3002\u6bd4\u5982\u6587\u7ae0[16] \u91cc\u9762\u63d0\u51fa\u4f7f\u7528BPB\uff08Branch Prediction Buffer\uff09\u6765\u5b9e\u73b0\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u5177\u4f53\u6765\u8bb2\uff0c\u5728enclave \u548cnon-enclave \u5207\u6362\u7684\u65f6\u5019\uff0cBPB ??\u5b58\u7559\u7684\u8df3\u8f6c\u9884\u6d4b\u8bb0\u5f55\u5e76\u6ca1\u6709\u88ab\u6e05\u9664\u3002\u8fd9\u6837\u4f7f\u5f97non-enclave \u53ef\u4ee5\u6784\u9020\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u6d4b\u8bd5\u8fd9\u4e9b\u8df3\u8f6c\u9884\u6d4b\u8bb0\u5f55\u3002\u5982\u679c\u9884\u6d4b\u6210\u529f\uff0c\u5219\u6267\u884c\u65f6\u95f4\u8f83\u77ed\u3002\u53cd\u4e4b\uff0c\u5982\u679c\u9884\u6d4b\u5931\u8d25\uff0c\u5219\u6267\u884c\u65f6\u95f4\u8f83\u957f\u3002\u901a\u8fc7\u65f6\u95f4\u4e0a\u7684\u5dee\u5f02\uff0c\u653b\u51fb\u8005\u5c31\u53ef\u4ee5\u63a8\u6d4benclave \u4e4b\u524d\u8fd0\u884c\u7684\u8df3\u8f6c\u5206\u652f\uff0c\u8fdb\u800c\u83b7\u5f97enclave \u8fd0\u884c\u7684\u63a7\u5236\u6d41\u56fe\u3002\u901a\u8fc7\u63a7\u5236\u6d41\u56fe\uff0c\u653b\u51fb\u8005\u53c8\u53ef\u4ee5\u8fdb\u4e00\u6b65\u63a8\u6d4b\u9690\u79c1\u6570\u636e\uff0c\u6bd4\u5982\u52a0\u5bc6\u5bc6\u94a5\u7b49\u3002\u8fd9\u4e2a\u653b\u51fb\u7684\u5f3a\u5927\u4e4b\u5904\u5728\u4e8e\u4ed6\u51e0\u4e4e\u53ef\u4ee5\u8fd8\u539f\u6574\u4e2a\u63a7\u5236\u6d41\u3002\u8fd9\u6837\u7ec6\u7c92\u5ea6\u7684\u4fe1\u606f\u4f7f\u5f97\u8be5\u653b\u51fb\u53ef\u4ee5\u6cc4\u9732\u5f88\u591a\u4fe1\u606f\u3002\u6587\u7ae0\u4e5f\u8fdb\u884c\u4e86\u5927\u91cf\u5b9e\u9a8c\uff0c\u5145\u5206\u5c55\u793a\u4e86\u8fd9\u4e2a\u653b\u51fb\u7684\u5f3a\u5927\u3002\u5b9e\u9a8c\u8868\u660e\uff0c\u8fd9\u4e2a\u653b\u51fb\u53ef\u4ee5\u6cc4\u9732\u5b57\u7b26\u4e32\u4fe1\u606f\uff0cRSA \u79c1\u94a5\u4ee5\u53ca\u7f51\u7edc\u6570\u636e\u7b49\u7b49\u3002<\/p>\n<p>\u76ee\u524d\u5bf9\u4ee5CPU \u5185\u90e8\u7ed3\u6784\u4e3a\u653b\u51fb\u9762\u7684\u5de5\u4f5c\u624d\u521a\u521a\u5f00\u59cb\uff0c\u4ec5\u4ec5\u6709\u4e00\u4e2a\u5de5\u4f5c\u53d1\u8868\u3002\u76f8\u4fe1\u901a\u8fc7\u8fdb\u4e00\u6b65\u7814\u7a76\uff0c\u8fd8\u4f1a\u6709\u5176\u4ed6\u7684\u653b\u51fb\u9762\u88ab\u9646\u7eed\u53d1\u6398\u3002<\/p>\n<p>\u4ece\u8bbe\u8ba1\u4e0a\u6765\u8bb2\uff0cSGX \u53ef\u4ee5\u907f\u514d\u8fd9\u7c7b\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u5177\u4f53\u6765\u8bb2\uff0c\u5728enclave\u5230non-enclave \u7684\u5207\u6362\u8fc7\u7a0b\u4e2d\uff0cCPU \u6e05\u9664\u8fd9\u4e9b\u5171?\u7684\u5185\u90e8\u7ed3\u6784\u4f53\u3002\u8fd9\u6837\uff0cnon-enclave \u5c31\u4e0d\u4f1a\u5f97\u5230\u4efb\u4f55\u6b8b\u7559\u7684\u8bb0\u5f55\u3002\u4f46\u5728\u5177\u4f53\u5b9e\u73b0\u7684\u65f6\u5019\uff0c\u8fd8\u8981\u6ce8\u610f\u4e00\u4e9b\u7ec6\u8282\uff0c\u6bd4\u5982\u6e05\u9664\u7684\u65f6\u95f4\u4e5f\u5fc5\u987b\u662f\u7a33\u5b9a\u4e0d\u53d8\u7684\u3002\u5982\u679cenclave \u8fd0\u884c\u7684\u5dee\u5f02\u4f1a\u5bfc\u81f4\u6e05\u9664\u64cd\u4f5c\u7684\u65f6\u95f4\u5dee\u5f02\uff0c\u653b\u51fb\u8005\u5f88\u53ef\u80fd\u636e\u6b64\u63a8\u5bfc\u51faenclave \u7684\u67d0\u4e9b\u8fd0\u884c\u72b6\u6001\u3002<\/p>\n<p>3.3.6 \u6df7\u5408\u4fa7\u4fe1\u9053\u653b\u51fb<\/p>\n<p>\u6df7\u5408\u4fa7\u4fe1\u9053\u653b\u51fb\u662f\uff081\uff09\u540c\u65f6\u91c7\u96c6\u591a\u4e2a\u4fa7\u4fe1\u9053\u653b\u51fb\u9762\u7684\u4fe1\u606f\uff0c\u6216\uff082\uff09\u901a\u8fc7\u591a\u4e2a\u653b\u51fb\u9762\u5171\u540c\u4f5c\u7528\u653e\u5927\u5dee\u5f02\u589e\u52a0\u51c6\u786e\u5ea6\u3002\u6bd4\u8f83\u5178\u578b\u7684\u505a\u6cd5\u5305\u62ec\uff1a1. TLB \u548c\u9875\u8868\u6df7\u5408\u653b\u51fb\u3002\u6bd4\u5982TLB miss \u7684\u65f6\u5019\u4f1a\u52a0\u8f7d\u9875\u8868\uff0c\u8fd9\u4e2a\u65f6\u5019CPU \u4f1a\u8bbe\u7f6e\u9875\u8868\u7684Access bit\u3002\u6587\u7ae0[28] \u5c31\u5728hyperthreading \u7684\u60c5\u51b5\u4e0b\uff0c\u89e6\u53d1\u5927\u91cf\u7684TLB miss\uff0c\u518d\u901a\u8fc7\u89c2\u5bdf\u9875\u8868\u7684A bit \u8fdb\u884c\u4fa7\u4fe1\u9053\u653b\u51fb\u3002<\/p>\n<p>2. Cache \u548cDRAM \u6df7\u5408\u653b\u51fb\u3002\u57fa\u4e8eDRAM \u7684\u653b\u51fb\u53ea\u80fd\u7cbe\u786e\u5230row\uff08\u4e00\u4e2arow \u901a\u5e388KB\uff09\u7684\u7c92\u5ea6\u3002\u4e3a\u4e86\u589e\u5f3a\u8fd9\u7c7b\u653b\u51fb\u6548\u679c\uff0c\u6587\u7ae0[28] \u63d0\u51fa\u4e86\u8fd9\u4e2acache-DRAM \u653b\u51fb\u6765\u589e\u52a0\u7a7a\u95f4\u7cbe\u5ea6\uff0c\u628a\u7cbe\u5ea6\u63d0\u9ad8\u5230\u4e86\u4e00\u4e2acache line\uff0864B\uff09\u3002<\/p>\n<p>\u9664\u4e86\u7ed3\u5408\u4e24\u4e2a\u653b\u51fb\u9762\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\uff0c\u8fd8\u53ef\u4ee5\u91c7\u7528\u591a\u4e2a\u653b\u51fb\u9762\u76f8\u7ed3\u5408\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u8fd9\u7c7b\u6df7\u5408\u653b\u51fb\u6211\u8fd8\u6ca1\u6709\u5728SGX \u7684\u73af\u5883\u4e0b\u9762\u770b\u5230\u76f8\u5173\u5de5\u4f5c\u3002\u4e0d\u8fc7\u4e4b\u524dCCS\u201816 \u7684\u6587\u7ae0[9]\uff0c\u4f7f\u7528\u4e86\u4e09\u4e2a\u653b\u51fb\u9762\uff08i.e., TLB\u3001\u9875\u8868\u548ccache\uff09\u7684\u6df7\u5408\u3002\u6211\u76f8\u4fe1\u7c7b\u4f3c\u7684\u653b\u51fb\u4e5f\u53ef\u4ee5\u5728SGX \u7684\u73af\u5883\u4e0b\u4f7f\u7528\u3002<\/p>\n<p>3.4 \u672a\u6765\u53ef\u80fd\u7684\u4fa7\u4fe1\u9053\u653b\u51fb<\/p>\n<p>\u672a\u6765\u65b0\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u53ef\u80fd\u6765\u81ea\u4e24\u4e2a\u65b9\u9762\u3002\u7b2c\u4e00\u5c31\u662f\u53d1\u6398\u65b0\u7684\u6df7\u5408\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u524d\u9762\u5217\u51fa\u7684\u7ecf\u5178\u7684\u6df7\u5408\u4fa7\u4fe1\u9053\u653b\u51fb\uff0c\u4ed6\u4eec\u5f80\u5f80\u4f7f\u7528\u4e24\u79cd\u653b\u51fb\u9762\u4fe1\u606f\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u8003\u8651\u591a\u4e2a\u653b\u51fb\u9762\u7ed3\u5408\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u4ee5\u5f80\u7684\u6df7\u5408\u4fa7\u4fe1\u9053\u653b\u51fb\u5f80\u5f80\u4e13\u6ce8\u4e8e\u5185\u5b58\u7ba1\u7406\u548c\u5730\u5740\u8f6c\u6362\u7b49\u65b9\u9762\uff0c\u65b0\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u53ef\u4ee5\u7ed3\u5408\u5176\u4ed6\u65b9\u9762\u7684\u4fe1\u606f\uff0c\u8fdb\u884c\u4e00\u4e9b\u65b0\u7684\u5c1d\u8bd5\u3002<\/p>\n<p>Enclave \u6240\u6709\u548cnon-enclave \u5171\u4eab\u7684\u8d44\u6e90\u90fd\u53ef\u80fd\u6210\u4e3a\u6f5c\u5728\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u9762\u3002\u56e0\u6b64\uff0c\u53d1\u6398\u65b0\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u7b2c\u4e8c\u4e2a\u9014\u5f84\u5c31\u662f\u53d1\u73b0\u65b0\u7684\u5171\u4eab\u8d44\u6e90\uff0c\u6bd4\u5982\u672a\u88ab\u53d1\u6398\u7684CPU \u5185\u90e8\u5171\u4eab\u7ed3\u6784\u3002\u8fd9\u4e9b\u65b0\u7684\u7684\u5171\u4eab\u8d44\u6e90\u53ef\u80fd\u6765\u81ea\u4e00\u4e9b\u65b0\u7684\u786c\u4ef6\u7279\u6027\uff0c\u6bd4\u5982Intel PT, Intel TSX, Intel MPX, Intel CAT \u7b49\u7b49\u3002<\/p>\n<p><strong>4 \u53ef\u80fd\u7684\u9632\u5fa1\u65b9\u6cd5<\/strong><\/p>\n<p>\u76ee\u524d\u5df2\u7ecf\u6709\u5f88\u591a\u6587\u7ae0\u7ed9\u51fa\u4e86\u9632\u5fa1SGX \u4fa7\u4fe1\u9053\u7684\u65b9\u6848\uff0c\u6709\u4e9b\u53ea\u662f\u5927\u4f53\u7684\u601d\u8def\uff0c\u6709\u4e9b\u5219\u5df2\u7ecf\u6709\u6210\u578b\u7684\u8bbe\u8ba1\u548c\u5b9e\u73b0\u3002\u6211\u4eec\u5728\u8fd9\u91cc\u4e3b\u8981\u4ecb\u7ecd\u9632\u5fa1\u7684\u601d\u8def\u548c\u65b9\u6cd5\uff0c\u4e0d\u6d89\u53ca\u8bbe\u8ba1\u548c\u5b9e\u73b0\u7684\u7ec6\u8282\u3002\u9996\u5148\uff0c\u6211\u4eec\u628a\u8fd9\u4e9b\u65b9\u6cd5\u6d89\u53ca\u7684\u5c42\u6b21\uff0c\u5206\u4e3a\u6e90\u7801\u7ea7\u522b\uff0c\u7cfb\u7edf\u7ea7\u522b\u548c\u786c\u4ef6\u7ea7\u522b\u3002<\/p>\n<p>4.1 \u6e90\u7801\u5c42\u6b21\u7684\u89e3\u51b3\u65b9\u6848<\/p>\n<p>\u8fd9\u7c7b\u65b9\u6cd5\u7684\u4e3b\u8981\u601d\u60f3\u5c31\u662f\u901a\u8fc7\u4fee\u6539\u6e90\u7801\uff0c\u7f16\u5199\u51fa\u80fd\u591f\u9632\u5fa1\u4fa7\u4fe1\u9053\u7684\u4ee3\u7801\u5b9e\u73b0\u3002\u8fd9\u91cc\u7684\u6838\u5fc3\u601d\u60f3\u5c31\u662f\u9690\u85cf\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u3002<\/p>\n<p>\u8fd9\u7c7b\u65b9\u6cd5\u7684\u63a2\u7d22\u5df2\u7ecf\u5728\u4e00\u4e9b\u5bc6\u7801\u7b97\u6cd5\u4e2d\u6709\u6240\u6d89\u53ca\u3002\u6bd4\u5982\u5229\u7528exponentblinding [15] \u6765\u589e\u5f3aRSA \u7b97\u6cd5\uff0c\u5229\u7528bit slicing \u589e\u5f3aDES \u548cAES\u65b9\u6cd5[3, 20]\u3002\u5728\u673a\u5668\u5b66\u4e60\u9886\u57df\uff0c\u4e5f\u6709\u4eba\u505a\u4e86\u5c1d\u8bd5\u3002Oblivious ML\u6587\u7ae0[22]\u4fee\u6539\u4e86\u673a\u5668\u5b66\u4e60\u7684\u7b97\u6cd5\uff0c\u4f7f\u7528oblivious assignments and comparisons\u6765\u9690\u85cf\u63a7\u5236\u6d41\uff0c\u4f7f\u7528oblivious array access\uff08\u5373k-anonymity\uff09\u6765\u9690\u85cf\u6570\u636e\u6d41\u3002\u6587\u7ae0Raccoon [24] \u4e5f\u91c7\u7528\u4e86\u7c7b\u4f3c\u7684\u65b9\u6cd5\uff0c\u4f7f\u7528oblivious store \u9690\u85cfif-else \u63a7\u5236\u6d41\uff0c\u4f7f\u7528ORAM \u6765\u9690\u85cf\u6570\u636e\u6d41\uff0c\u4ece\u800c\u62b5\u5fa1\u4fa7\u4fe1\u9053\u653b\u51fb\u3002\u4f46\u662f\u76ee\u524d\u8fd9\u4e9b\u6280\u672f\u8fd8\u5f88\u96be\u5728\u4e00\u4e2a\u901a\u7528\u7684\u8ba1\u7b97\u73af\u5883\u4e0b\u5b9e\u73b0\uff0c\u6bd4\u5982loop trip count\uff0clong jump \u4ee5\u53cabreak \u7b49\u95ee\u9898\u3002<\/p>\n<p>4.2 \u7cfb\u7edf\u5c42\u6b21\u7684\u89e3\u51b3\u65b9\u6848<\/p>\n<p>\u7cfb\u7edf\u5c42\u6b21\u7684\u89e3\u51b3\u65b9\u6848\u4e3b\u8981\u662f\u5229\u7528\u4e00\u4e9b\u7cfb\u7edf\u7279\u6027\u6765\u9632\u5fa1\u6216\u68c0\u6d4bSGX \u4fa7\u4fe1\u9053\u3002\u8fd9\u91cc\u6709\u51e0\u4e2a\u601d\u8def\u53ef\u4ee5\u53c2\u8003\uff1a<\/p>\n<p>1. \u968f\u673a\u5316\u6280\u672f\uff08Randomization\uff09\u3002\u968f\u673a\u5316\u6280\u672f\u53ef\u4ee5\u5e94\u7528\u5728\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u4e0a\u9762\uff0c\u8fd9\u5c06\u5927\u5927\u589e\u52a0\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u4ee3\u4ef7\u3002\u9632\u5fa1\u6548\u679c\u4e0e\u968f\u673a\u5316\u7c92\u5ea6\uff0c\u4ee5\u53ca\u968f\u673a\u5316\u9891\u7387\u6709\u5173\u3002<\/p>\n<p>2. \u68c0\u6d4b\u53ef\u7591\u5f02\u5e38\u548c\u4e2d\u65ad\u3002T-SGX [26] \u5229\u7528TSX \u6280\u672f\u6765\u68c0\u6d4b\u4e2d\u65ad\u548c\u7f3a\u9875\u5f02\u5e38\uff0c\u4ece\u800c\u62b5\u5fa1\u6700\u539f\u59cb\u7684controlled-channel \u653b\u51fb[29]\u3002\u4f46\u662f\u73b0\u5728\u5df2\u7ecf\u51fa\u73b0\u4e0d\u9700\u8981\u89e6\u53d1AEX \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002<\/p>\n<p>3. \u68c0\u6d4b\u65f6\u95f4\u5f02\u5e38\u3002\u76ee\u524dD\u00e9j\u00e1 Vu \u7cfb\u7edf[4] \u4e5f\u4f7f\u7528TSX \u6280\u672f\u6765\u4fdd\u62a4enclave\u81ea\u5df1\u7684\u65f6\u949f\u3002\u5982\u679c\u653b\u51fb\u8005\u4e2d\u65ad\u6216\u51cf\u7f13enclave \u7684\u8fd0\u884c\uff0cenclave\u5c31\u53ef\u4ee5\u901a\u8fc7\u81ea\u5df1\u7684\u65f6\u949f\u68c0\u6d4b\u51fa\u65f6\u95f4\u4e0a\u7684\u5f02\u5e38\u3002\u76ee\u524d\uff0c\u7edd\u5927\u591a\u6570\u4fa7\u4fe1\u9053\u653b\u51fb\u90fd\u4f1a\u5f15\u8d77enclave \u7684\u663e\u8457\u6027\u80fd\u4e0b\u964d\u3002\u56e0\u6b64\uff0c\u68c0\u6d4b\u65f6\u95f4\u5f02\u5e38\u8fd8\u662f\u4e00\u4e2a\u6bd4\u8f83\u6709\u6548\u7684\u65b9\u6848\u3002<\/p>\n<p>4. Cache \u9694\u79bb\u3002\u76ee\u524dIntel \u63a8\u51fa\u4e86CAT\uff08Cache Allocation Technology\uff09\u6280\u672f\uff0c\u5141\u8bb8\u5bf9cache \u8fdb\u884c\u7c97\u7c92\u5ea6\u7684\u9694\u79bb\u3002\u8fd9\u4e2a\u6280\u672f\u5df2\u7ecf\u88ab\u4f7f\u7528\u5728\u4e91\u8ba1\u7b97\u5e73\u53f0\u4e0a\u9762[18] \u9632\u5fa1\u4fa7\u4fe1\u9053\u653b\u51fb\uff0c\u4f46\u662f\u8fd8\u6ca1\u6709\u770b\u5230\u5728SGX \u73af\u5883\u91cc\u9762\u7684\u5e94\u7528\u3002\u628aCAT \u5e94\u7528\u5230SGX \u7684\u4e00\u4e2a\u5f88\u5927\u7684\u969c\u788d\u662fenclave\u5728\u7528\u6237\u7a7a\u95f4\u65e0\u6cd5\u6709\u6548\u5730\u68c0\u6d4b\u6216\u9a8c\u8bc1CAT \u7684\u914d\u7f6e\u3002<\/p>\n<p>4.3 \u786c\u4ef6\u5c42\u6b21\u7684\u89e3\u51b3\u65b9\u6848<\/p>\n<p>\u786c\u4ef6\u5c42\u6b21\u7684\u89e3\u51b3\u65b9\u6848\u8fd8\u5904\u4e8e\u63a2\u7d22\u9636\u6bb5\u3002\u52a0?\u4fa7\u4fe1\u9053\u9632\u5fa1\uff0c\u5c06\u4f1a\u663e\u8457\u589e\u52a0\u786c\u4ef6\u590d\u6742\u5ea6\uff0c\u5f71\u54cd\u529f\u8017\u548c\u6027\u80fd\u3002\u8fd9\u4e5f\u53ef\u80fd\u662fIntel \u5728\u6700\u521d\u63a8\u51faSGX \u7684\u65f6\u5019\u6ca1\u6709\u52a0\u5165\u4fa7\u4fe1\u9053\u9632\u5fa1\u7684\u4e00\u4e2a\u539f\u56e0\u3002\u786c\u4ef6\u89e3\u51b3\u65b9\u6848\u53ef\u80fd\u6709\u4ee5\u4e0b\u4e24\u79cd\uff1a1. \u786c\u4ef6\u5206\u5272\uff08partition\uff09\u3002\u7c7b\u4f3c\u4e8eARM\u91cc\u9762\u7684trustzone\uff0c\u6709\u81ea\u5df1\u7684cache\uff0cmemory \u7b49\u4e00\u7cfb\u5217\u786c\u4ef6\u8d44\u6e90\uff0c\u7269\u7406\u4e0a\u4e0enon-enclave \u5206\u79bb\u3002<\/p>\n<p>2. \u786c\u4ef6\u9694\u79bb\uff08isolation\uff09\u3002\u7c7b\u4f3c\u4e8eIntel CAT \u6280\u672f\uff0c\u53ef\u4ee5\u5355\u72ec\u4e3a\u6bcf\u4e00\u4e2aenclave \u63d0\u4f9b\u4e00\u4e2a\u52a8\u6001\u9694\u79bb\u51fa\u7684cache\u3002\u5f53enclave \u9500\u6bc1\u7684\u65f6\u5019\uff0c\u9694\u79bb\u51fa\u7684cache \u53ef\u4ee5\u88ab\u6536\u56de\u3002\u8fd9??\u4e2a\u5f88\u91cd\u8981\u7684\u8981\u6c42\u5c31\u662fenclave \u5fc5\u987b\u53ef\u4ee5\u9a8c\u8bc1\u8fd9\u4e2a\u529f\u80fd\u7684\u6709\u6548\u6027\u3002<\/p>\n<p>Sanctum [7] \u5df2\u7ecf\u505a\u4e86\u4e00\u4e9b\u5c1d\u8bd5\uff0c\u4f46\u662f\u8fd8\u4e0d\u591f\u5f7b\u5e95\uff0c\u8fd8\u4f1a\u906d\u53d7\u653b\u51fb[1]\u3002<\/p>\n<p><strong>5 \u603b\u7ed3<\/strong><\/p>\n<p>\u672c\u6587\u603b\u7ed3\u4e86SGX \u6240\u9762\u4e34\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\uff0c\u5e76\u5c55\u671b\u4e86\u6f5c\u5728\u7684\u653b\u51fb\u548c\u9632\u5fa1\u65b9\u6cd5\u3002SGX \u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u5341\u5206\u96be\u4ee5\u9632\u5fa1\u3002\u7a76\u5176\u539f\u56e0\u662fSGX \u7684\u5b89\u5168\u5047\u8bbe\u548c\u5e94\u7528\u6a21\u578b\u5141\u8bb8enclave \u548c\u4e0d\u53ef\u4fe1\u7684non-enclave \u5171\u4eab\u5927\u91cf\u7684\u8d44\u6e90\u3002\u8fd9\u4e9b\u5c31\u7ed9\u653b\u51fb\u8005\u4ee5\u5f88\u5927\u7684\u653b\u51fb\u9762\u53bb\u533a\u5206\u65f6\u95f4\u4e0a\u7684\u5dee\u5f02\u548c\u8d44\u6e90\u4f7f\u7528\u7684\u4e0d\u540c\uff0c\u4ece\u800c\u6cc4\u9732enclave \u7684\u63a7\u5236\u6d41\u548c\u6570\u636e\u6d41\u3002\u800c\u4e14\u653b\u51fb\u8005\u62e5\u6709\u7ba1\u7406\u7cfb\u7edf\u8d44\u6e90\u7684\u80fd\u529b\uff0c\u4ece\u800c\u80fd\u591f\u6700\u5927\u7a0b\u5ea6\u4e0a\u51cf\u5c0f\u566a\u97f3\u5e72\u6270\uff0c\u589e\u52a0\u4fa7\u4fe1\u9053\u653b\u51fb\u7684\u6210\u529f\u7387\u3002\u603b\u4e4b\uff0cSGX \u4fa7\u4fe1\u9053\u653b\u51fb\u662f\u4e00\u4e2a\u5b9e\u7528\u7684\u653b\u51fb\uff0c\u6211\u4eec\u5728\u5b9e\u9645\u90e8\u7f72\u5e94\u7528SGX \u7684\u65f6\u5019\uff0c\u5fc5\u987b\u8003\u8651\u6f5c\u5728\u7684\u4fa7\u4fe1\u9053\u653b\u51fb\u3002<\/p>\n<p><strong>\u4f5c\u8005\u7b80\u4ecb<\/strong><\/p>\n<p>\u7a0b\u8d8a\u5f3a\u662f\u767e\u5ea6\u7f8e\u56fd\u7814\u7a76\u9662\u5b89\u5168\u5b9e\u9a8c\u5ba4\u7684\u8d44\u6df1\u5b89\u5168\u79d1\u5b66\u5bb6\u3002\u4ed6\u672c\u79d1\u5c31\u8bfb\u4e8e\u6d59\u6c5f\u5927\u5b66\uff0c\u535a\u58eb\u5728\u65b0\u52a0\u5761\u7ba1\u7406\u5927\u5b66\u653b\u8bfb\u4fe1\u606f\u5b89\u5168\u548c\u53ef\u4fe1\u65b9\u5411\u3002\u6bd5\u4e1a\u540e\uff0c\u5148\u540e\u5728\u5361\u5185\u57fa\u6885\u9686\u5927\u5b66CyLab \u5b9e\u9a8c\u5ba4\u548c\u4e09\u661f\u7f8e\u56fd\u7814\u7a76\u9662\u5c31\u804c\uff0c\u4ece\u4e8b\u5b89\u5168\u65b9\u9762\u7684\u7814\u7a76\u5de5\u4f5c\u3002\u4ed6\u7684\u7814\u7a76\u65b9\u5411\u5305\u62ec\u4e91\u5b89\u5168\uff0c\u624b\u673a\u5b89\u5168\uff0c\u53ef\u4fe1\u8ba1\u7b97\uff0c\u4ee5\u53ca\u8f6f\u4ef6\u5b89\u5168\u3002<\/p>\n<p><strong>\u53c2\u8003\u6587\u732e<\/strong><\/p>\n<p>[1] Software grand exposure: Sgx cache attacks are practical.In 11th USENIX Workshop on Offensive Technologies (WOOT17), Vancouver, BC, 2017. USENIX Association.<\/p>\n<p>[2] LZMA Benchmark. Intel skylake benchmark.<\/p>\n<p>[3] Eli Biham. A fast new des implementation in software. In FSE,volume 1267, pages 260\u2013272. Springer, 1997.<\/p>\n<p>[4] Sanchuan Chen, Xiaokuan Zhang, Michael K Reiter, and YinqianZhang. Detecting privileged side-channel attacks inshielded execution with d\u00e9j\u00e1 vu. In Proceedings of the 2017ACM on Asia Conference on Computer and CommunicationsSecurity, pages 7\u201318. ACM, 2017.<\/p>\n<p>[5] Xiaoxin Chen, Tal Garfinkel, E. Christopher Lewis, PratapSubrahmanyam, Carl A. Waldspurger, Dan Boneh, JeffreyDwoskin, and Dan R.K. Ports. Overshadow: A virtualizationbasedapproach to retrofitting protection in commodity operatingsystems. In Proceedings of the 13th InternationalConference on Architectural Support for Programming Languagesand Operating Systems, ASPLOS XIII, pages 2\u201313,New York, NY, USA, 2008. ACM.<\/p>\n<p>[6] Yueqiang Cheng, Xuhua Ding, and Robert H. Deng. Efficientvirtualization-based application protection against untrustedoperating system. In Proceedings of the 10th ACM Symposiumon Information, Computer and Communications Security,ASIA CCS \u201915, pages 345\u2013356, New York, NY, USA,2015. ACM.<\/p>\n<p>[7] Victor Costan, Ilia Lebedev, and Srinivas Devadas. Sanctum:Minimal hardware extensions for strong software isolation.In 25th USENIX Security Symposium (USENIX Security 16),pages 857\u2013874, Austin, TX, 2016. USENIX Association.<\/p>\n<p>[8] Johannes G\u00a8otzfried, Moritz Eckert, Sebastian Schinzel, andTilo M\u00fcller. Cache attacks on intel sgx. In Proceedings of the10th European Workshop on Systems Security, EuroSec\u201917,pages 2:1\u20132:6, New York, NY, USA, 2017. ACM.<\/p>\n<p>[9] Daniel Gruss, Cl\u00e9mentine Maurice, Anders Fogh, Moritz Lipp,and Stefan Mangard. Prefetch side-channel attacks: Bypassingsmap and kernel aslr. In Proceedings of the 2016 ACMSIGSAC Conference on Computer and Communications Security,CCS \u201916, pages 368\u2013379, New York, NY, USA, 2016.ACM.<\/p>\n<p>[10] Daniel Gruss, Cl\u00e9mentine Maurice, Klaus Wagner, and StefanMangard. Flush+flush: A fast and stealthy cache attack. In13th Conference on Detection of Intrusions and Malware &amp;Vulnerability Assessment (DIMVA), 2016.<\/p>\n<p>[11] Daniel Gruss, Raphael Spreitzer, and Stefan Mangard. Cachetemplate attacks: Automating attacks on inclusive last-levelcaches. In Proceedings of the 24th USENIX Conference on SecuritySymposium, SEC\u201915, pages 897\u2013912, Berkeley, CA,USA, 2015. USENIX Association.<\/p>\n<p>[12] Owen S. Hofmann, Sangman Kim, Alan M. Dunn, Michael Z.Lee, and Emmett Witchel. Inktag: Secure applications on anuntrusted operating system. In Proceedings of the EighteenthInternational Conference on Architectural Support for ProgrammingLanguages and Operating Systems, ASPLOS \u201913,pages 265\u2013278, New York, NY, USA, 2013. ACM.<\/p>\n<p>[13] Intel. Intel 64 and ia-32 architectures optimization referencemanual. June 2016.<\/p>\n<p>[14] Intel. Intel 64 and IA-32 architectures software developer\u2019smanual combined volumes: 1, 2a, 2b, 2c, 2d, 3a, 3b, 3c, 3dand 4. March 2017.<\/p>\n<p>[15] Paul C. Kocher. Timing attacks on implementations of diffiehellman,rsa, dss, and other systems. In Proceedings ofthe 16th Annual International Cryptology Conference on Advancesin Cryptology, CRYPTO \u201996, pages 104\u2013113, London,UK, UK, 1996. Springer-Verlag.<\/p>\n<p>[16] Sangho Lee, Ming-Wei Shih, Prasun Gera, Taesoo Kim, HyesoonKim, and Marcus Peinado. Inferring fine-grained controlflow inside SGX enclaves with branch shadowing. CoRR,abs\/1611.06952, 2016.<\/p>\n<p>[17] Moritz Lipp, Daniel Gruss, Raphael Spreitzer, Cl\u00e9mentine Maurice,and Stefan Mangard. Armageddon: Cache attacks onmobile devices. In 25th USENIX Security Symposium (USENIXSecurity 16), pages 549\u2013564, Austin, TX, 2016. USENIX Association.<\/p>\n<p>[18] Fangfei Liu, Qian Ge, Yuval Yarom, Frank McKeen, Carlos V.Rozas, Gernot Heiser, and Ruby B. Lee. Catalyst: Defeatinglast-level cache side channel attacks in cloud computing.2016 IEEE International Symposium on High PerformanceComputer Architecture (HPCA), pages 406\u2013418, 2016.<\/p>\n<p>[19] Fangfei Liu, Yuval Yarom, Qian Ge, Gernot Heiser, and Ruby B.Lee. Last-level cache side-channel attacks are practical. InProceedings of the 2015 IEEE Symposium on Security and Privacy,SP \u201915, pages 605\u2013622, Washington, DC, USA, 2015.IEEE Computer Society.<\/p>\n<p>[20] Mitsuru Matsui. How far can we go on the x64 processors?In FSE, volume 4047, pages 341\u2013358. Springer, 2006.<\/p>\n<p>[21] Ahmad Moghimi, Gorka Irazoqui, and Thomas Eisenbarth.Cachezoom: How SGX amplifies the power of cache attacks.CoRR, abs\/1703.06986, 2017.<\/p>\n<p>[22] Olga Ohrimenko, Felix Schuster, Cedric Fournet, AasthaMehta, Sebastian Nowozin, Kapil Vaswani, and Manuel Costa.Oblivious multi-party machine learning on trusted processors.In 25th USENIX Security Symposium (USENIX Security 16),pages 619\u2013636, Austin, TX, 2016. USENIX Association.<\/p>\n<p>[23] Peter Pessl, Daniel Gruss, Cl\u00e9mentine Maurice, MichaelSchwarz, and Stefan Mangard. Drama: Exploiting dram ad-dressing for cross-cpu attacks. In 25th USENIX Security Symposium,2016.<\/p>\n<p>[24] Ashay Rane, Calvin Lin, and Mohit Tiwari. Raccoon: Closingdigital side-channels through obfuscated execution. In 24thUSENIX Security Symposium (USENIX Security 15), pages431\u2013446, Washington, D.C., 2015. USENIX Association.<\/p>\n<p>[25] Michael Schwarz, Samuel Weiser, Daniel Gruss, Cl\u00e9mentineMaurice, and Stefan Mangard. Malware guard extension: UsingSGX to conceal cache attacks. CoRR, abs\/1702.08719,2017.<\/p>\n<p>[26] Ming-Wei Shih, Sangho Lee, Taesoo Kim, and Marcus Peinado.T-sgx: Eradicating controlled-channel attacks against enclaveprograms. In Proceedings of the 2017 Annual Network andDistributed System Security Symposium (NDSS), San Diego,CA, 2017.<\/p>\n<p>[27] Shweta Shinde, Zheng Leong Chua, Viswesh Narayanan, andPrateek Saxena. Preventing page faults from telling your secrets.In Proceedings of the 11th ACM on Asia Conferenceon Computer and Communications Security, ASIA CCS \u201916,pages 317\u2013328, New York, NY, USA, 2016. ACM.<\/p>\n<p>[28] Wenhao Wang, Guoxing Chen, Xiaorui Pan, Yinqian Zhang,XiaoFeng Wang, Vincent Bindschaedler, Haixu Tang, andCarl A. Gunter. Leaky cauldron on the dark land: Understandingmemory side-channel hazards in SGX. CoRR,abs\/1705.07289, 2017.<\/p>\n<p>[29] Yuanzhong Xu, Weidong Cui, and Marcus Peinado. Controlledchannelattacks: Deterministic side channels for untrusted operatingsystems. In Proceedings of the 2015 IEEE Symposiumon Security and Privacy, SP \u201915, pages 640\u2013656, Washington,DC, USA, 2015. IEEE Computer Society.<\/p>\n<p>[30] Yuval Yarom and Katrina Falkner. Flush+reload: A high resolution,low noise, l3 cache side-channel attack. In Proceedingsof the 23rd USENIX Conference on Security Symposium,SEC\u201914, pages 719\u2013732, Berkeley, CA, USA, 2014. USENIXAssociation.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; \u4f5c\u8005\uff1a\u7a0b\u8d8a\u5f3a\u00a0 \u00a0 \u767e\u5ea6\u7f8e\u56fd\u7814\u7a76\u9662\u5b89\u5168\u5b9e\u9a8c\u5ba4\u7684\u8d44\u6df1\u5b89\u5168\u79d1\u5b66\u5bb6 Intel SGX \u6280\u672f&#8230; <a class=\"continue-reading-link\" href=\"http:\/\/202.112.238.40\/wp\/?p=2298\"> Continue reading <span class=\"meta-nav\">&rarr; <\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-2298","post","type-post","status-publish","format-standard","hentry","category-research"],"_links":{"self":[{"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2298"}],"version-history":[{"count":6,"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2298\/revisions"}],"predecessor-version":[{"id":2333,"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=\/wp\/v2\/posts\/2298\/revisions\/2333"}],"wp:attachment":[{"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2298"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/202.112.238.40\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}