요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
Provider format과 generation conflict detection
configfs-tsm-report:46-74Provider가 outblob 형식을 식별하며 input이나 option write마다 증가하는 generation으로 동시 변경을 감지합니다.
Attestation privilege level
configfs-tsm-report:76-94VMPL 같은 privilege level을 지원하는 provider는 floor부터 TSM_PRIVLEVEL_MAX(3)까지 report level을 지정할 수 있게 합니다.
Service-provider report와 manifest selection
configfs-tsm-report:96-145SVSM service provider, 전체 또는 특정 service GUID, 요청할 manifest version을 선택해 service-specific attestation report를 생성합니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
What: /sys/kernel/config/tsm/report/$name/inblob
Date: September, 2023
KernelVersion: v6.7
Contact: linux-coco@lists.linux.dev
Description:
(WO) Up to 64 bytes of user specified binary data. For replay
protection this should include a nonce, but the kernel does not
place any restrictions on the content.
What: /sys/kernel/config/tsm/report/$name/outblob
Date: September, 2023
KernelVersion: v6.7
Contact: linux-coco@lists.linux.dev
Description:
(RO) Binary attestation report generated from @inblob and other
options The format of the report is implementation specific
where the implementation is conveyed via the @provider
attribute.
What: /sys/kernel/config/tsm/report/$name/auxblob
Date: October, 2023
KernelVersion: v6.7
Contact: linux-coco@lists.linux.dev
Description:
(RO) Optional supplemental data that a TSM may emit, visibility
of this attribute depends on TSM, and may be empty if no
auxiliary data is available.
When @provider is "sev_guest" this file contains the
"cert_table" from SEV-ES Guest-Hypervisor Communication Block
Standardization v2.03 Section 4.1.8.1 MSG_REPORT_REQ.
https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/specifications/56421.pdf
What: /sys/kernel/config/tsm/report/$name/manifestblob
Date: January, 2024
KernelVersion: v6.10
Contact: linux-coco@lists.linux.dev
Description:
(RO) Optional supplemental data that a TSM may emit, visibility
of this attribute depends on TSM, and may be empty if no
manifest data is available.
See 'service_provider' for information on the format of the
manifest blob.
What: /sys/kernel/config/tsm/report/$name/provider
Date: September, 2023
KernelVersion: v6.7
Contact: linux-coco@lists.linux.dev
Description:
(RO) A name for the format-specification of @outblob like
"sev_guest" [1] or "tdx_guest" [2] in the near term, or a
common standard format in the future.
[1]: SEV Secure Nested Paging Firmware ABI Specification
Revision 1.55 Table 22
https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/specifications/56860.pdf
[2]: Intel® Trust Domain Extensions Data Center Attestation
Primitives : Quote Generation Library and Quote Verification
Library Revision 0.8 Appendix 4,5
https://download.01.org/intel-sgx/latest/dcap-latest/linux/docs/Intel_TDX_DCAP_Quoting_Library_API.pdf
What: /sys/kernel/config/tsm/report/$name/generation
Date: September, 2023
KernelVersion: v6.7
Contact: linux-coco@lists.linux.dev
Description:
(RO) The value in this attribute increments each time @inblob or
any option is written. Userspace can detect conflicts by
checking generation before writing to any attribute and making
sure the number of writes matches expectations after reading
@outblob, or it can prevent conflicts by creating a report
instance per requesting context.
What: /sys/kernel/config/tsm/report/$name/privlevel
Date: September, 2023
KernelVersion: v6.7
Contact: linux-coco@lists.linux.dev
Description:
(WO) Attribute is visible if a TSM implementation provider
supports the concept of attestation reports for TVMs running at
different privilege levels, like SEV-SNP "VMPL", specify the
privilege level via this attribute. The minimum acceptable
value is conveyed via @privlevel_floor and the maximum
acceptable value is TSM_PRIVLEVEL_MAX (3).
What: /sys/kernel/config/tsm/report/$name/privlevel_floor
Date: September, 2023
KernelVersion: v6.7
Contact: linux-coco@lists.linux.dev
Description:
(RO) Indicates the minimum permissible value that can be written
to @privlevel.
What: /sys/kernel/config/tsm/report/$name/service_provider
Date: January, 2024
KernelVersion: v6.10
Contact: linux-coco@lists.linux.dev
Description:
(WO) Attribute is visible if a TSM implementation provider
supports the concept of attestation reports from a service
provider for TVMs, like SEV-SNP running under an SVSM.
Specifying the service provider via this attribute will create
an attestation report as specified by the service provider.
The only currently supported service provider is "svsm".
For the "svsm" service provider, see the Secure VM Service Module
for SEV-SNP Guests v1.00 Section 7. For the doc, search for
"site:amd.com "Secure VM Service Module for SEV-SNP
Guests", docID: 58019"
What: /sys/kernel/config/tsm/report/$name/service_guid
Date: January, 2024
KernelVersion: v6.10
Contact: linux-coco@lists.linux.dev
Description:
(WO) Attribute is visible if a TSM implementation provider
supports the concept of attestation reports from a service
provider for TVMs, like SEV-SNP running under an SVSM.
Specifying an empty/null GUID (00000000-0000-0000-0000-000000)
requests all active services within the service provider be
part of the attestation report. Specifying a GUID request
an attestation report of just the specified service using the
manifest form specified by the service_manifest_version
attribute.
See 'service_provider' for information on the format of the
service guid.
What: /sys/kernel/config/tsm/report/$name/service_manifest_version
Date: January, 2024
KernelVersion: v6.10
Contact: linux-coco@lists.linux.dev
Description:
(WO) Attribute is visible if a TSM implementation provider
supports the concept of attestation reports from a service
provider for TVMs, like SEV-SNP running under an SVSM.
Indicates the service manifest version requested for the
attestation report (default 0). If this field is not set by
the user, the default manifest version of the service (the
service's initial/first manifest version) is returned.
See 'service_provider' for information on the format of the
service manifest version.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Attestation report input
1-8| 항목 | 내용 |
|---|---|
| What | /sys/kernel/config/tsm/report/$name/inblob |
| Date | 2023년 9월 |
| KernelVersion | v6.7 |
| Contact | linux-coco@lists.linux.dev |
| Access | Write-only |
| Description | 사용자가 지정하는 최대 64 byte의 binary data이다. Replay protection을 위해 nonce를 포함해야 하지만 kernel은 내용에 제한을 두지 않는다. |
Provider-specific binary attestation report
10-18| 항목 | 내용 |
|---|---|
| What | /sys/kernel/config/tsm/report/$name/outblob |
| Date | 2023년 9월 |
| KernelVersion | v6.7 |
| Contact | linux-coco@lists.linux.dev |
| Access | Read-only |
| Description | @inblob과 다른 option으로 생성한 binary attestation report이다. Report 형식은 implementation마다 다르며 @provider attribute가 implementation을 알려 준다. |
Optional auxiliary와 manifest blob
20-44| Attribute | 도입 | 내용 |
|---|---|---|
| auxblob | 2023년 10월 / v6.7 | TSM이 내보낼 수 있는 선택적 supplemental data를 담는 read-only attribute이다. 노출 여부는 TSM에 달려 있고 auxiliary data가 없으면 비어 있을 수 있다. |
| manifestblob | 2024년 1월 / v6.10 | TSM이 내보낼 수 있는 선택적 supplemental manifest data를 담는 read-only attribute이다. 노출 여부는 TSM에 달려 있고 manifest data가 없으면 비어 있을 수 있다. |
@provider가 `sev_guest`이면 `auxblob`에는 SEV-ES Guest-Hypervisor Communication Block Standardization v2.03 Section 4.1.8.1 `MSG_REPORT_REQ`의 `cert_table`이 들어 있다.
`manifestblob`의 형식에 관한 정보는 `service_provider`를 참조한다.
outblob format provider
46-62| 항목 | 내용 |
|---|---|
| What | /sys/kernel/config/tsm/report/$name/provider |
| Date | 2023년 9월 |
| KernelVersion | v6.7 |
| Contact | linux-coco@lists.linux.dev |
| Access | Read-only |
| Description | @outblob의 format specification 이름이다. 가까운 시점의 예로 `sev_guest`와 `tdx_guest`가 있고, 미래에는 공통 표준 형식이 될 수 있다. |
`sev_guest`는 SEV Secure Nested Paging Firmware ABI Specification Revision 1.55 Table 22를, `tdx_guest`는 Intel Trust Domain Extensions Data Center Attestation Primitives의 Quote Generation Library 및 Quote Verification Library Revision 0.8 Appendix 4와 5를 참조한다.
동시 변경을 탐지하는 generation counter
64-74| 항목 | 내용 |
|---|---|
| What | /sys/kernel/config/tsm/report/$name/generation |
| Date | 2023년 9월 |
| KernelVersion | v6.7 |
| Contact | linux-coco@lists.linux.dev |
| Access | Read-only |
| Description | @inblob 또는 option을 쓸 때마다 값이 증가한다. |
Userspace는 attribute를 쓰기 전에 generation을 확인하고 @outblob을 읽은 뒤 write 횟수가 예상과 맞는지 검사해 conflict를 탐지할 수 있다. 또는 요청 context마다 report instance를 하나씩 만들어 conflict를 막을 수 있다.
TVM attestation privilege level
76-94| Attribute | Access | 내용 |
|---|---|---|
| privlevel | Write-only | SEV-SNP `VMPL`처럼 서로 다른 privilege level에서 실행하는 TVM의 attestation report 개념을 provider가 지원할 때 보인다. 이 attribute로 privilege level을 지정한다. 최소값은 @privlevel_floor이며 최대값은 TSM_PRIVLEVEL_MAX(3)이다. |
| privlevel_floor | Read-only | @privlevel에 쓸 수 있는 최소 허용값을 나타낸다. |
두 attribute의 공통 경로 prefix는 `/sys/kernel/config/tsm/report/$name/`이며, 도입 시점은 2023년 9월, kernel version은 v6.7, contact는 `linux-coco@lists.linux.dev`이다.
Service-provider attestation report
96-111| 항목 | 내용 |
|---|---|
| What | /sys/kernel/config/tsm/report/$name/service_provider |
| Date | 2024년 1월 |
| KernelVersion | v6.10 |
| Contact | linux-coco@lists.linux.dev |
| Access | Write-only |
| Description | SEV-SNP가 SVSM 아래에서 실행되는 경우처럼 TVM용 service provider에서 오는 attestation report 개념을 TSM provider가 지원할 때 보인다. 이 attribute로 service provider를 지정하면 해당 provider가 정의한 attestation report를 만든다. |
| 지원 값 | 현재 지원되는 service provider는 `svsm`뿐이다. |
`svsm` service provider는 Secure VM Service Module for SEV-SNP Guests v1.00 Section 7을 참조한다. 원문은 `site:amd.com "Secure VM Service Module for SEV-SNP Guests"`와 document ID `58019`로 검색하도록 안내한다.
전체 또는 특정 service GUID 선택
113-129| 항목 | 내용 |
|---|---|
| What | /sys/kernel/config/tsm/report/$name/service_guid |
| Date | 2024년 1월 |
| KernelVersion | v6.10 |
| Contact | linux-coco@lists.linux.dev |
| Access | Write-only |
| Visibility | TVM의 service-provider attestation report를 TSM provider가 지원할 때 보인다. |
빈/null GUID `00000000-0000-0000-0000-000000`를 지정하면 service provider 안의 모든 active service를 attestation report에 포함하도록 요청한다. 특정 GUID를 지정하면 `service_manifest_version` attribute가 정한 manifest 형식을 사용해 그 service만을 대상으로 report를 요청한다.
Service GUID 형식에 관한 정보는 `service_provider`를 참조한다.
요청할 service manifest version
131-145| 항목 | 내용 |
|---|---|
| What | /sys/kernel/config/tsm/report/$name/service_manifest_version |
| Date | 2024년 1월 |
| KernelVersion | v6.10 |
| Contact | linux-coco@lists.linux.dev |
| Access | Write-only |
| Visibility | TVM의 service-provider attestation report를 TSM provider가 지원할 때 보인다. |
| Description | Attestation report에 요청하는 service manifest version을 나타낸다. 기본값은 0이다. |
사용자가 이 field를 설정하지 않으면 service의 default manifest version, 즉 해당 service의 초기/첫 manifest version을 반환한다. Service manifest version 형식은 `service_provider`를 참조한다.
Report option을 쓰는 동안 generation이 증가하고, provider가 정한 형식으로 report와 선택적 supplemental blob이 생성된다.
Attestation input, report와 supplemental blob
configfs-tsm-report:1-44최대 64-byte input으로 attestation report를 만들고 provider에 따라 report, certificate table 또는 service manifest 같은 supplemental data를 제공합니다.