Intel SGX Protection Mechanism
System software relies on the CPU’s address translation mechanism for implementing isolation among less privileged pieces of software.
From a systems perspective, address translation is a layer of indirection between
- virtual address, which are used by a program’s memory load and store instructions
- physical address, which reference the physical address space.
The mapping between virtual and physical addresses is defined by page tables, which are managed by the system software. The translation process is carried out by dedicated hardware in the CPU, which is referred to as the address translation unit or memory management unit (MMU).
<: width=“700px” .center-image>Figure 10. Address translation concept
Address Translation Cache #
Section 2.11.5 Caches and Address Translation
Address translation requires up to 20 memory accesses, so it is impractical to perform a full address translation for every cache access. Instead, address translation results are cached in the translation look-aside buffer (TLB).
When a virtual address is not contained in a core’s TLB, the Page Miss Handler (PMH) performs a page walk to translate the virtual address, and the result is stored in the TLB.
In the Intel architecture, the PMH is implemented in hardware, so the TLB is nevery directly exposed to software.
Section 2.14.3. Microcode and Address Translation
In order to minimize the latency of a page walk, the PMH is implemented as a Finite-State Machine (FSM).
Intel SGX #
Overview #
Intel Software Guard Extensions (SGX) is a hardware-based data protection technology, developed by Intel Corporation.
The cental concept of SGX is the enclave, a protected environment that contains the code and data pertaining to a security-sensitive computation.
The Enclave Page Cache (EPC) #
Section 5.1.1 The Enclave Page Cache (EPC)
The contents of enclaves and the associated data structures are stored in the Enclave Page Cache (EPC), which is a subset of DRAM that cannot be directly accessed by other software, including system software and SMM code. The CPU’s integrated memory controllers also reject DMA transfers targeting the EPC, thus protecting it from access by other peripherals.
It is a subset of processor reserved memory (PRM).
<: width=600px .center-image>Figure 60. EPC and PRM layout
The Enclave Linear Address Range (ELRANGE) #
Section 5.2.1 The Enclave Linear Address Range (ELRANGE)
Each enclave designates an area in its virtual address space, called the enclave linear address range (ELRANGE), which is used to map the code and the sensitive data stored in the enclave’s EPC pages. The virtual address space outside ELRANGE is mapped to access non-EPC memory via the same virtual addresses as the enclave’s host process.
<: width=“600px” .center-image>Figure 61. An enclave’s EPC pages are accessed using a dedicated region in the enclave’s virtual address space, called ELRANGE
Enclaves must store all their code and private data inside ELRANGE, and must consider the memory outside ELRANGE to be an untrusted interface to outside world.
How EPC Pages are Mapped into ELRANGE? #
Section 5.2.3 Address Translation for SGX Enclaves
Section 6.2.1 Functional Description
Virtual address allocation is system software’s responsibility in SGX’s model. So CPU cannot ask for system software to allocate a page in a specific virtual address.
In SGX1 model, only static memory allocation is supported. Hence, all EPC pages must be allocated to an enclave before initialization phase is finished.
<: width=“600px” .center-image>Figure 63. Enclave state transition diagram
As you can see in Figure 63, EADD instruction, which is used for EPC page allocation, can only be called when the enclave is uninitialized.
As all EPC pages are allocated statically, the expected virtual addresses for EPC pages are continuous.
Hence, the intended virtual address is defined as follows.
The virtual address of the newly created page is measured relatively to the start of the enclave’s ELRANGE.
For example, if ELRANGE is set
Then, how BASEADDR in ELRANGE is set?
The enclave’s measurement does not include BASEADDR field. (ELRANGE is specified as BASEADDR and SIZE) It allows the system software to load an enclave at any virtual address inside a host address that satisfied the ELRANGE restrictions (5.2.1).
ELRANGE restrictions from section 5.2.1 ELRANGE
ELRANGE must meet the same constraints as a variable memory type range, the size must be a power of 2, and the base must be aligned to the size.
To make it short, ELRANGE is defined by system software, but recorded by SGX at the time an enclave is created. All following EPC pages should have continuous virtual address from ELRANGE.
Here is a sample enclave’s virtual address space in the paper.
<: width=“500px” .center-image>Figure 62. A possible layout of an enclave’s virtual address space
You can see that ADDRESS fields of EPC pages are continuous from BASEADDR (ELRANGE base address).
SGX Address Translation Attack Protection Details #
Section 6.2.1 Functional Description
SGX adds the access control logic to the PMH. SGX’s security checks are performed after SGX’s access control log has access to the physical address produced by the page walker FSM.
<: width=“500px” .center-image>Figure 86. Security checks performed by the PMH.
Introduction to Intel Software Guard Extensions
![]()
Intel Software Guard Extensions (SGX) is a set of instructions that helps the host machine in creating compact secure containers known as enclaves that can be used to execute sensitive processes protected from the outside. The SGX was a technology introduced by Intel Corporation in 2015 for its 6th generation processors. The enclaves created by the SGX are protected areas to execute CPU instructions without any interference. Even on a compromised machine, these enclaves prevent breaches with their access control policies, thus making it inaccessible by the host machine, the BIOS, hypervisor, and the superuser too. The Intel Software Guard Extension is often used to protect sensitive information like credentials, secret keys and identities preserving their confidentiality and integrity. Few of the main features of this technology include its remote and local attestations and sealing/unsealing of information.
1. Sealing/Unsealing Data
Sealing and Unsealing is one of the features that the Intel Corporation provides with its Intel SGX technology used for securing data outside an enclave. The secure containers created by the SGX are destroyed once the process exits and all the data inside is destroyed. However, there is a situation wherein the information inside the enclave has to persists for future use. If this data has to be re-used in the future, certain actions have to be taken by the enclave to store this information outside before it is destroyed. Sealing of data helps to encrypt the data that has to be stored outside the enclave with a special key that can be derived from the hardware inside the enclave only. Thus this encryption provides assurances of integrity, confidentiality and authenticity on the data. Every time the data has to be accessed, a new enclave has to be initialised and the key has to be granted to the enclave by the hardware. The Intel SGX supports two policies for these Sealing/Unsealing Keys [4].
1.1. Sealing to Enclave Identity
The enclave identity is represented by the value of MRENCLAVE, which is a cryptographic hash of the enclave logs right from the time it was built to being initialised. As a result, different enclaves would have different MRENCLAVE values. Sealing to enclave identity would restrict access of the sealed data only to instances of the same enclave. Other enclaves or even different versions of the same enclave would not be able to access the sealed data.
1.2. Sealing to Signing Identity
The signing identity is provided by the authority that signs an enclave before it could be distributed. This identity is represented by the MRSIGNER value and is the same for all enclaves that have common signing authorities. As a result, sealing to signing identity allows the same sealing key to be shared by multiple enclaves and different versions of enclaves that were all signed by the same authority. This restricts the access of sealed data only to instances of enclaves signed by other authorities.
2. Local (Inter-Platform) Attestation
Applications on a single platform may often need to communicate with one another to perform some high level of function. While communicating, the enclave of one application must prove its identity and authenticity to the other enclave(s) from different applications on the same local platform. The Intel SGX provides a trusted hardware mechanism called as Local Attestation for the same. For this, the enclave that needs to communicate with the other one generates a report with the help of the Hardware proving its identity, proof of the existence and other details. This report can then be given to the other enclave for verification. The authentication mechanism used for the Local Attestation comprises of symmetric cryptography where only the enclaves verifying and providing the report have access to the shared key.
2.1. Working
Step 1 — Provisioning request
The enclave (A) that needs to communicate requests a local attestation from the other enclave (B) running on the same platform. After receiving the request, the other enclave replies by providing its MRENCLAVE identity to enclave A.
Step 2 — Report Creation
Once receiving the MRENCLAVE identity from enclave B, enclave A asks the hardware to create a report destined form enclave B with its proof of identity, proof of existence and other details. This report is then sent to Enclave B.
Step 3 — Report Verification
Once received, enclave B asks the hardware to verify the report send by enclave A verifying that both are on the same platform. Enclave B can then reply with its report using the MRENCLAVE identity of enclave A from the report provided. This report is sent to enclave A for the same verification process.
Step 4 — Key provisioning
Once verified the report by enclave B, the secret key is then shared via a secured channel.
3. Remote (Inter-Platform) Attestation
Remote attestation is a way in which a remote node can prove that it was configured and initialised with the right version of an Intel SGX enclave on its machine. It ensures that the enclave is running over a trusted environment without any external interference and malicious software. This technique is often used when communicating with external nodes to share sensitive information over a secured channel using symmetric and asymmetric cryptography. This inter-platform communication process is guarded by a secure channel that uses the public and private keys of the remote node ensuring the integrity of the channel. The secrets that are sent over this secure channel are also secured by using the famous Diffie Hellman Key Exchange algorithm which ensures that no malicious user can access the information being exchanged even if the channel is compromised [1]. This adds a second layer of security to the information being communicated. Before explaining the entire attestation and key exchange process some terminology will be briefly explained below.
3.1. Terminology
3.1.1. Quoting Enclave
The quoting enclave is a secured container that is present on every SGX enabled machine apart from the application enclave that is responsible for performing the sensitive instructions. The Quote enclave oversees creating a report that is used for remotely attesting a remote device. This report is used by the Trusted Remote Authority (TRA) and the intel attestation service to verify the remote attestation of the device. The quote enclave receives a report from the main enclave with details of is initialization, version and code running inside. This report is then verified by the quoting enclave, signed, and provided to the TRA.
3.1.2. EPID
The Intel Enhanced Privacy ID (EPID) enable nodes over the network to sign objects without their identity being exposed. This helps the signing process being anonymous as it cannot be backtracked to any of the signers over the network. It is an extension of the Direct Anonymous attestation scheme [2] by E Brickell et al. This is done by dividing all the available signers into groups based on similarities of their processors. Once the signers are categorized, the signing can happen with the private signing key of each node and those signatures can be verified by the public key of the group only. As a result, it is easy to find out which group a node belongs to, however, which node has signed the objects will never be exposed.
3.1.3. Signature Revocation List (SigRL)
The Signature Revocation List also called SigRL, is a list of all the signatures of the nodes that are not trusted. This list of backlisted signatures is signed by the revocation authority and hence the name. Every time an untrusted signature is obtained, the revocation authority will add that signature to the previous list (SigRL), update the list and sign it with its private key. After which the corresponding key of the malicious signer will be revoked. This ensures that all the signers maintain their authenticity. The EPID scheme benefits from this list which is absent in the traditional Direction Anonymous attestation scheme.
3.2.Working
3.2.1. Step 1 — Provisioning request
The provisioning request is the first step of the remote attestation (RA) process wherein the remote node requests the Trusted Remote Authority (TRA) to initiate the RA flow and provide the secret key which would be used for encryption/decryption in its enclave. Every remote node is initialised with the public key of the TRA so that it can communicate securely only with the intended remote authority. Once the request has been sent, the TRA then replies by challenging the remote node with the help of an attestation request. This request is usually in the form of a nonce. Other details of the communication and message are a dependant of the TRA.
3.2.2. Step 2 — Extended Group Id Provision (msg0)
Once the challenge is received at the client end (RN), it will initiate the RA process. First, the application makes an ECALL to enter the enclave, then using the ‘sgx_ra_init()’ method it initiates the RA process and gets the DHKE context parameter which would be used in the future to exchange the key. During this method call, it passes the public key of the challenger (TRA). The next step the client performs is the generation of the group ID (GID) which is a part of the EPID scheme. This is done by calling the ‘sgx_get_extended_epid_group_id()’ method. The GID forms msg0 that is sent to the TRA. This GID has to be verified by the TRA to continue the attestation process. Once verified, the TRA sends a signal to the RN.
3.2.3. Step 3 — Temporal Key Provision (msg1)
On receiving the green light from the TRA, the client continues with the RA process. The first step of the client is the creation of its ephemeral (temporal) public key which would be used by it and the TRA for secure communication. The client then generates the msg1 as a response to the TRA. For this is envokes the ‘sgx_ra_get_msg1()’ which accepts the public key of the TRA, the DHKE context and a pointer to the function to create the client DHKE secret. Together, the ephemeral key and the contents of the method invoked are combined and sent across to the TRA forming msg1.
3.2.4. Step 4 — Service Provider ID and SIgRL Provision (msg2)
This is where the Intel Attestation Service (IAS) comes in picture. During this step, the challenger (TRA) generates its DHKE context parameter (Gb) using the values of the DHKE context in the request is received from the RN. It also requests the IAS to generate the SigRL for the GID sent by the client. After verifying the SigRL provided by the IAS, it generates the Key definition key and mentions value in the Quote_type variable. The SigRL, KDK, Quote_type and the public key of the TRA (SPID) are combined to form msg2 and are sent to the client.
3.2.5. Step 5 — Quote Provision (msg3)
On receiving msg2 from the TRA, the client verifies the TRA signature and the SigRL list. It then sends the report from the msg3 to the quoting enclave which is present on the same machine to create a quote. In short, it calls the ‘sgx_ra_get_msg3_trusted()’ method which returns the quote that was generated by the quoting enclave on successful verification of the encryption/decryption enclave. This generated quote forms msg3 which are signed by the RN and sent to the TRA.
3.2.6. Step 6 — Secret key Provision (msg4)
This is the final step wherein the TRA verifies the quote provided in the previous step. This is done by using the EPID certificate to check the sign over the quote. The quote is then sent to the IAS who verifies its details and provides details of the enclave functioning over a remote node. Once verified, the TRA finally sends msg4 containing the result of the quote verification as well as the secret. The secret which is shared over the secure channel is also encrypted using the DKHE algorithm.
With the above-mentioned features of the Intel SGX, multiple applications from different domains have leveraged the security measures of the Intel SGX. Christian Priebe et al [5] proposed a unique database engine guaranteeing confidentiality, integrity and freshness for data and queries. The system named as EnclaveDB achieved this by placing its sensitive information like its tables, indexes and metadata inside an enclave. This enclave being protected by Intels trusted hardware ensures that the data is safe from a malicious database administrator too. The data and metadata were also sealed and stored over the disk thus providing easy access to the enclave while initialising it. Ben A Fisch et al [6] have designed a novel system for functional encryption of information with the help of Intel SGX. It does so by using the local and remote attestation process of SGX technology. The authors have described functional encryption as a powerful cryptographic tool that facilitates non-interactive fine-grained access control to encrypted data. Thus without having access to the actual data, a remote node can compute a function over it and get only the result of the function. To respond, the information is decrypted in an enclave and a function is computed over the decrypted data. The decryption process is centrally handled by a trusted remote authority who provisions the decryption key.
Juan Wang et al [7] have designed an enhanced attestation system that helps in constructing trusted terminals and services and can be used in an Internet of Things (IoT) embedded system. The authors also present a policy-based mechanism way wherein sensitive data like secret keys, policy details, credentials, are all sealed using the enclave-specific keys. SGX-Log is a system designed by Vishal Karande et al [8] that helps to preserve log records of a system using the Intel Software Guard Extension technology. They designed a logging system that ensures the safety of its logging data from malicious users. For this, the authors used the sealing mechanism of SGX to protect the program code as well as the log data in both the disk and the memory from being altered. Java is one of the most used programming languages and often several applications written in java are running on untrusted infrastructure including public clouds. As a result, research on using SGX in Java is exponentially increasing and flourishing. Luigi Coppolino from the University of Naples et al [9] has compared the various techniques and approaches that are used to secure Java applications with Intel SGX. A per their findings, the SCONCE, SGX-LKL and SGX-JN were the most promising techniques and a comparative analysis on the same was completed by the authors.
References
1. Diffie, W. and Hellman, M., 1976. New directions in cryptography. IEEE transactions on Information Theory, 22(6), pp.644–654.
2. Brickell, E., Camenisch, J. and Chen, L., 2004, October. Direct anonymous attestation. In Proceedings of the 11th ACM conference on Computer and communications security (pp. 132–145).
3. Johnson, S., Scarlata, V., Rozas, C., Brickell, E. and Mckeen, F., 2016. Intel® software guard extensions: Epid provisioning and attestation services. White Paper, 1, pp.1–10.
4. Anati, I., Gueron, S., Johnson, S. and Scarlata, V., 2013, June. Innovative technology for CPU based attestation and sealing. In Proceedings of the 2nd international workshop on hardware and architectural support for security and privacy (Vol. 13, p. 7). ACM New York, NY, USA.
5. Priebe, C., Vaswani, K. and Costa, M., 2018, May. Enclavedb: A secure database using SGX. In 2018 IEEE Symposium on Security and Privacy (SP) (pp. 264–278). IEEE.
6. Fisch, B., Vinayagamurthy, D., Boneh, D. and Gorbunov, S., 2017, October. Iron: functional encryption using Intel SGX. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security (pp. 765–782).
7. Wang, J., Hong, Z., Zhang, Y. and Jin, Y., 2017. Enabling security-enhanced attestation with Intel SGX for remote terminal and iot. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 37(1), pp.88–96.
8. Karande, V., Bauman, E., Lin, Z. and Khan, L., 2017, April. Sgx-log: Securing system logs with sgx. In Proceedings of the 2017 ACM on Asia Conference on Computer and Communications Security (pp. 19–30).
9. Coppolino, L., D’Antonio, S., Mazzeo, G. and Romano, L., 2019. A comparative analysis of emerging approaches for securing java software with Intel SGX. Future Generation Computer Systems, 97, pp.620–633.
Intel Software Guard Extensions: что это?
Intel Software Guard Extensions (Intel SGX) — это набор инструкций и функций аппаратного обеспечения, разработанных компанией Intel, которые позволяют создавать безопасные области памяти в компьютерных системах. Основная задача SGX — защита программного кода и данных от несанкционированного доступа и вмешательства.
Одной из основных функций Intel SGX является аппаратная изоляция. Это означает, что все данные, которые хранятся и обрабатываются внутри безопасной области памяти, остаются недоступными для других программ, операционной системы или даже владельца компьютера. Это позволяет создавать устойчивые к атакам и сильно защищенные приложения.
Другой важной функцией Intel SGX является возможность создания защищенных каналов связи между различными безопасными областями памяти. Это позволяет передавать данные между ними, не опасаясь, что они будут перехвачены или модифицированы третьими сторонами. Такая функциональность особенно полезна для обеспечения конфиденциальности и целостности данных при взаимодействии различных приложений или компонентов системы.
Intel SGX уже получил широкое распространение в различных отраслях, таких как финансы, здравоохранение, облачные вычисления и интернет вещей. Он позволяет создавать безопасные и надежные приложения, устойчивые к кибератакам и утечкам данных. Вместе с тем, использование Intel SGX требует специального программного обеспечения и навыков разработки, что делает его доступным для опытных разработчиков и специалистов в области информационной безопасности.
Intel Software Guard Extensions: описание и функции
Intel Software Guard Extensions (SGX) – это набор инструкций и механизмов безопасности, предоставляемых компанией Intel. Он предназначен для защиты конфиденциальных данных и кода, работающих внутри приложений, от несанкционированного доступа и вмешательства.
Основные функции SGX:
- Частная область памяти: SGX позволяет создавать небольшие области памяти, называемые Enclave, в которых данные и код остаются недоступными для других приложений, операционной системы и самого процессора.
- Защита от атак: SGX предоставляет механизмы для обнаружения и защиты от различных видов атак, включая атаки на память и атаки со стороны операционной системы.
- Криптографическая защита: SGX позволяет использовать криптографию внутри Enclave для обеспечения конфиденциальности и целостности данных.
Применение SGX:
- Защита личных данных пользователей: SGX может быть использован для защиты личных данных, таких как пароли, ключи шифрования и персональная информация.
- Защита программного кода: SGX может быть применен для защиты программного кода от несанкционированного доступа и изменений, что особенно важно для приложений с открытым исходным кодом.
- Облачные вычисления: SGX позволяет создавать безопасные вычисления в облаке, где клиентские данные и код остаются защищенными от посторонних.
Ограничения SGX:
| Ограничение | Описание |
|---|---|
| Размер Enclave | Размер каждой Enclave ограничен и не может превышать определенное значение, что может ограничивать работу с большими объемами данных. |
| Зависимость от аппаратной платформы | SGX требует наличия поддержки аппаратуры на уровне процессора, что ограничивает его использование на старых системах. |
| Затраты на разработку | Использование SGX требует специальной разработки приложений, чтобы использовать его функции, что может увеличить сложность и затраты проекта. |
Несмотря на некоторые ограничения, Intel Software Guard Extensions представляет собой мощный инструмент для обеспечения безопасности в приложениях и вычислениях, где конфиденциальность и защита данных имеют большое значение.
Что такое Intel Software Guard Extensions?
Intel Software Guard Extensions (SGX) – это набор аппаратных и программных технологий, разработанный компанией Intel, который предоставляет область защищенной памяти внутри процессора. Он обеспечивает возможность защиты конфиденциальных данных на некорректных или злонамеренных компьютерных системах и облаках.
SGX позволяет создавать надежные исполнительные контейнеры, называемые «енклейвами», которые могут работать с конфиденциальными данными в безопасной среде. Они шифруют данные и выполняются в защищенном режиме, который изолирует их от всей остальной системы.
Все это делает SGX полезным инструментом для разработчиков, которые хотят обеспечить надежную защиту данных при их обработке и передаче между различными компонентами системы.
Как работает Intel Software Guard Extensions?
Intel Software Guard Extensions (SGX) — это набор инструкций и механизм безопасности, разработанный Intel. Он обеспечивает создание изолированных областей памяти, называемых защищенными контейнерами, которые могут быть использованы для обеспечения конфиденциальности и целостности данных даже на незащищенных платформах.
Работа SGX основана на следующих принципах:
- Защищенные контейнеры: SGX позволяет создавать изолированные области памяти, называемые защищенными контейнерами, которые зашифрованы и недоступны для прямого доступа извне процессора. Эти контейнеры сохраняются в оперативной памяти и периодически копируются на диск. Таким образом, данные внутри контейнеров остаются защищенными даже в случае компрометации операционной системы или других процессов.
- Аппаратное обеспечение: SGX использует аппаратные возможности процессора Intel для обеспечения безопасности данных. Оно предоставляет защищенные инструкции и аппаратные механизмы, которые контролируют доступ к защищенным контейнерам и обеспечивают их целостность.
- Код программы: Для работы с SGX необходимо написать соответствующий код программы, который определяет и использует защищенные контейнеры. Код программы должен быть компилирован с использованием специальных библиотек, предоставляемых Intel.
При выполнении программы, использующей SGX, происходит следующая последовательность действий:
- Загрузка кода: Код программы, написанный с использованием SGX, загружается в оперативную память процессора.
- Создание контейнеров: В рамках программы создаются защищенные контейнеры, в которых будут храниться конфиденциальные данные. Каждый контейнер имеет уникальный идентификатор и зашифрованное содержимое.
- Защита контейнеров: SGX обеспечивает защиту контейнеров от несанкционированного доступа. Доступ к контейнерам может быть получен только при помощи установленных программных протоколов и функций SGX. Это позволяет предотвратить утечку данных из контейнеров даже в случае компрометации операционной системы.
- Работа с контейнерами: В рамках программы можно выполнять операции над защищенными контейнерами, такие как чтение, запись и удаление данных. Эти операции должны происходить через интерфейс, предоставляемый SGX, чтобы обеспечить безопасность данных.
Таким образом, Intel Software Guard Extensions позволяет создавать и использовать защищенные контейнеры для обеспечения конфиденциальности и целостности данных в незащищенных средах. Он использует аппаратные возможности процессора Intel и требует написания специального кода программы, чтобы обеспечить безопасность данных.
Основные преимущества Intel Software Guard Extensions
1. Защита конфиденциальных данных
Intel Software Guard Extensions (SGX) обеспечивает преимущество защиты конфиденциальных данных, таких как пароли, ключи шифрования и личная информация, от несанкционированного доступа. SGX создает изолированное окружение, называемое «защищенным контейнером», в котором информация хранится в зашифрованном виде и может быть обработана только внутри него.
2. Устойчивость к физическим атакам
Одним из преимуществ SGX является его устойчивость к физическим атакам. Защищенный контейнер SGX работает в области процессора, называемой «защищенным исполнением», которая обеспечивает целостность данных и кода во время исполнения. Даже если злоумышленник получит физический доступ к процессору, он не сможет изменить или расшифровать информацию, хранящуюся внутри защищенного контейнера.
3. Возможность обеспечить безопасность в облаке
Intel SGX предоставляет возможность обеспечить безопасность данных в облачной среде. Защищенный контейнер SGX может быть развернут как на клиентском устройстве, так и на сервере в облаке, обеспечивая конфиденциальность данных и защиту от атак со стороны злоумышленников. Это делает SGX отличным инструментом для обеспечения безопасности вычислений и хранения данных в облачной среде.
4. Поддержка разработчиков
Intel SGX обеспечивает поддержку разработчиков, предоставляя средства разработки и API для создания защищенного контейнера. Это позволяет разработчикам легко интегрировать SGX в свои приложения и создавать безопасные решения. Более того, Intel продолжает активно разрабатывать SGX и предоставлять обновления, чтобы поддерживать безопасность и надежность функциональности.
5. Легкая интеграция
Интеграция Intel SGX в существующие приложения не требует значительных изменений в их архитектуре или коде. Разработчики могут использовать существующий код, добавляя к нему функциональность SGX. Это облегчает процесс внедрения SGX в существующие системы и приложения без необходимости выполнять полную переработку кода.
| Преимущества Intel Software Guard Extensions |
|---|
| Защита конфиденциальных данных |
| Устойчивость к физическим атакам |
| Возможность обеспечить безопасность в облаке |
| Поддержка разработчиков |
| Легкая интеграция |
Применение Intel Software Guard Extensions в различных областях
Intel Software Guard Extensions (SGX) – это технология, разработанная Intel для обеспечения безопасности приложений и данных в защищенной области, известной как Trusted Execution Environment (TEE). Введение SGX предоставляет возможности применения в различных областях, где требуется обеспечить конфиденциальность и целостность данных.
Облако и облачные сервисы
SGX может быть использовано для обеспечения безопасности данных в облачных сервисах. Клиенты могут выделить отдельную защищенную область для своих приложений и данных, где даже хост-сервис не имеет доступа к данным, а только клиентский код. Это обеспечивает высокий уровень конфиденциальности и защищает приложения от внутренней и внешней атаки.
Финансовая сфера
В финансовой сфере безопасность является ключевым параметром. SGX позволяет обеспечить конфиденциальность важных финансовых данных, таких как персональная информация клиентов, финансовые транзакции и другие конфиденциальные сведения. Технология SGX предоставляет механизмы, которые защищают данные от утечек в случае атаки.
Интернет вещей
Интернет вещей (IoT) является областью, где безопасность данных и приватность пользователей являются ключевыми факторами. SGX может быть использовано для обеспечения безопасности в IoT-устройствах, где он может защищать данные, используемые в устройствах, и предотвращать несанкционированный доступ к ним.
Медицина и здравоохранение
В медицине и здравоохранении обработка и хранение конфиденциальных медицинских данных является критическим. SGX позволяет защищать эти данные, обеспечивая их конфиденциальность и предотвращая возможные утечки. Это дает возможность сохранить конфиденциальность пациента и предотвратить несанкционированный доступ к медицинской информации.
Исследовательские лаборатории и разработка программного обеспечения
SGX может быть использовано в исследовательских лабораториях и при разработке программного обеспечения для обеспечения безопасности и конфиденциальности исследовательских данных и кода. Это может быть полезно в области разработки новых технологий и инноваций.
Использование Intel Software Guard Extensions в этих и других областях позволяет повысить безопасность и конфиденциальность данных, минимизировать утечку информации и обеспечивать защиту от несанкционированного доступа.
Безопасность Intel Software Guard Extensions
Intel Software Guard Extensions (SGX) предоставляет новый уровень безопасности для приложений, позволяя изолировать конфиденциальную информацию и код от внешних угроз. Это достигается путем создания защищенной области памяти, называемой «защищенным контейнером», внутри которого данные и код могут быть безопасно хранены и выполнены.
Основные функции безопасности Intel SGX включают:
Конфиденциальность данных: Intel SGX позволяет программному обеспечению шифровать и защищать конфиденциальные данные, такие как пароли, ключи шифрования и личную информацию пользователей, от внешних угроз, включая привилегированные процессы и вредоносное ПО.
Интегритет кода: Использование Intel SGX позволяет программным приложениям проверять целостность кода, что позволяет предотвратить внедрение вредоносного кода или изменение исполняемых файлов. Это особенно полезно для обеспечения безопасного обновления программного обеспечения.
Отказ от доступа третьих лиц: Благодаря технологии Intel SGX, только специфическое программное обеспечение, подписанное и проверенное разработчиком, может получить доступ к защищенной области памяти, где хранятся конфиденциальные данные. Это обеспечивает контроль над доступом и предотвращает несанкционированное использование информации.
Защита от сторонних атак: Intel SGX предотвращает атаки на программный стек и кэш, предоставляя аппаратную защиту от бокового канала атак. Это позволяет приложениям выполняться в защищенной среде, где их конфиденциальность и целостность остаются невосприимчивыми к атакам.
В целом, безопасность Intel Software Guard Extensions делает возможным создание безопасных и надежных приложений, защищающих конфиденциальность и интегритет данных. Эта технология может использоваться в различных сферах, включая банковское дело, здравоохранение, интернет вещей и другие, где требуется высокий уровень безопасности.
Intel Software Guard Extensions, серия учебных материалов. Часть 1, основы Intel SGX
Первая часть в серии учебных материалов по Intel Software Guard Extensions (Intel SGX) представляет собой краткое описание этой технологии. Дополнительные сведения см. в документации в составе Intel Software Guard Extensions SDK. Список всех учебных материалов в этой серии см. в статье Представляем серию учебных материалов, посвященных Intel Software Guard Extensions.

Технология Intel Software Guard Extensions
Программным приложениям зачастую приходится работать с конфиденциальной информацией, например с паролями, номерами счетов, финансовыми данными, ключами шифрования, медицинскими данными. Доступ к этим данным должен быть только у полномочных получателей. В терминологии Intel SGX такая конфиденциальная информация называется «секретом приложения».
Задача операционной системы состоит в применении политики безопасности в компьютере, чтобы эти секреты не были непреднамеренно раскрыты другим пользователям или приложениям. Операционная система не даст пользователю получить доступ к файлам другого пользователя (без предоставленного явным образом разрешения); не даст одному приложению получить доступ к памяти другого приложения; не даст пользователю без необходимых прав получить доступ к ресурсам ОС, исключая строго контролируемые ресурсы. В приложениях часто используются дополнительные защитные меры, например шифрование данных, чтобы исключить доступ третьими сторонами к данным, пересылаемым в хранилище или по сетевому подключению, даже если злоумышленникам удалось получить доступ к ОС и к оборудованию.
Несмотря на все эти защитные меры, в большинстве компьютерных систем все равно остаются уязвимые места. Разнообразные механизмы защищают одно приложение от другого и защищают ОС от пользователя, не имеющего разрешений, но приложения обычно практически никак не защищены от процессов, выполняющихся с более высоким уровнем прав, включая саму ОС. Вредоносные программы, обладающие правами администратора, имеют неограниченный доступ ко всем системным ресурсам и ко всем приложениям, запущенным в системе. Усовершенствованные вредоносные программы могут атаковать защитные механизмы приложения, чтобы извлечь ключи шифрования и даже секретные данные непосредственно из памяти.
Корпорация Intel разработала расширения Intel SGX для высокоуровневой защиты секретов и для защиты от таких программных атак. Intel SGX — это набор инструкций ЦП, дающих возможность приложениям создавать анклавы: защищенные области в адресном пространстве приложения, обеспечивающие конфиденциальность и целостность даже при наличии вредоносных программ с расширенными правами. Код анклавов поддерживается особыми инструкциями, он компилируется и загружается в виде файла библиотеки динамической компоновки Windows * (DLL).
Расширения Intel SGX позволяют снизить уязвимость приложений. На рис. 1 показана значительная разница между потенциальными областями атаки при наличии и при отсутствии анклавов Intel SGX.
Рисунок 1. Области атаки с анклавами и без анклавов Intel Software Guard Extensions
Как технология расширений Intel Software Guard Extensions помогает защищать данные
Intel SGX обеспечивает следующую защиту от атак, нацеленных на оборудование и программ.
- Доступ к памяти анклава на чтение и запись извне анклава отсутствует вне зависимости от текущего уровня прав и режима работы ЦП.
- Анклавы рабочего уровня недоступны для отладки как программными, так и аппаратными отладчиками. (Можно создать анклав с атрибутом отладки, при наличии которого отладчик Intel SGX может просматривать содержимое анклава аналогично стандартному отладчику. Это сделано, чтобы повысить удобство процесса разработки программного обеспечения.)
- В среду анклава невозможно войти с помощью классических вызовов функций, переходов, манипуляций с регистрами или со стеком. Единственный способ вызвать функцию анклава — с помощью новой инструкции, выполняющей несколько защитных проверок.
- Память анклава защищена с помощью стандартных алгоритмов шифрования с защитой от воспроизведения. Если прочесть память или подключить модули оперативной памяти к другой системе, удастся получить только зашифрованные данные (см. рис. 2).
- Ключ шифрования памяти изменяется случайным образом при каждом изменении цикла электропитания (например, при загрузке, при возобновлении работы после сна и гибернации). Ключ хранится внутри ЦП и недоступен извне.
- Данные изолированы в анклавах и доступны только для кода данного анклава.
Рисунок 2. Защита данных в анклавах Intel Software Guard Extensions в защищенных приложениях
Как это устроено
Для использования Intel SGX приложение должно быть разделено на два компонента (см. рис. 3).
- Доверенный компонент. Это анклав. Код в доверенном компоненте получает доступ к секретам приложения. У одного приложения может быть несколько доверенных компонентов/анклавов.
- Недоверенный компонент. Это остальная часть приложения, любые его модули. Следует отметить, что с точки зрения анклава и ОС, и VMM считаются недоверенными компонентами.
В анклавах также следует свести к минимуму взаимодействие между доверенными и недоверенными компонентами. Анклавы могут выходить за пределы защищенной области памяти и вызывать функции в недоверенном компоненте (с помощью особых инструкций), но рекомендуется ограничивать такие зависимости, чтобы обеспечить более надежную защиту анклава от атак.
Рисунок 3. Выполнение приложения Intel Software Guard Extensions
Аттестация
В архитектуре SGX аттестация — это подтверждение создания определенного анклава на платформе. Существует два механизма аттестации.
- Локальная аттестация происходит, когда два анклава, находящиеся на одной и той же платформе, выполняют взаимную проверку подлинности.
- Удаленная аттестация происходит, когда доверенность анклава проверяется удаленным поставщиком.
Локальная аттестация
Локальная аттестация полезна, когда у приложений есть несколько анклавов, которые должны работать вместе для выполнения какой либо задачи, или когда два отдельных приложения должны обмениваться данными между анклавами. Каждый из анклавов должен проверить другой анклав, чтобы убедиться в его надежности. После этого анклавы устанавливают защищенный сеанс и используют обмен ключами ECDH, чтобы совместно использовать ключ сеанса. Этот ключ сеанса можно использовать, чтобы шифровать данные, которые должны быть общими для обоих анклавов.
Один анклав не может получить доступ к защищенному пространству памяти другого анклава, даже если оба анклава созданы одним и тем же приложением, поэтому необходимо убрать из всех указателей ссылки на их значения и скопировать; полный набор данных должен быть передан из одного анклава в другой.
Удаленная аттестация
При удаленной аттестации программные расширения Intel SGX и оборудование платформы формируют предложение, которое передаются на сторонний сервер для установления доверия. Программное обеспечение включает анклав приложения, а также компонент Quoting Enclave (QE) и Provisioning Enclave (PvE), предоставляемые корпорацией Intel. Оборудование для аттестации — ЦП, поддерживающий Intel SGX. Сводка программной информации в сочетании с уникальным для платформы асимметричным ключом оборудования используются для формирования предложения, которое передается на удаленный сервер по проверенному каналу. Если удаленный сервер определяет, что экземпляр анклава был создан правильно и запущен на процессоре, поддерживающем Intel SGX, то сервер устанавливает доверительные отношения и передает секреты по проверенному каналу.
Запечатывание данных
Запечатывание данных — это шифрование данных, чтобы можно было записывать их в недоверенную память или хранилище, не раскрывая содержимое. Эта данные могут быть позже прочитаны анклавом и распечатаны (расшифрованы). Ключи шифрования создаются внутри по запросу и не раскрываются для анклава.
Существует два способа запечатывания данных.
- Удостоверение анклава. Этот метод создает ключ, уникальный именно для данного анклава.
- Удостоверение запечатывания. Этот метод создает ключ на основе удостоверения центра запечатывания анклава. Несколько анклавов одного и того же заверителя подписи могут образовать один и тот же ключ.
Запечатывание с удостоверением анклава
При запечатывании с удостоверением анклава ключ является уникальным для конкретного анклава, запечатавшего данные. При любых изменениях анклава, влияющих на его подпись, будет создан новый ключ. При использовании этого метода данные, запечатанные одной версией анклава, будут недоступны для другой версии этого же анклава. Побочный эффект этого метода состоит в том, что запечатанные данные невозможно перенести в новые версии приложения и его анклава. Такой подход предназначен для предложений, в которых старые запечатанные данные не должны использоваться новыми версиями приложения.
Запечатывание с удостоверением запечатывания
При запечатывании с удостоверением запечатывания несколько анклавов из одного и того же центра могут запечатывать и распечатывать данные друг друга. Это позволяет переносить данные из одной версии анклава в другую или совместно использовать данные несколькими приложениями одного и того же поставщика.
Если нужно запретить доступ старых версий ПО и анклава к данным, запечатанным в новых версиях приложения, можно использовать номер версии ПО при подписании анклава. Версии анклава, более старые по сравнению с указанным номером версии ПО, не смогут образовать ключ, поэтому не смогут распечатать данные.
Как мы будем использовать технологию Intel Software Guard Extensions в учебном руководстве
Мы рассмотрели три важнейших компонента Intel SGX: анклавы, аттестацию и запечатывание. В этом учебном руководстве мы сосредоточимся на реализации анклавов, поскольку это основа Intel SGX. Невозможно провести аттестацию или запечатывание, не создав анклав. Кроме того, это позволит ограничить размер учебного руководства.
В дальнейших выпусках
Во второй части серии учебных материалов Расширения Intel Software Guard Extensions: часть 2, создание приложений мы рассмотрим диспетчер паролей, который будет создан с поддержкой Intel SGX. Мы опишем требования к созданию этого приложения, ограничения и пользовательский интерфейс. Следите за новостями.