
Go विश्वसनीय निष्पादन वातावरण (TEE)
GoTEE फ्रेमवर्क विशेषाधिकार प्राप्त और गैर-विशेषाधिकार प्राप्त मोड में TamaGo-आधारित यूनिकर्नेल के समवर्ती इंस्टेंशिएशन को लागू करता है, जो मॉनिटर मोड और कस्टम सिस्टम कॉल के माध्यम से एक दूसरे के साथ इंटरैक्ट करते हैं।
इन क्षमताओं के साथ GoTEE एक TamaGo-आधारित ट्रस्टेड एक्ज़ीक्यूशन एनवायरनमेंट (TEE) लागू करता है, जो ARM TrustZone Secure World या RISC-V Supervisor Execution Environments के भीतर बेयर मेटल एक्ज़ीक्यूशन में Go मेमोरी सुरक्षा, सुविधा और क्षमताएँ लाता है।
GoTEE शुद्ध Go, Rust या C-आधारित फ्रीस्टैंडिंग ट्रस्टेड एप्लेट्स का पर्यवेक्षण कर सकता है, जो GoTEE API लागू करते हैं, साथ ही ARM TrustZone Normal World या RISC-V S-mode में चलने में सक्षम कोई भी ऑपरेटिंग सिस्टम जैसे Linux।
पृथक एक्ज़ीक्यूशन संदर्भ ARM यूज़र मोड, TrustZone Normal World या RISC-V Supervisor Mode के लिए
ट्रस्टेड OS कार्यान्वयन के लिए API (Syscall, JSON-RPC और एक्सेप्शन हैंडलर)
मुख्य दस्तावेज़ीकरण, जिसमें एक ट्यूटोरियल शामिल है, प्रोजेक्ट विकि पर पाया जा सकता है।
पैकेज API दस्तावेज़ीकरण pkg.go.dev पर पाया जा सकता है।
निम्न तालिका वर्तमान में समर्थित SoC और बोर्डों का सारांश प्रस्तुत करती है।
| SoC | बोर्ड | SoC पैकेज | बोर्ड पैकेज |
|---|---|---|---|
| NXP i.MX6ULZ | USB armory Mk II | imx6ul | usbarmory/mk2 |
| NXP i.MX6ULL | MCIMX6ULL-EVK | imx6ul | mx6ullevk |
| SiFive FU540 | QEMU sifive_u | fu540 | qemu/sifive_u |
TEE नामावली में, विशेषाधिकार प्राप्त यूनिकर्नेल को सामान्यतः ट्रस्टेड OS के रूप में संदर्भित किया जाता है, जबकि गैर-विशेषाधिकार प्राप्त यूनिकर्नेल एक ट्रस्टेड एप्लेट का प्रतिनिधित्व करता है।
GoTEE उदाहरण ट्रस्टेड OS, ट्रस्टेड एप्लेट और मुख्य OS के रूप में कार्य करने वाले Go यूनिकर्नेल के समवर्ती संचालन को प्रदर्शित करता है।
[!WARNING] मुख्य OS कोई भी "रिच" OS (जैसे Linux) हो सकता है, TamaGo केवल एक स्व-निहित उदाहरण के लिए उपयोग किया जाता है। यही बात ट्रस्टेड एप्लेट पर भी लागू होती है, जो यूज़र मोड में चलने और GoTEE API लागू करने में सक्षम कोई भी बेयर मेटल एप्लिकेशन हो सकता है, जैसे फ्रीस्टैंडिंग C या Rust प्रोग्राम।
बिल्ड करते समय
trusted_applet_goकोtrusted_applet_rustसे बदलकर एक Rust उदाहरण का उपयोग किया जा सकता है।
उदाहरण ट्रस्टेड OS/एप्लेट संयोजन विभिन्न विशेषाधिकार स्तरों पर तीन TamaGo यूनिकर्नेल के समवर्ती निष्पादन का बुनियादी परीक्षण करता है:
मुख्य OS मॉनिटर कॉल के साथ वापस यील्ड करता है।
ट्रस्टेड एप्लेट ट्रस्टेड OS मेमोरी पढ़ने का प्रयास करने से पहले 5 सेकंड के लिए सोता है, जो सुपरवाइज़र द्वारा संभाले गए एक एक्सेप्शन को ट्रिगर करता है जो ट्रस्टेड एप्लेट को समाप्त कर देता है।
ट्रस्टेड OS और ट्रस्टेड एप्लेट के बीच संचार के लिए GoTEE syscall इंटरफ़ेस लागू किया गया है।
USB armory Mk II पर लॉन्च होने पर, उदाहरण एप्लिकेशन Ethernet over USB (ECM प्रोटोकॉल, Linux और macOS होस्ट पर समर्थित) के माध्यम से SSH द्वारा पहुँचा जा सकता है:
$ ssh [email protected]
tamago/arm • TEE security monitor (Secure World system/monitor)
allgptr # memory forensics of applet goroutines
csl # show config security levels (CSL)
csl <periph> <slave> <hex csl> # set config security level (CSL)
dbg # show ARM debug permissions
exit, quit # close session
gotee # TrustZone example w/ TamaGo unikernels
help # this help
linux <uSD|eMMC> # boot NonSecure USB armory Debian base image
lockstep <fault %> # tandem applet example w/ fault injection
peek <hex offset> <size> # memory display (use with caution)
poke <hex offset> <hex value> # memory write (use with caution)
reboot # reset device
sa # show security access (SA)
sa <id> <secure|nonsecure> # set security access (SA)
stack # stack trace of current goroutine
stackall # stack trace of all goroutines
>
उदाहरण को gotee कमांड के साथ लॉन्च किया जा सकता है, जो वास्तविक हार्डवेयर पेरिफेरल्स का उपयोग करके TrustZone प्रतिबंध प्रभावी होने से पहले और बाद के व्यवहार को प्रदर्शित करने के लिए मुख्य OS को दो बार स्पॉन करता है।
इसके अतिरिक्त, linux कमांड का उपयोग USB armory Debian बेस इमेज को नॉन-सिक्योर मुख्य OS के रूप में स्पॉन करने के लिए किया जा सकता है।
[!NOTE] नॉन-सिक्योर संचालन के लिए केवल USB armory Debian बेस इमेज रिलीज़ >= 20211129 समर्थित हैं।

उदाहरण को QEMU इम्यूलेशन के अंतर्गत भी निष्पादित किया जा सकता है।
[!NOTE] इम्यूलेटेड रन QEMU द्वारा पूर्ण TrustZone/PMP समर्थन की कमी के कारण आंशिक परीक्षण करते हैं।