idnits 2.17.1 draft-ietf-rats-yang-tpm-charra-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The abstract seems to contain references ([I-D.ietf-rats-tpm-based-network-device-attest]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 144 has weird spacing: '...version ide...' == Line 148 has weird spacing: '...sh-algo ide...' == Line 172 has weird spacing: '...te-name cer...' == Line 193 has weird spacing: '...r-index pcr...' == Line 218 has weird spacing: '...-number uin...' -- The document date (December 16, 2020) is 1226 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'TPM20-hash-algo' is mentioned on line 147, but not defined == Outdated reference: A later version (-35) exists of draft-ietf-netconf-keystore-20 == Outdated reference: A later version (-22) exists of draft-ietf-rats-architecture-08 ** Downref: Normative reference to an Informational draft: draft-ietf-rats-architecture (ref. 'I-D.ietf-rats-architecture') == Outdated reference: A later version (-09) exists of draft-ietf-rats-reference-interaction-models-01 ** Downref: Normative reference to an Informational draft: draft-ietf-rats-reference-interaction-models (ref. 'I-D.ietf-rats-reference-interaction-models') == Outdated reference: A later version (-14) exists of draft-ietf-rats-tpm-based-network-device-attest-06 ** Downref: Normative reference to an Informational draft: draft-ietf-rats-tpm-based-network-device-attest (ref. 'I-D.ietf-rats-tpm-based-network-device-attest') -- Possible downref: Non-RFC (?) normative reference: ref. 'TCG-Algos' -- Obsolete informational reference (is this intentional?): RFC 5246 (Obsoleted by RFC 8446) Summary: 4 errors (**), 0 flaws (~~), 11 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 RATS Working Group H. Birkholz 3 Internet-Draft M. Eckel 4 Intended status: Standards Track Fraunhofer SIT 5 Expires: June 19, 2021 S. Bhandari 6 ThoughtSpot 7 E. Voit 8 B. Sulzen 9 Cisco 10 L. Xia 11 Huawei 12 T. Laffey 13 HPE 14 G. Fedorkow 15 Juniper 16 December 16, 2020 18 A YANG Data Model for Challenge-Response-based Remote Attestation 19 Procedures using TPMs 20 draft-ietf-rats-yang-tpm-charra-04 22 Abstract 24 This document defines a YANG RPC and a minimal datastore required to 25 retrieve attestation evidence about integrity measurements from a 26 device following the operational context defined in 27 [I-D.ietf-rats-tpm-based-network-device-attest]. Complementary 28 measurement logs are also provided by the YANG RPC originating from 29 one or more roots of trust of measurement. The module defined 30 requires at least one TPM 1.2 or TPM 2.0 and corresponding Trusted 31 Software Stack included in the device components of the composite 32 device the YANG server is running on. 34 Status of This Memo 36 This Internet-Draft is submitted in full conformance with the 37 provisions of BCP 78 and BCP 79. 39 Internet-Drafts are working documents of the Internet Engineering 40 Task Force (IETF). Note that other groups may also distribute 41 working documents as Internet-Drafts. The list of current Internet- 42 Drafts is at https://datatracker.ietf.org/drafts/current/. 44 Internet-Drafts are draft documents valid for a maximum of six months 45 and may be updated, replaced, or obsoleted by other documents at any 46 time. It is inappropriate to use Internet-Drafts as reference 47 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on June 19, 2021. 50 Copyright Notice 52 Copyright (c) 2020 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (https://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 68 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 3 69 2. The YANG Module for Basic Remote Attestation Procedures . . . 3 70 2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 71 2.2. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 6 72 2.2.1. ietf-tpm-remote-attestation . . . . . . . . . . . . . 6 73 2.2.2. ietf-tcg-algs . . . . . . . . . . . . . . . . . . . . 30 74 3. IANA considerations . . . . . . . . . . . . . . . . . . . . . 46 75 4. Security Considerations . . . . . . . . . . . . . . . . . . . 46 76 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 47 77 6. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 47 78 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 79 7.1. Normative References . . . . . . . . . . . . . . . . . . 49 80 7.2. Informative References . . . . . . . . . . . . . . . . . 50 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 83 1. Introduction 85 This document is based on the terminology defined in the 86 [I-D.ietf-rats-architecture] and uses the operational context defined 87 in [I-D.ietf-rats-tpm-based-network-device-attest] as well as the 88 interaction model and information elements defined in 89 [I-D.ietf-rats-reference-interaction-models]. The currently 90 supported hardware security modules (HWM) are the Trusted Platform 91 Module (TPM) [TPM1.2] and [TPM2.0] specified by the Trusted Computing 92 Group (TCG). One ore more TPMs embedded in the components of a 93 composite device - sometimes also referred to as an aggregate device 94 - are required in order to use the YANG module defined in this 95 document. A TPM is used as a root of trust for reporting (RTR) in 96 order to retrieve attestation evidence from a composite device (quote 97 primitive operation). Additionally, it is used as a root of trust 98 for storage (RTS) in order to retain shielded secrets and store 99 system measurements using a folding hash function (extend primitive 100 operation). 102 1.1. Requirements notation 104 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 105 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 106 "OPTIONAL" in this document are to be interpreted as described in 107 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all 108 capitals, as shown here. 110 2. The YANG Module for Basic Remote Attestation Procedures 112 One or more TPMs MUST be embedded in the composite device that is 113 providing attestation evidence via the YANG module defined in this 114 document. The ietf-basic-remote-attestation YANG module enables a 115 composite device to take on the role of Claimant and Attester in 116 accordance with the Remote Attestation Procedures (RATS) architecture 117 [I-D.ietf-rats-architecture] and the corresponding challenge-response 118 interaction model defined in the 119 [I-D.ietf-rats-reference-interaction-models] document. A fresh nonce 120 with an appropriate amount of entropy MUST be supplied by the YANG 121 client in order to enable a proof-of-freshness with respect to the 122 attestation evidence provided by the attester running the YANG 123 datastore. The functions of this YANG module are restricted to 0-1 124 TPMs per hardware component. 126 2.1. Tree Diagram 128 module: ietf-tpm-remote-attestation 129 +--rw rats-support-structures 130 +--rw compute-nodes {tpm:TPMs}? 131 | +--ro compute-node* [node-id] 132 | +--ro node-id string 133 | +--ro node-physical-index? int32 {ietfhw:entity-mib}? 134 | +--ro node-name? string 135 | +--ro node-location? string 136 +--rw tpms 137 | +--rw tpm* [tpm-name] 138 | +--rw tpm-name string 139 | +--ro hardware-based? boolean 140 | +--ro tpm-physical-index? int32 {ietfhw:entity-mib}? 141 | +--ro tpm-path? string 142 | +--ro compute-node compute-node-ref {tpm:TPMs}? 143 | +--ro tpm-manufacturer? string 144 | +--rw tpm-firmware-version identityref 145 | +--rw TPM12-hash-algo? identityref 146 | +--rw TPM12-pcrs* pcr 147 | +--rw tpm20-pcr-bank* [TPM20-hash-algo] 148 | | +--rw TPM20-hash-algo identityref 149 | | +--rw pcr-index* tpm:pcr 150 | +--ro tpm-status enumeration 151 | +--rw certificates 152 | +--rw certificate* [certificate-name] 153 | +--rw certificate-name string 154 | +--rw certificate-keystore-ref? leafref 155 | +--rw certificate-type? enumeration 156 +--rw attester-supported-algos 157 +--rw tpm12-asymmetric-signing* identityref {taa:TPM12}? 158 +--rw tpm12-hash* identityref {taa:TPM12}? 159 +--rw tpm20-asymmetric-signing* identityref {taa:TPM20}? 160 +--rw tpm20-hash* identityref {taa:TPM20}? 162 rpcs: 163 +---x tpm12-challenge-response-attestation {taa:TPM12}? 164 | +---w input 165 | | +---w tpm12-attestation-challenge 166 | | +---w pcr-index* pcr 167 | | +---w nonce-value binary 168 | | +---w certificate-name* certificate-name-ref 169 | | {tpm:TPMs}? 170 | +--ro output 171 | +--ro tpm12-attestation-response* [] 172 | +--ro certificate-name certificate-name-ref 173 | +--ro up-time? uint32 174 | +--ro TPM_QUOTE2? binary 175 +---x tpm20-challenge-response-attestation {taa:TPM20}? 176 | +---w input 177 | | +---w tpm20-attestation-challenge 178 | | +---w nonce-value binary 179 | | +---w tpm20-pcr-selection* [] 180 | | | +---w TPM20-hash-algo? identityref 181 | | | +---w pcr-index* tpm:pcr 182 | | +---w certificate-name* certificate-name-ref 183 | | {tpm:TPMs}? 184 | +--ro output 185 | +--ro tpm20-attestation-response* [] 186 | +--ro certificate-name certificate-name-ref 187 | +--ro TPMS_QUOTE_INFO binary 188 | +--ro quote-signature? binary 189 | +--ro up-time? uint32 190 | +--ro unsigned-pcr-values* [] 191 | +--ro TPM20-hash-algo? identityref 192 | +--ro pcr-values* [pcr-index] 193 | +--ro pcr-index pcr 194 | +--ro pcr-value? binary 195 +---x log-retrieval 196 +---w input 197 | +---w log-selector* [] 198 | | +---w tpm-name* string 199 | | +---w (index-type)? 200 | | | +--:(last-entry) 201 | | | | +---w last-entry-value? binary 202 | | | +--:(index) 203 | | | | +---w last-index-number? uint64 204 | | | +--:(timestamp) 205 | | | +---w timestamp? yang:date-and-time 206 | | +---w log-entry-quantity? uint16 207 | +---w log-type identityref 208 +--ro output 209 +--ro system-event-logs 210 +--ro node-data* [] 211 +--ro tpm-name? string 212 +--ro up-time? uint32 213 +--ro log-result 214 +--ro (attested_event_log_type) 215 +--:(bios) 216 | +--ro bios-event-logs 217 | +--ro bios-event-entry* [event-number] 218 | +--ro event-number uint32 219 | +--ro event-type? uint32 220 | +--ro pcr-index? pcr 221 | +--ro digest-list* [] 222 | | +--ro hash-algo? identityref 223 | | +--ro digest* binary 224 | +--ro event-size? uint32 225 | +--ro event-data* uint8 226 +--:(ima) 227 | +--ro ima-event-logs 228 | +--ro ima-event-entry* [event-number] 229 | +--ro event-number uint64 230 | +--ro ima-template? string 231 | +--ro filename-hint? string 232 | +--ro filedata-hash? binary 233 | +--ro filedata-hash-algorithm? string 234 | +--ro template-hash-algorithm? string 235 | +--ro template-hash? binary 236 | +--ro pcr-index? pcr 237 | +--ro signature? binary 238 +--:(netequip_boot) 239 +--ro boot-event-logs 240 +--ro boot-event-entry* [event-number] 241 +--ro event-number uint64 242 +--ro filename-hint? string 243 +--ro filedata-hash? binary 244 +--ro filedata-hash-algorithm? string 245 +--ro file-version? string 246 +--ro file-type? string 247 +--ro pcr-index? pcr 249 2.2. YANG Modules 251 2.2.1. ietf-tpm-remote-attestation 253 This YANG module imports modules from [RFC6991], [RFC8348], 254 [I-D.ietf-netconf-keystore], ietf-tcg-algs.yang. 256 2.2.1.1. Identities 258 This module supports the following types of attestation event logs: 259 , , and . 261 2.2.1.2. RPCs 263 - Allows a Verifier to request 264 a quote of PCRs from a TPM1.2 compliant cryptoprocessor. When one or 265 more is not provided, all TPM1.2 compliant 266 cryptoprocessors will respond. 268 - Allows a Verifier to request 269 a quote of PCRs from a TPM2.0 compliant cryptoprocessor. When one or 270 more is not provided, all TPM2.0 compliant 271 cryptoprocessors will respond. 273 - Allows a Verifier to acquire the evidence which was 274 extended into specific PCRs. 276 2.2.1.3. Data Nodes 278 container - This exists when there are more 279 than one TPM for a particular Attester. This allows each specific 280 TPM to identify on which it belongs. 282 container - Provides configuration and operational details for 283 each supported TPM, including the tpm-firmware-version, PCRs which 284 may be quoted, certificates which are associated with that TPM, and 285 the current operational status. Of note is the certificates which 286 are associated with that TPM. As a certificate is associated with a 287 single Attestation key, knowledge of the certificate allows a 288 specific TPM to be identified. 290 container - Identifies which TCG 291 algorithms are available for use the Attesting platform. This allows 292 an operator to limit algorithms available for use by RPCs to just a 293 desired set from the universe of all allowed by TCG. 295 2.2.1.4. YANG Module 297 file ietf-tpm-remote-attestation@2020-12-09.yang 298 module ietf-tpm-remote-attestation { 299 namespace "urn:ietf:params:xml:ns:yang:ietf-tpm-remote-attestation"; 300 prefix "tpm"; 302 import ietf-yang-types { 303 prefix yang; 304 } 305 import ietf-hardware { 306 prefix ietfhw; 307 } 308 import ietf-keystore { 309 prefix ks; 310 } 311 import ietf-tcg-algs { 312 prefix taa; 313 } 315 organization 316 "IETF RATS (Remote ATtestation procedureS) Working Group"; 318 contact 319 "WG Web : 320 WG List : 321 Author : Eric Voit 322 Author : Henk Birkholz 323 Author : Michael Eckel 324 Author : Shwetha Bhandari 325 Author : Bill Sulzen 326 Author : Liang Xia (Frank) 327 Author : Tom Laffey 328 Author : Guy Fedorkow "; 330 description 331 "A YANG module to enable a TPM 1.2 and TPM 2.0 based 332 remote attestation procedure using a challenge-response 333 interaction model and the TPM 1.2 and TPM 2.0 Quote 334 primitive operations. 336 Copyright (c) 2020 IETF Trust and the persons identified 337 as authors of the code. All rights reserved. 339 Redistribution and use in source and binary forms, with 340 or without modification, is permitted pursuant to, and 341 subject to the license terms contained in, the Simplified 342 BSD License set forth in Section 4.c of the IETF Trust's 343 Legal Provisions Relating to IETF Documents 344 (https://trustee.ietf.org/license-info). 346 Redistribution and use in source and binary forms, with or 347 without modification, is permitted pursuant to, and subject to 348 the license terms contained in, the Simplified BSD License set 349 forth in Section 4.c of the IETF Trust's Legal Provisions 350 Relating to IETF Documents 351 (https://trustee.ietf.org/license-info). 353 This version of this YANG module is part of RFC XXXX 354 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC 355 itself for full legal notices. 357 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 358 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 359 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 360 are to be interpreted as described in BCP 14 (RFC 2119) 361 (RFC 8174) when, and only when, they appear in all 362 capitals, as shown here."; 364 revision "2020-12-15" { 365 description 366 "Initial version"; 367 reference 368 "draft-ietf-rats-yang-tpm-charra"; 369 } 371 /*****************/ 372 /* Features */ 373 /*****************/ 375 feature TPMs { 376 description 377 "The device supports the remote attestation of multiple 378 TPM based cryptoprocessors."; 379 } 381 /*****************/ 382 /* Typedefs */ 383 /*****************/ 385 typedef pcr { 386 type uint8 { 387 range "0..31"; 388 } 389 description 390 "Valid index number for a PCR. At this point 0-31 is viable."; 391 } 393 typedef compute-node-ref { 394 type leafref { 395 path "/tpm:rats-support-structures/tpm:compute-nodes" + 396 "/tpm:compute-node/tpm:node-name"; 397 } 398 description 399 "This type is used to reference a hardware node. It is quite 400 possible this leafref will eventually point to another YANG 401 module's node."; 402 } 404 typedef certificate-name-ref { 405 type leafref { 406 path "/tpm:rats-support-structures/tpm:tpms/tpm:tpm" + 407 "/tpm:certificates/tpm:certificate/tpm:certificate-name"; 408 } 409 description 410 "A type which allows identification of a TPM based certificate."; 411 } 413 /******************/ 414 /* Identities */ 415 /******************/ 417 identity attested_event_log_type { 418 description 419 "Base identity allowing categorization of the reasons why and 420 attested measurement has been taken on an Attester."; 421 } 423 identity ima { 424 base attested_event_log_type; 425 description 426 "An event type recorded in IMA."; 427 } 429 identity bios { 430 base attested_event_log_type; 431 description 432 "An event type associated with BIOS/UEFI."; 433 } 435 identity netequip_boot { 436 base attested_event_log_type; 437 description 438 "An event type associated with Network Equipment Boot."; 439 } 441 /*****************/ 442 /* Groupings */ 443 /*****************/ 445 grouping TPM20-asymmetric-signing-algo { 446 description 447 "The signature scheme that is used to sign the TPM2 Quote 448 information response."; 449 leaf TPM20-asymmetric-signing-algo { 450 must "/tpm:rats-support-structures/tpm:attester-supported-algos" 451 + "/tpm:tpm20-asymmetric-signing" { 452 error-message "Not a platform supported " + 453 "TPM20-asymmetric-signing-algo"; 454 } 455 type identityref { 456 base taa:asymmetric; 457 } 458 description 459 "The signature scheme that is used to sign the TPM2.0 460 Quote information response. This must be one of those 461 supported by a platform."; 462 default taa:TPM_ALG_RSA; 463 } 464 } 466 grouping TPM12-asymmetric-signing-algo { 467 description 468 "The signature scheme that is used to sign the TPM12 Quote 469 information response."; 470 leaf TPM12-asymmetric-signing-algo { 471 must "/tpm:rats-support-structures/tpm:attester-supported-algos" 472 + "/tpm:tpm12-asymmetric-signing" { 473 error-message "Not a platform supported " + 474 "TPM12-asymmetric-signing-algo"; 475 } 476 type identityref { 477 base taa:asymmetric; 479 } 480 description 481 "The signature scheme that is used to sign the TPM1.2 482 Quote information response. This must be one of those 483 supported by a platform."; 484 default taa:TPM_ALG_RSA; 485 } 486 } 488 grouping TPM20-hash-algo { 489 description 490 "The cryptographic algorithm used to hash the TPM2 PCRs. This 491 must be from the list of platform supported options."; 492 leaf TPM20-hash-algo { 493 must "/tpm:rats-support-structures/tpm:attester-supported-algos" 494 + "/tpm:tpm20-hash" { 495 error-message "Not a platform supported TPM20-hash-algo"; 496 } 497 type identityref { 498 base taa:hash; 499 } 500 description 501 "The hash scheme that is used to hash a TPM1.2 PCR. This 502 must be one of those supported by a platform."; 503 default taa:TPM_ALG_SHA256; 504 } 505 } 507 grouping TPM12-hash-algo { 508 description 509 "The cryptographic algorithm used to hash the TPM1.2 PCRs."; 510 leaf TPM12-hash-algo { 511 must "/tpm:rats-support-structures/tpm:attester-supported-algos" 512 + "/tpm:tpm12-hash" { 513 error-message "Not a platform supported TPM12-hash-algo"; 514 } 515 type identityref { 516 base taa:hash; 517 } 518 description 519 "The hash scheme that is used to hash a TPM1.2 PCR. This 520 must be one of those supported by a platform. This assumes 521 that an algorithm other than SHA1 can be supported on some 522 TPM1.2 cryptoprocessor variant."; 523 default taa:TPM_ALG_SHA1; 524 } 525 } 526 grouping nonce { 527 description 528 "A nonce to show freshness and to allow the detection 529 of replay attacks."; 530 leaf nonce-value { 531 type binary; 532 mandatory true; 533 description 534 "This nonce SHOULD be generated via a registered 535 cryptographic-strength algorithm. In consequence, 536 the length of the nonce depends on the hash algorithm 537 used. The algorithm used in this case is independent 538 from the hash algorithm used to create the hash-value 539 in the response of the attestor."; 540 } 541 } 543 grouping tpm12-pcr-selection { 544 description 545 "A Verifier can request one or more PCR values using its 546 individually created Attestation Key Certificate (AC). 547 The corresponding selection filter is represented in this 548 grouping. 549 Requesting a PCR value that is not in scope of the AC used, 550 detailed exposure via error msg should be avoided."; 551 leaf-list pcr-index { 552 /* the following XPATH must be updated to ensure that only 553 selectable PCRs are allowed in the RPC 554 must "/tpm:rats-support-structures/tpm:tpms" + 555 "/tpm:tpm[tpm-name = current()]" + 556 "/tpm:tpm[TPM12-pcrs = current()]" { 557 error-message "Acquiring this PCR index is not supported"; 558 } 559 */ 560 type pcr; 561 description 562 "The numbers/indexes of the PCRs. At the moment this is limited 563 to 32."; 564 } 565 } 567 grouping tpm20-pcr-selection { 568 description 569 "A Verifier can acquire one or more PCR values, which are hashed 570 together in a TPM2B_DIGEST coming from the TPM2. The selection 571 list of desired PCRs and the Hash Algorithm is represented in 572 this grouping."; 573 list tpm20-pcr-selection { 574 unique "TPM20-hash-algo"; 575 description 576 "Specifies the list of PCRs and Hash Algorithms that can be 577 returned within a TPM2B_DIGEST."; 578 reference 579 "https://www.trustedcomputinggroup.org/wp-content/uploads/ 580 TPM-Rev-2.0-Part-2-Structures-01.38.pdf Section 10.9.7"; 581 uses TPM20-hash-algo; 582 leaf-list pcr-index { 583 /* the following XPATH must be updated to ensure that only 584 selectable PCRs are allowed in the RPC 585 must "/tpm:rats-support-structures/tpm:tpms" + 586 "/tpm:tpm[tpm-name = current()]" + 587 "/tpm:tpm20-pcr-bank[pcr-index = current()]" { 588 error-message "Acquiring this PCR index is not supported"; 589 } 590 */ 591 type tpm:pcr; 592 description 593 "The numbers of the PCRs that which are being tracked 594 with a hash based on the TPM20-hash-algo."; 595 } 596 } 597 } 599 grouping certificate-name-ref { 600 description 601 "Identifies a certificate in a keystore."; 602 leaf certificate-name { 603 type certificate-name-ref; 604 description 605 "Identifies a certificate in a keystore."; 606 mandatory true; 607 } 608 } 610 grouping tpm-name { 611 description 612 "A unique TPM on a device."; 613 leaf tpm-name { 614 type string; 615 description 616 "Unique system generated name for a TPM on a device."; 617 } 618 } 620 grouping tpm-name-selector { 621 description 622 "One or more TPM on a device."; 623 leaf-list tpm-name { 624 type string; 625 config false; 626 description 627 "Name of one or more unique TPMs on a device. If this object 628 exists, a selection should pull only the objects related to 629 these TPM(s). If it does not exist, all qualifying TPMs that 630 are 'hardware-based' equals true on the device are selected."; 631 } 632 } 634 grouping node-uptime { 635 description 636 "Uptime in seconds of the node."; 637 leaf up-time { 638 type uint32; 639 description 640 "Uptime in seconds of this node reporting its data"; 641 } 642 } 644 grouping tpm12-attestation { 645 description 646 "Contains an instance of TPM1.2 style signed cryptoprocessor 647 measurements. It is supplemented by unsigned Attester 648 information."; 649 uses node-uptime; 650 leaf TPM_QUOTE2 { 651 type binary; 652 description 653 "Result of a TPM1.2 Quote2 operation. This includes PCRs, 654 signatures, locality, the provided nonce and other data which 655 can be further parsed to appraise the Attester."; 656 reference 657 "TPM1.2 commands rev116 July 2007, Section 16.5"; 658 } 659 } 661 grouping tpm20-attestation { 662 description 663 "Contains an instance of TPM2 style signed cryptoprocessor 664 measurements. It is supplemented by unsigned Attester 665 information."; 666 leaf TPMS_QUOTE_INFO { 667 mandatory true; 668 type binary; 669 description 670 "A hash of the latest PCR values (and the hash algorithm used) 671 which have been returned from a Verifier for the selected PCRs 672 and Hash Algorithms."; 673 reference 674 "https://www.trustedcomputinggroup.org/wp-content/uploads/ 675 TPM-Rev-2.0-Part-2-Structures-01.38.pdf Section 10.12.1"; 676 } 677 leaf quote-signature { 678 type binary; 679 description 680 "Quote signature returned by TPM Quote. The signature was 681 generated using the key associated with the 682 certificate-name."; 683 } 684 uses node-uptime; 685 list unsigned-pcr-values { 686 description 687 "PCR values in each PCR bank. This might appear redundant with 688 the TPM2B_DIGEST, but that digest is calculated across multiple 689 PCRs. Having to verify across multiple PCRs does not 690 necessarily make it easy for a Verifier to appraise just the 691 minimum set of PCR information which has changed since the last 692 received TPM2B_DIGEST. Put another way, why should a Verifier 693 reconstruct the proper value of all PCR Quotes when only a 694 single PCR has changed? 696 To help this happen, if the Attester does know specific PCR 697 values, the Attester can provide these individual values via 698 'unsigned-pcr-values'. By comparing this information to the 699 what has previously been validated, it is possible for a 700 Verifier to confirm the Attester's signature while eliminating 701 significant processing."; 702 uses TPM20-hash-algo; 703 list pcr-values { 704 key pcr-index; 705 description 706 "List of one PCR bank."; 707 leaf pcr-index { 708 type pcr; 709 description 710 "PCR index number."; 711 } 712 leaf pcr-value { 713 type binary; 714 description 715 "PCR value."; 716 } 717 } 719 } 720 } 722 grouping log-identifier { 723 description 724 "Identifier for type of log to be retrieved."; 725 leaf log-type { 726 type identityref { 727 base attested_event_log_type; 728 } 729 mandatory true; 730 description 731 "The corresponding measurement log type identity."; 732 } 733 } 735 grouping boot-event-log { 736 description 737 "Defines an event log corresponding to the event that extended 738 the PCR"; 739 leaf event-number { 740 type uint32; 741 description 742 "Unique event number of this event"; 743 } 744 leaf event-type { 745 type uint32; 746 description 747 "log event type"; 748 } 749 leaf pcr-index { 750 type pcr; 751 description 752 "Defines the PCR index that this event extended"; 753 } 754 list digest-list { 755 description 756 "Hash of event data"; 757 leaf hash-algo { 758 type identityref { 759 base taa:hash; 760 } 761 description 762 "The hash scheme that is used to compress the event data in 763 each of the leaf-list digest items."; 764 } 765 leaf-list digest { 766 type binary; 767 description 768 "The hash of the event data"; 769 } 770 } 771 leaf event-size { 772 type uint32; 773 description 774 "Size of the event data"; 775 } 776 leaf-list event-data { 777 type uint8; 778 description 779 "The event data size determined by event-size"; 780 } 781 } 783 grouping bios-event-log { 784 description 785 "Measurement log created by the BIOS/UEFI."; 786 list bios-event-entry { 787 key event-number; 788 description 789 "Ordered list of TCG described event log 790 that extended the PCRs in the order they 791 were logged"; 792 uses boot-event-log; 793 } 794 } 796 grouping ima-event { 797 description 798 "Defines an hash log extend event for IMA measurements"; 799 leaf event-number { 800 type uint64; 801 description 802 "Unique number for this event for sequencing"; 803 } 804 leaf ima-template { 805 type string; 806 description 807 "Name of the template used for event logs 808 for e.g. ima, ima-ng, ima-sig"; 809 } 810 leaf filename-hint { 811 type string; 812 description 813 "File that was measured"; 815 } 816 leaf filedata-hash { 817 type binary; 818 description 819 "Hash of filedata"; 820 } 821 leaf filedata-hash-algorithm { 822 type string; 823 description 824 "Algorithm used for filedata-hash"; 825 } 826 leaf template-hash-algorithm { 827 type string; 828 description 829 "Algorithm used for template-hash"; 830 } 831 leaf template-hash { 832 type binary; 833 description 834 "hash(filedata-hash, filename-hint)"; 835 } 836 leaf pcr-index { 837 type pcr; 838 description 839 "Defines the PCR index that this event extended"; 840 } 841 leaf signature { 842 type binary; 843 description 844 "The file signature"; 845 } 846 } 848 grouping ima-event-log { 849 description 850 "Measurement log created by IMA."; 851 list ima-event-entry { 852 key event-number; 853 description 854 "Ordered list of ima event logs by event-number"; 855 uses ima-event; 856 } 857 } 859 grouping netequip-boot-event { 860 description 861 "Defines an hash log extend event for Network Equipment Boot."; 862 leaf event-number { 863 type uint64; 864 description 865 "Unique number for this event for sequencing"; 866 } 867 leaf filename-hint { 868 type string; 869 description 870 "File that was measured"; 871 } 872 leaf filedata-hash { 873 type binary; 874 description 875 "Hash of filedata"; 876 } 877 leaf filedata-hash-algorithm { 878 type string; 879 description 880 "Algorithm used for filedata-hash."; 881 } 882 leaf file-version { 883 type string; 884 description 885 "File version information."; 886 } 887 leaf file-type { 888 type string; 889 description 890 "Indicating at which boot stage the file is loaded, 891 such as BIOS, BootLoader, etc."; 892 } 893 leaf pcr-index { 894 type pcr; 895 description 896 "Defines the PCR index that this event extended"; 897 } 898 } 900 grouping network-equipment-boot-event-log { 901 description 902 "Measurement log created by Network Equipment Boot."; 903 list boot-event-entry { 904 key event-number; 905 description 906 "Ordered list of Network Equipment Boot event logs 907 by event-number."; 908 uses netequip-boot-event; 909 } 910 } 911 grouping event-logs { 912 description 913 "A selector for the log and its type."; 914 choice attested_event_log_type { 915 mandatory true; 916 description 917 "Event log type determines the event logs content."; 918 case bios { 919 description 920 "BIOS/UEFI event logs"; 921 container bios-event-logs { 922 description 923 "BIOS/UEFI event logs"; 924 uses bios-event-log; 925 } 926 } 927 case ima { 928 description 929 "IMA event logs."; 930 container ima-event-logs { 931 description 932 "IMA event logs."; 933 uses ima-event-log; 934 } 935 } 936 case netequip_boot { 937 description 938 "Network Equipment Boot event logs"; 939 container boot-event-logs { 940 description 941 "Network equipment boot event logs."; 942 uses network-equipment-boot-event-log; 943 } 944 } 945 } 946 } 948 /**********************/ 949 /* RPC operations */ 950 /**********************/ 952 rpc tpm12-challenge-response-attestation { 953 if-feature "taa:TPM12"; 954 description 955 "This RPC accepts the input for TSS TPM 1.2 commands made to the 956 attesting device."; 957 input { 958 container tpm12-attestation-challenge { 959 description 960 "This container includes every information element defined 961 in the reference challenge-response interaction model for 962 remote attestation. Corresponding values are based on 963 TPM 1.2 structure definitions"; 964 uses tpm12-pcr-selection; 965 uses nonce; 966 leaf-list certificate-name { 967 if-feature "tpm:TPMs"; 968 must "/tpm:rats-support-structures/tpm:tpms" + 969 "/tpm:tpm[tpm:tpm-firmware-version='taa:tpm12']" + 970 "/tpm:certificates/" + 971 "/tpm:certificate[certificate-name-ref=current()]" { 972 error-message "Not an available TPM1.2 AIK certificate."; 973 } 974 type certificate-name-ref; 975 description 976 "When populated, the RPC will only get a Quote for the 977 TPMs associated with these certificate(s)."; 978 } 979 } 980 } 981 output { 982 list tpm12-attestation-response { 983 unique "certificate-name"; 984 description 985 "The binary output of TPM 1.2 TPM_Quote/TPM_Quote2, including 986 the PCR selection and other associated attestation evidence 987 metadata"; 988 uses certificate-name-ref { 989 description 990 "Certificate associated with this tpm12-attestation."; 991 } 992 uses tpm12-attestation; 993 } 994 } 995 } 997 rpc tpm20-challenge-response-attestation { 998 if-feature "taa:TPM20"; 999 description 1000 "This RPC accepts the input for TSS TPM 2.0 commands of the 1001 managed device. ComponentIndex from the hardware manager YANG 1002 module to refer to dedicated TPM in composite devices, 1003 e.g. smart NICs, is still a TODO."; 1004 input { 1005 container tpm20-attestation-challenge { 1006 description 1007 "This container includes every information element defined 1008 in the reference challenge-response interaction model for 1009 remote attestation. Corresponding values are based on 1010 TPM 2.0 structure definitions"; 1011 uses nonce; 1012 uses tpm20-pcr-selection; 1013 leaf-list certificate-name { 1014 if-feature "tpm:TPMs"; 1015 must "/tpm:rats-support-structures/tpm:tpms" + 1016 "/tpm:tpm[tpm:tpm-firmware-version='taa:tpm20']" + 1017 "/tpm:certificates/" + 1018 "/tpm:certificate[certificate-name-ref=current()]" { 1019 error-message "Not an available TPM2.0 AIK certificate."; 1020 } 1021 type certificate-name-ref; 1022 description 1023 "When populated, the RPC will only get a Quote for the 1024 TPMs associated with the certificates."; 1025 } 1026 } 1027 } 1028 output { 1029 list tpm20-attestation-response { 1030 unique "certificate-name"; 1031 description 1032 "The binary output of TPM2b_Quote in one TPM chip of the 1033 node which identified by node-id. An TPMS_ATTEST structure 1034 including a length, encapsulated in a signature"; 1035 uses certificate-name-ref { 1036 description 1037 "Certificate associated with this tpm20-attestation."; 1038 } 1039 uses tpm20-attestation; 1040 } 1041 } 1042 } 1044 rpc log-retrieval { 1045 description 1046 "Logs Entries are either identified via indices or via providing 1047 the last line received. The number of lines returned can be 1048 limited. The type of log is a choice that can be augmented."; 1049 input { 1050 list log-selector { 1051 description 1052 "Selection of log entries to be reported."; 1053 uses tpm-name-selector; 1054 choice index-type { 1055 description 1056 "Last log entry received, log index number, or timestamp."; 1057 case last-entry { 1058 description 1059 "The last entry of the log already retrieved."; 1060 leaf last-entry-value { 1061 type binary; 1062 description 1063 "Content of an log event which matches 1:1 with a 1064 unique event record contained within the log. Log 1065 entries subsequent to this will be passed to the 1066 requester. Note: if log entry values are not unique, 1067 this MUST return an error."; 1068 } 1069 } 1070 case index { 1071 description 1072 "Numeric index of the last log entry retrieved, or 1073 zero."; 1074 leaf last-index-number { 1075 type uint64; 1076 description 1077 "The last numeric index number of a log entry. 1078 Zero means to start at the beginning of the log. 1079 Entries subsequent to this will be passed to the 1080 requester."; 1081 } 1082 } 1083 case timestamp { 1084 leaf timestamp { 1085 type yang:date-and-time; 1086 description 1087 "Timestamp from which to start the extraction. The 1088 next log entry subsequent to this timestamp is to 1089 be sent."; 1090 } 1091 description 1092 "Timestamp from which to start the extraction."; 1093 } 1094 } 1095 leaf log-entry-quantity { 1096 type uint16; 1097 description 1098 "The number of log entries to be returned. If omitted, it 1099 means all of them."; 1100 } 1101 } 1102 uses log-identifier; 1104 } 1106 output { 1107 container system-event-logs { 1108 description 1109 "The requested data of the measurement event logs"; 1110 list node-data { 1111 unique "tpm-name"; 1112 description 1113 "Event logs of a node in a distributed system 1114 identified by the node name"; 1115 uses tpm-name; 1116 uses node-uptime; 1117 container log-result { 1118 description 1119 "The requested entries of the corresponding log."; 1120 uses event-logs; 1121 } 1122 } 1123 } 1124 } 1125 } 1127 /**************************************/ 1128 /* Config & Oper accessible nodes */ 1129 /**************************************/ 1131 container rats-support-structures { 1132 description 1133 "The datastore definition enabling verifiers or relying 1134 parties to discover the information necessary to use the 1135 remote attestation RPCs appropriately."; 1136 container compute-nodes { 1137 if-feature "tpm:TPMs"; 1138 description 1139 "Holds the set device subsystems/components in this composite 1140 device that support TPM operations."; 1141 list compute-node { 1142 key node-id; 1143 config false; 1144 min-elements 2; 1145 description 1146 "A component in this composite device that 1147 supports TPM operations."; 1148 leaf node-id { 1149 type string; 1150 description 1151 "ID of the compute node, such as Board Serial Number."; 1153 } 1154 leaf node-physical-index { 1155 if-feature ietfhw:entity-mib; 1156 type int32 { 1157 range "1..2147483647"; 1158 } 1159 config false; 1160 description 1161 "The entPhysicalIndex for the compute node."; 1162 reference 1163 "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex"; 1164 } 1165 leaf node-name { 1166 type string; 1167 description 1168 "Name of the compute node."; 1169 } 1170 leaf node-location { 1171 type string; 1172 description 1173 "Location of the compute node, such as slot number."; 1174 } 1175 } 1176 } 1177 container tpms { 1178 description 1179 "Holds the set of TPMs within an Attester."; 1180 list tpm { 1181 key tpm-name; 1182 unique "tpm-path"; 1183 description 1184 "A list of TPMs in this composite device that RATS 1185 can be conducted with."; 1186 uses tpm-name; 1187 leaf hardware-based { 1188 type boolean; 1189 config false; 1190 description 1191 "Answers the question: is this TPM is a hardware based 1192 TPM?"; 1193 } 1194 leaf tpm-physical-index { 1195 if-feature ietfhw:entity-mib; 1196 type int32 { 1197 range "1..2147483647"; 1198 } 1199 config false; 1200 description 1201 "The entPhysicalIndex for the TPM."; 1202 reference 1203 "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex"; 1204 } 1205 leaf tpm-path { 1206 type string; 1207 config false; 1208 description 1209 "Path to a unique TPM on a device. This can change agross 1210 reboots."; 1211 } 1212 leaf compute-node { 1213 if-feature "tpm:TPMs"; 1214 type compute-node-ref; 1215 config false; 1216 mandatory true; 1217 description 1218 "When there is more that one TPM, this indicates for which 1219 compute node this TPM services."; 1220 } 1221 leaf tpm-manufacturer { 1222 type string; 1223 config false; 1224 description 1225 "TPM manufacturer name."; 1226 } 1227 leaf tpm-firmware-version { 1228 type identityref { 1229 base taa:cryptoprocessor; 1230 } 1231 mandatory true; 1232 description 1233 "Identifies the cryptoprocessor API set supported. This 1234 cannot be configured. However it is referenced via XPATH 1235 as part of configuration, so is shown as 'rw' 1236 to eliminate YANG warnings related NMDA."; 1237 } 1238 uses TPM12-hash-algo { 1239 when "tpm-firmware-version = 'taa:tpm12'"; 1240 refine TPM12-hash-algo { 1241 description 1242 "The hash algorithm overwrites the default used for PCRs 1243 on this TPM1.2 compliant cryptoprocessor."; 1244 } 1245 } 1246 leaf-list TPM12-pcrs { 1247 when "../tpm-firmware-version = 'taa:tpm12'"; 1248 type pcr; 1249 description 1250 "The PCRs which may be extracted from this TPM1.2 1251 compliant cryptoprocessor."; 1252 } 1253 list tpm20-pcr-bank { 1254 when "../tpm-firmware-version = 'taa:tpm20'"; 1255 key "TPM20-hash-algo"; 1256 description 1257 "Specifies the list of PCRs that may be extracted for 1258 a specific Hash Algorithm on this TPM2 compliant 1259 cryptoprocessor. A bank is a set of PCRs which are 1260 extended using a particular hash algorithm."; 1261 reference 1262 "https://www.trustedcomputinggroup.org/wp-content/uploads/ 1263 TPM-Rev-2.0-Part-2-Structures-01.38.pdf Section 10.9.7"; 1264 leaf TPM20-hash-algo { 1265 must "/tpm:rats-support-structures" 1266 + "/tpm:attester-supported-algos" 1267 + "/tpm:tpm20-hash" { 1268 error-message "Not a platform supported TPM20-hash-algo"; 1269 } 1270 type identityref { 1271 base taa:hash; 1272 } 1273 description 1274 "The hash scheme actively being used to hash a 1275 one or more TPM2.0 PCRs."; 1276 } 1277 leaf-list pcr-index { 1278 type tpm:pcr; 1279 description 1280 "Defines what TPM2 PCRs are available to be extracted."; 1281 } 1282 } 1283 leaf tpm-status { 1284 type enumeration { 1285 enum operational { 1286 value 0; 1287 description 1288 "The TPM currently is currently running normally and 1289 is ready to accept and process TPM quotes."; 1290 reference 1291 "TPM-Rev-2.0-Part-1-Architecture-01.07-2014-03-13.pdf 1292 Section 12"; 1293 } 1294 enum non-operational { 1295 value 1; 1296 description 1297 "TPM is in a state such as startup or shutdown which 1298 precludes the processing of TPM quotes."; 1299 } 1300 } 1301 config false; 1302 mandatory true; 1303 description 1304 "TPM chip self-test status."; 1305 } 1306 container certificates { 1307 description 1308 "The TPM's certificates, including EK certificates 1309 and AK certificates."; 1310 list certificate { 1311 key "certificate-name"; 1312 description 1313 "Three types of certificates can be accessed via 1314 this statement, including Initial Attestation 1315 Key Cert, Local Attestation Key Cert or 1316 Endorsement Key Cert."; 1317 leaf certificate-name { 1318 type string; 1319 description 1320 "An arbitrary name uniquely identifying a certificate 1321 associated within key within a TPM."; 1322 } 1323 leaf certificate-keystore-ref { 1324 type leafref { 1325 path "/ks:keystore/ks:asymmetric-keys/ks:asymmetric-key" 1326 + "/ks:certificates/ks:certificate/ks:name"; 1327 } 1328 description 1329 "A reference to a specific certificate of an 1330 asymmetric key in the Keystore."; 1331 /* Note: It is also possible to import a grouping which 1332 allows local definition via an imported keystore 1333 schema. */ 1334 } 1335 leaf certificate-type { 1336 type enumeration { 1337 enum endorsement-cert { 1338 value 0; 1339 description 1340 "Endorsement Key (EK) Certificate type."; 1341 } 1342 enum initial-attestation-cert { 1343 value 1; 1344 description 1345 "Initial Attestation key (IAK) Certificate type."; 1346 } 1347 enum local-attestation-cert { 1348 value 2; 1349 description 1350 "Local Attestation Key (LAK) Certificate type."; 1351 } 1352 } 1353 description 1354 "Type of this certificate"; 1355 } 1356 } 1357 } 1358 } 1359 } 1360 container attester-supported-algos { 1361 description 1362 "Identifies which TPM algorithms are available for use on an 1363 attesting platform."; 1364 leaf-list tpm12-asymmetric-signing { 1365 if-feature "taa:TPM12"; 1366 when "../../tpm:tpms" + 1367 "/tpm:tpm[tpm:tpm-firmware-version='taa:tpm12']"; 1368 type identityref { 1369 base taa:asymmetric; 1370 } 1371 description 1372 "Platform Supported TPM12 asymmetric algorithms."; 1373 } 1374 leaf-list tpm12-hash { 1375 if-feature "taa:TPM12"; 1376 when "../../tpm:tpms" + 1377 "/tpm:tpm[tpm:tpm-firmware-version='taa:tpm12']"; 1378 type identityref { 1379 base taa:hash; 1380 } 1381 description 1382 "Platform supported TPM12 hash algorithms."; 1383 } 1384 leaf-list tpm20-asymmetric-signing { 1385 if-feature "taa:TPM20"; 1386 when "../../tpm:tpms" + 1387 "/tpm:tpm[tpm:tpm-firmware-version='taa:tpm20']"; 1388 type identityref { 1389 base taa:asymmetric; 1390 } 1391 description 1392 "Platform Supported TPM20 asymmetric algorithms."; 1394 } 1395 leaf-list tpm20-hash { 1396 if-feature "taa:TPM20"; 1397 when "../../tpm:tpms" + 1398 "/tpm:tpm[tpm:tpm-firmware-version='taa:tpm20']"; 1399 type identityref { 1400 base taa:hash; 1401 } 1402 description 1403 "Platform supported TPM20 hash algorithms."; 1404 } 1405 } 1406 } 1407 } 1408 1410 2.2.2. ietf-tcg-algs 1412 Cryptographic algorithm types were initially included within -v14 1413 NETCONF's iana-crypto-types.yang. Unfortunately all this content 1414 including the algorithms needed here failed to make the -v15 used 1415 WGLC. As a result this document has encoded the TCG Algorithm 1416 definitions of [TCG-Algos], revision 1.32. By including this full 1417 table as a separate YANG file within this document, it is possible 1418 for other YANG models to leverage the contents of this model. 1420 2.2.2.1. Features 1422 There are two types of features supported and . 1423 Support for either of these features indicates that a cryptoprocessor 1424 supporting the corresponding type of TCG API is present on an 1425 Attester. Most commonly, only one type of cryptoprocessor will be 1426 available on an Attester. 1428 2.2.2.2. Identities 1430 There are three types of identities in this model. 1432 The first are the cryptographic functions supportable by a TPM 1433 algorithm, these include: , , , 1434 , , , , and 1435 . The definitions of each of these are in Table 2 of 1436 [TCG-Algos]. 1438 The second are API specifications for tpms: and . 1440 The third are specific algorithm types. Each algorithm type defines 1441 what cryptographic functions may be supported, and on which type of 1442 API specification. It is not required that an implementation of a 1443 specific TPM will support all algorithm types. The contents of each 1444 specific algorithm mirrors what is in Table 3 of [TCG-Algos]. 1446 2.2.2.3. YANG Module 1448 ietf-tcg-algs@2020-09-18.yang 1449 module ietf-tcg-algs { 1450 yang-version 1.1; 1451 namespace "urn:ietf:params:xml:ns:yang:ietf-tcg-algs"; 1452 prefix taa; 1454 organization 1455 "IETF RATS Working Group"; 1457 contact 1458 "WG Web: 1459 WG List: 1460 Author: Eric Voit "; 1462 description 1463 "This module defines a identities for asymmetric algorithms. 1465 Copyright (c) 2020 IETF Trust and the persons identified 1466 as authors of the code. All rights reserved. 1467 Redistribution and use in source and binary forms, with 1468 or without modification, is permitted pursuant to, and 1469 subject to the license terms contained in, the Simplified 1470 BSD License set forth in Section 4.c of the IETF Trust's 1471 Legal Provisions Relating to IETF Documents 1472 (https://trustee.ietf.org/license-info). 1473 This version of this YANG module is part of RFC XXXX 1474 (https://www.rfc-editor.org/info/rfcXXXX); see the RFC 1475 itself for full legal notices. 1476 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 1477 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 1478 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 1479 are to be interpreted as described in BCP 14 (RFC 2119) 1480 (RFC 8174) when, and only when, they appear in all 1481 capitals, as shown here."; 1483 revision 2020-09-18 { 1484 description 1485 "Initial version"; 1486 reference 1487 "RFC XXXX: tbd"; 1488 } 1489 /*****************/ 1490 /* Features */ 1491 /*****************/ 1493 feature TPM12 { 1494 description 1495 "This feature indicates algorithm support for the TPM 1.2 API 1496 as per TPM-main-1.2-Rev94-part-2, Section 4.8."; 1497 } 1499 feature TPM20 { 1500 description 1501 "This feature indicates algorithm support for the TPM 2.0 API 1502 as per TPM-Rev-2.0-Part-1-Architecture-01.38 Section 11.4."; 1503 } 1505 /*****************/ 1506 /* Identities */ 1507 /*****************/ 1509 /* There needs to be collasping/verification of some of the identity 1510 types between the various algorithm types listed below */ 1512 identity asymmetric { 1513 description 1514 "A TCG recognized asymmetric algorithm with a public and 1515 private key."; 1516 reference 1517 "http://trustedcomputinggroup.org/resource/tcg-algorithm-registry/ 1518 TCG_Algorithm_Registry_r1p32_pub Table 2"; 1519 } 1521 identity symmetric { 1522 description 1523 "A TCG recognized symmetric algorithm with only a private key."; 1524 reference 1525 "TCG_Algorithm_Registry_r1p32_pub Table 2"; 1526 } 1528 identity hash { 1529 description 1530 "A TCG recognized hash algorithm that compresses input data to 1531 a digest value or indicates a method that uses a hash."; 1532 reference 1533 "TCG_Algorithm_Registry_r1p32_pub Table 2"; 1534 } 1535 identity signing { 1536 description 1537 "A TCG recognized signing algorithm"; 1538 reference 1539 "TCG_Algorithm_Registry_r1p32_pub Table 2"; 1540 } 1542 identity anonymous_signing { 1543 description 1544 "A TCG recognized anonymous signing algorithm."; 1545 reference 1546 "TCG_Algorithm_Registry_r1p32_pub Table 2"; 1547 } 1549 identity encryption_mode { 1550 description 1551 "A TCG recognized encryption mode."; 1552 reference 1553 "TCG_Algorithm_Registry_r1p32_pub Table 2"; 1554 } 1556 identity method { 1557 description 1558 "A TCG recognized method such as a mask generation function."; 1559 reference 1560 "TCG_Algorithm_Registry_r1p32_pub Table 2"; 1561 } 1563 identity object_type { 1564 description 1565 "A TCG recognized object type."; 1566 reference 1567 "TCG_Algorithm_Registry_r1p32_pub Table 2"; 1568 } 1570 identity cryptoprocessor { 1571 description 1572 "Base identity identifying a crytoprocessor."; 1573 } 1575 identity tpm12 { 1576 if-feature "TPM12"; 1577 base cryptoprocessor; 1578 description 1579 "Supportable by a TPM1.2."; 1580 reference 1581 "TPM-Main-Part-2-TPM-Structures_v1.2_rev116_01032011.pdf 1582 TPM_ALGORITHM_ID values, page 18"; 1584 } 1586 identity tpm20 { 1587 if-feature "TPM12"; 1588 base cryptoprocessor; 1589 description 1590 "Supportable by a TPM2."; 1591 reference 1592 "TPM-Rev-2.0-Part-2-Structures-01.38.pdf 1593 The TCG Algorithm Registry. Table 9"; 1594 } 1596 identity TPM_ALG_RSA { 1597 if-feature "TPM12 or TPM20"; 1598 base tpm12; 1599 base tpm20; 1600 base asymmetric; 1601 base object_type; 1602 description 1603 "RSA algorithm"; 1604 reference 1605 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1606 RFC 8017. ALG_ID: 0x0001"; 1608 } 1610 identity TPM_ALG_TDES { 1611 if-feature "TPM12"; 1612 base tpm12; 1613 base symmetric; 1614 description 1615 "Block cipher with various key sizes (Triple Data Encryption 1616 Algorithm, commonly called Triple Data Encryption Standard) 1617 Note: was banned in TPM1.2 v94"; 1618 reference 1619 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1620 ISO/IEC 18033-3. ALG_ID: 0x0003"; 1622 } 1624 identity TPM_ALG_SHA1 { 1625 if-feature "TPM12 or TPM20"; 1626 base hash; 1627 base tpm12; 1628 base tpm20; 1629 description 1630 "SHA1 algorithm - Deprecated due to insufficient cryptographic 1631 protection. However it is still useful for hash algorithms 1632 where protection is not required."; 1633 reference 1634 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1635 ISO/IEC 10118-3. ALG_ID: 0x0004"; 1637 } 1639 identity TPM_ALG_HMAC { 1640 if-feature "TPM12 or TPM20"; 1641 base tpm12; 1642 base tpm20; 1643 base hash; 1644 base signing; 1645 description 1646 "Hash Message Authentication Code (HMAC) algorithm"; 1647 reference 1648 "TCG_Algorithm_Registry_r1p32_pub Table 3, 1649 ISO/IEC 9797-2 and RFC2014. ALG_ID: 0x0005"; 1651 } 1653 identity TPM_ALG_AES { 1654 if-feature "TPM12"; 1655 base tpm12; 1656 base symmetric; 1657 description 1658 "The AES algorithm with various key sizes"; 1659 reference 1660 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1661 ISO/IEC 18033-3. ALG_ID: 0x0006"; 1663 } 1665 identity TPM_ALG_MGF1 { 1666 if-feature "TPM20"; 1667 base tpm20; 1668 base hash; 1669 base method; 1670 description 1671 "hash-based mask-generation function"; 1672 reference 1673 "TCG_Algorithm_Registry_r1p32_pub Table 3, 1674 IEEE Std 1363-2000 and IEEE Std 1363a -2004. 1675 ALG_ID: 0x0007"; 1677 } 1679 identity TPM_ALG_KEYEDHASH { 1680 if-feature "TPM20"; 1681 base tpm20; 1682 base hash; 1683 base object_type; 1684 description 1685 "An encryption or signing algorithm using a keyed hash. These 1686 may use XOR for encryption or an HMAC for signing and may 1687 also refer to a data object that is neither signing nor 1688 encrypting."; 1689 reference 1690 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1691 TCG TPM 2.0 library specification. . ALG_ID: 0x0008"; 1693 } 1695 identity TPM_ALG_XOR { 1696 if-feature "TPM12 or TPM20"; 1697 base tpm12; 1698 base tpm20; 1699 base hash; 1700 base symmetric; 1701 description 1702 "The XOR encryption algorithm."; 1703 reference 1704 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1705 TCG TPM 2.0 library specification. ALG_ID: 0x000A"; 1707 } 1709 identity TPM_ALG_SHA256 { 1710 if-feature "TPM20"; 1711 base tpm20; 1712 base hash; 1713 description 1714 "The SHA 256 algorithm"; 1715 reference 1716 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1717 ISO/IEC 10118-3. ALG_ID: 0x000B"; 1719 } 1721 identity TPM_ALG_SHA384 { 1722 if-feature "TPM20"; 1723 base tpm20; 1724 base hash; 1725 description 1726 "The SHA 384 algorithm"; 1727 reference 1728 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1729 ISO/IEC 10118-3. ALG_ID: 0x000C"; 1731 } 1733 identity TPM_ALG_SHA512 { 1734 if-feature "TPM20"; 1735 base tpm20; 1736 base hash; 1737 description 1738 "The SHA 512 algorithm"; 1739 reference 1740 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1741 ISO/IEC 10118-3. ALG_ID: 0x000D"; 1743 } 1745 identity TPM_ALG_NULL { 1746 if-feature "TPM20"; 1747 base tpm20; 1748 description 1749 "NULL algorithm"; 1750 reference 1751 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1752 TCG TPM 2.0 library specification. ALG_ID: 0x0010"; 1754 } 1756 identity TPM_ALG_SM3_256 { 1757 if-feature "TPM20"; 1758 base tpm20; 1759 base hash; 1760 description 1761 "The SM3 hash algorithm."; 1762 reference 1763 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1764 GM/T 0004-2012 - SM3_256. ALG_ID: 0x0012"; 1766 } 1768 identity TPM_ALG_SM4 { 1769 if-feature "TPM20"; 1770 base tpm20; 1771 base symmetric; 1772 description 1773 "SM4 symmetric block cipher"; 1774 reference 1775 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1776 GB/T 32907-2016. ALG_ID: 0x0013"; 1778 } 1780 identity TPM_ALG_RSASSA { 1781 if-feature "TPM20"; 1782 base tpm20; 1783 base asymmetric; 1784 base signing; 1785 description 1786 "Signature algorithm defined in section 8.2 (RSASSAPKCS1-v1_5)"; 1787 reference 1788 "TCG_Algorithm_Registry_r1p32_pub Table 3 and RFC 8017. 1789 ALG_ID: 0x0014"; 1791 } 1793 identity TPM_ALG_RSAES { 1794 if-feature "TPM20"; 1795 base tpm20; 1796 base asymmetric; 1797 base encryption_mode; 1798 description 1799 "Signature algorithm defined in section 7.2 (RSAES-PKCS1-v1_5)"; 1800 reference 1801 "TCG_Algorithm_Registry_r1p32_pub Table 3 and RFC 8017 1802 ALG_ID: 0x0015"; 1804 } 1806 identity TPM_ALG_RSAPSS { 1807 if-feature "TPM20"; 1808 base tpm20; 1809 base asymmetric; 1810 base signing; 1811 description 1812 "Padding algorithm defined in section 8.1 (RSASSA PSS)"; 1813 reference 1814 "TCG_Algorithm_Registry_r1p32_pub Table 3 and RFC 8017. 1815 ALG_ID: 0x0016"; 1817 } 1819 identity TPM_ALG_OAEP { 1820 if-feature "TPM20"; 1821 base tpm20; 1822 base asymmetric; 1823 base encryption_mode; 1824 description 1825 "Padding algorithm defined in section 7.1 (RSASSA OAEP)"; 1826 reference 1827 "TCG_Algorithm_Registry_r1p32_pub Table 3 and RFC 8017. 1828 ALG_ID: 0x0017"; 1830 } 1832 identity TPM_ALG_ECDSA { 1833 if-feature "TPM20"; 1834 base tpm20; 1835 base asymmetric; 1836 base signing; 1837 description 1838 "Signature algorithm using elliptic curve cryptography (ECC)"; 1839 reference 1840 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1841 ISO/IEC 14888-3. ALG_ID: 0x0018"; 1843 } 1845 identity TPM_ALG_ECDH { 1846 if-feature "TPM20"; 1847 base tpm20; 1848 base asymmetric; 1849 base method; 1850 description 1851 "Secret sharing using ECC"; 1852 reference 1853 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1854 NIST SP800-56A and RFC 7748. ALG_ID: 0x0019"; 1856 } 1858 identity TPM_ALG_ECDAA { 1859 if-feature "TPM20"; 1860 base tpm20; 1861 base asymmetric; 1862 base signing; 1863 base anonymous_signing; 1864 description 1865 "Elliptic-curve based anonymous signing scheme"; 1866 reference 1867 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1868 TCG TPM 2.0 library specification. ALG_ID: 0x001A"; 1870 } 1871 identity TPM_ALG_SM2 { 1872 if-feature "TPM20"; 1873 base tpm20; 1874 base asymmetric; 1875 base signing; 1876 base encryption_mode; 1877 base method; 1878 description 1879 "SM2 - depending on context, either an elliptic-curve based, 1880 signature algorithm, an encryption scheme, or a key exchange 1881 protocol"; 1882 reference 1883 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1884 A GM/T 0003.1-2012, GM/T 0003.2-2012, GM/T 0003.3-2012, 1885 GM/T 0003.5-2012 SM2. ALG_ID: 0x001B"; 1887 } 1889 identity TPM_ALG_ECSCHNORR { 1890 if-feature "TPM20"; 1891 base tpm20; 1892 base asymmetric; 1893 base signing; 1894 description 1895 "Elliptic-curve based Schnorr signature"; 1896 reference 1897 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1898 TCG TPM 2.0 library specification. ALG_ID: 0x001C"; 1900 } 1902 identity TPM_ALG_ECMQV { 1903 if-feature "TPM20"; 1904 base tpm20; 1905 base asymmetric; 1906 base method; 1907 description 1908 "Two-phase elliptic-curve key"; 1909 reference 1910 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1911 NIST SP800-56A. ALG_ID: 0x001D"; 1913 } 1915 identity TPM_ALG_KDF1_SP800_56A { 1916 if-feature "TPM20"; 1917 base tpm20; 1918 base hash; 1919 base method; 1920 description 1921 "Concatenation key derivation function"; 1922 reference 1923 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1924 NIST SP800-56A (approved alternative1) section 5.8.1. 1925 ALG_ID: 0x0020"; 1927 } 1929 identity TPM_ALG_KDF2 { 1930 if-feature "TPM20"; 1931 base tpm20; 1932 base hash; 1933 base method; 1934 description 1935 "Key derivation function"; 1936 reference 1937 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1938 IEEE 1363a-2004 KDF2 section 13.2. ALG_ID: 0x0021"; 1940 } 1942 identity TPM_ALG_KDF1_SP800_108 { 1943 base TPM_ALG_KDF2; 1944 description 1945 "A key derivation method"; 1946 reference 1947 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1948 NIST SP800-108 - Section 5.1 KDF. ALG_ID: 0x0022"; 1950 } 1952 identity TPM_ALG_ECC { 1953 if-feature "TPM20"; 1954 base tpm20; 1955 base asymmetric; 1956 base object_type; 1957 description 1958 "Prime field ECC"; 1959 reference 1960 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1961 ISO/IEC 15946-1. ALG_ID: 0x0023"; 1963 } 1965 identity TPM_ALG_SYMCIPHER { 1966 if-feature "TPM20"; 1967 base tpm20; 1968 description 1969 "Object type for a symmetric block cipher"; 1970 reference 1971 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1972 TCG TPM 2.0 library specification. ALG_ID: 0x0025"; 1974 } 1976 identity TPM_ALG_CAMELLIA { 1977 if-feature "TPM20"; 1978 base tpm20; 1979 base symmetric; 1980 description 1981 "The Camellia algorithm"; 1982 reference 1983 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1984 ISO/IEC 18033-3. ALG_ID: 0x0026"; 1986 } 1988 identity TPM_ALG_SHA3_256 { 1989 if-feature "TPM20"; 1990 base tpm20; 1991 base hash; 1992 description 1993 "ISO/IEC 10118-3 - the SHA 256 algorithm"; 1994 reference 1995 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 1996 NIST PUB FIPS 202. ALG_ID: 0x0027"; 1998 } 2000 identity TPM_ALG_SHA3_384 { 2001 if-feature "TPM20"; 2002 base tpm20; 2003 base hash; 2004 description 2005 "The SHA 384 algorithm"; 2006 reference 2007 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2008 NIST PUB FIPS 202. ALG_ID: 0x0028"; 2010 } 2012 identity TPM_ALG_SHA3_512 { 2013 if-feature "TPM20"; 2014 base tpm20; 2015 base hash; 2016 description 2017 "The SHA 512 algorithm"; 2018 reference 2019 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2020 NIST PUB FIPS 202. ALG_ID: 0x0029"; 2022 } 2024 identity TPM_ALG_CMAC { 2025 if-feature "TPM20"; 2026 base tpm20; 2027 base symmetric; 2028 base signing; 2029 description 2030 "block Cipher-based Message Authentication Code (CMAC)"; 2031 reference 2032 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2033 ISO/IEC 9797-1:2011 Algorithm 5. ALG_ID: 0x003F"; 2035 } 2037 identity TPM_ALG_CTR { 2038 if-feature "TPM20"; 2039 base tpm20; 2040 base symmetric; 2041 base encryption_mode; 2042 description 2043 "Counter mode"; 2044 reference 2045 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2046 ISO/IEC 10116. ALG_ID: 0x0040"; 2048 } 2050 identity TPM_ALG_OFB { 2051 base tpm20; 2052 base symmetric; 2053 base encryption_mode; 2054 description 2055 "Output Feedback mode"; 2056 reference 2057 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2058 ISO/IEC 10116. ALG_ID: 0x0041"; 2060 } 2062 identity TPM_ALG_CBC { 2063 if-feature "TPM20"; 2064 base tpm20; 2065 base symmetric; 2066 base encryption_mode; 2067 description 2068 "Cipher Block Chaining mode"; 2069 reference 2070 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2071 ISO/IEC 10116. ALG_ID: 0x0042"; 2073 } 2075 identity TPM_ALG_CFB { 2076 if-feature "TPM20"; 2077 base tpm20; 2078 base symmetric; 2079 base encryption_mode; 2080 description 2081 "Cipher Feedback mode"; 2082 reference 2083 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2084 ISO/IEC 10116. ALG_ID: 0x0043"; 2086 } 2088 identity TPM_ALG_ECB { 2089 if-feature "TPM20"; 2090 base tpm20; 2091 base symmetric; 2092 base encryption_mode; 2093 description 2094 "Electronic Codebook mode"; 2095 reference 2096 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2097 ISO/IEC 10116. ALG_ID: 0x0044"; 2099 } 2101 identity TPM_ALG_CCM { 2102 if-feature "TPM20"; 2103 base tpm20; 2104 base symmetric; 2105 base signing; 2106 base encryption_mode; 2107 description 2108 "Counter with Cipher Block Chaining-Message Authentication 2109 Code (CCM)"; 2110 reference 2111 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2112 NIST SP800-38C. ALG_ID: 0x0050"; 2114 } 2116 identity TPM_ALG_GCM { 2117 if-feature "TPM20"; 2118 base tpm20; 2119 base symmetric; 2120 base signing; 2121 base encryption_mode; 2122 description 2123 "Galois/Counter Mode (GCM)"; 2124 reference 2125 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2126 NIST SP800-38D. ALG_ID: 0x0051"; 2128 } 2130 identity TPM_ALG_KW { 2131 if-feature "TPM20"; 2132 base tpm20; 2133 base symmetric; 2134 base signing; 2135 base encryption_mode; 2136 description 2137 "AES Key Wrap (KW)"; 2138 reference 2139 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2140 NIST SP800-38F. ALG_ID: 0x0052"; 2142 } 2144 identity TPM_ALG_KWP { 2145 if-feature "TPM20"; 2146 base tpm20; 2147 base symmetric; 2148 base signing; 2149 base encryption_mode; 2150 description 2151 "AES Key Wrap with Padding (KWP)"; 2152 reference 2153 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2154 NIST SP800-38F. ALG_ID: 0x0053"; 2156 } 2158 identity TPM_ALG_EAX { 2159 if-feature "TPM20"; 2160 base tpm20; 2161 base symmetric; 2162 base signing; 2163 base encryption_mode; 2164 description 2165 "Authenticated-Encryption Mode"; 2166 reference 2167 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2168 NIST SP800-38F. ALG_ID: 0x0054"; 2170 } 2172 identity TPM_ALG_EDDSA { 2173 if-feature "TPM20"; 2174 base tpm20; 2175 base asymmetric; 2176 base signing; 2177 description 2178 "Edwards-curve Digital Signature Algorithm (PureEdDSA)"; 2179 reference 2180 "TCG_Algorithm_Registry_r1p32_pub Table 3 and 2181 RFC 8032. ALG_ID: 0x0060"; 2183 } 2185 } 2186 2188 Note that not all cryptographic functions are required for use by 2189 ietf-tpm-remote-attestation.yang. However the full definition of 2190 Table 3 of [TCG-Algos] will allow use by additional YANG 2191 specifications. 2193 3. IANA considerations 2195 This document will include requests to IANA: 2197 To be defined yet. But keeping up with changes to ietf-tcg-algs.yang 2198 will be necessary. 2200 4. Security Considerations 2202 The YANG module specified in this document defines a schema for data 2203 that is designed to be accessed via network management protocols such 2204 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 2205 is the secure transport layer, and the mandatory-to-implement secure 2206 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 2207 is HTTPS, and the mandatory-to-implement secure transport is TLS 2208 [RFC5246]. 2210 There are a number of data nodes defined in this YANG module that are 2211 writable/creatable/deletable (i.e., config true, which is the 2212 default). These data nodes may be considered sensitive or vulnerable 2213 in some network environments. Write operations (e.g., edit-config) 2214 to these data nodes without proper protection can have a negative 2215 effect on network operations. These are the subtrees and data nodes 2216 and their sensitivity/vulnerability: 2218 Container: 2220 o , , , and all could be populated with algorithms 2222 which are not supported by the underlying physical TPM installed 2223 by the equipment vendor. 2225 Container: 2227 o - Although shown as 'rw', it is system generated 2229 o - It is possible to configure PCRs for extraction 2230 which are not being extended by system software. This could 2231 unnecessarily use TPM resources. 2233 o - It is possible to provision a certificate which 2234 does not correspond to a Attestation Identity Key (AIK) within the 2235 TPM. 2237 RPC: - Need to verify that the 2238 certificate is for an active AIK. 2240 RPC: - Need to verify that the 2241 certificate is for an active AIK. 2243 RPC: - Pulling lots of logs can chew up system 2244 resources. 2246 5. Acknowledgements 2248 Not yet. 2250 6. Change Log 2252 Changes from version 03 to version 04: 2254 o TPM1.2 Quote1 eliminated 2255 o YANG model simplifications so redundant info isn't exposed 2257 Changes from version 02 to version 03: 2259 o moved to tcg-algs 2261 o cleaned up model to eliminate sources of errors 2263 o removed key establishment RPC 2265 o added lots of XPATH which must all be scrubbed still 2267 o Descriptive text added on model contents. 2269 Changes from version 01 to version 02: 2271 o Extracted Crypto-types into a separate YANG file 2273 o Mades the algorithms explicit, not strings 2275 o Hash Algo as key the selected TPM2 PCRs 2277 o PCR numbers are their own type 2279 o Eliminated nested keys for node-id plus tpm-name 2281 o Eliminated TPM-Name of "ALL" 2283 o Added TPM-Path 2285 Changes from version 00 to version 01: 2287 o Addressed author's comments 2289 o Extended complementary details about attestation-certificates 2291 o Relabeled chunk-size to log-entry-quantity 2293 o Relabeled location with compute-node or tpm-name where appropriate 2295 o Added a valid entity-mib physical-index to compute-node and tpm- 2296 name to map it back to hardware inventory 2298 o Relabeled name to tpm_name 2300 o Removed event-string in last-entry 2302 7. References 2304 7.1. Normative References 2306 [I-D.ietf-netconf-keystore] 2307 Watsen, K., "A YANG Data Model for a Keystore", draft- 2308 ietf-netconf-keystore-20 (work in progress), August 2020. 2310 [I-D.ietf-rats-architecture] 2311 Birkholz, H., Thaler, D., Richardson, M., Smith, N., and 2312 W. Pan, "Remote Attestation Procedures Architecture", 2313 draft-ietf-rats-architecture-08 (work in progress), 2314 December 2020. 2316 [I-D.ietf-rats-reference-interaction-models] 2317 Birkholz, H., Eckel, M., Newton, C., and L. Chen, 2318 "Reference Interaction Models for Remote Attestation 2319 Procedures", draft-ietf-rats-reference-interaction- 2320 models-01 (work in progress), October 2020. 2322 [I-D.ietf-rats-tpm-based-network-device-attest] 2323 Fedorkow, G., Voit, E., and J. Fitzgerald-McKay, "TPM- 2324 based Network Device Remote Integrity Verification", 2325 draft-ietf-rats-tpm-based-network-device-attest-06 (work 2326 in progress), December 2020. 2328 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2329 Requirement Levels", BCP 14, RFC 2119, 2330 DOI 10.17487/RFC2119, March 1997, 2331 . 2333 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2334 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2335 . 2337 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2338 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2339 May 2017, . 2341 [RFC8348] Bierman, A., Bjorklund, M., Dong, J., and D. Romascanu, "A 2342 YANG Data Model for Hardware Management", RFC 8348, 2343 DOI 10.17487/RFC8348, March 2018, 2344 . 2346 [TCG-Algos] 2347 "TCG_Algorithm_Registry_r1p32_pub", n.d., 2348 . 2351 [TPM1.2] TCG, ., "TPM 1.2 Main Specification", October 2003, 2352 . 2355 [TPM2.0] TCG, ., "TPM 2.0 Library Specification", March 2013, 2356 . 2359 7.2. Informative References 2361 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 2362 (TLS) Protocol Version 1.2", RFC 5246, 2363 DOI 10.17487/RFC5246, August 2008, 2364 . 2366 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2367 and A. Bierman, Ed., "Network Configuration Protocol 2368 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2369 . 2371 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2372 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2373 . 2375 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2376 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2377 . 2379 Authors' Addresses 2381 Henk Birkholz 2382 Fraunhofer SIT 2383 Rheinstrasse 75 2384 Darmstadt 64295 2385 Germany 2387 Email: henk.birkholz@sit.fraunhofer.de 2389 Michael Eckel 2390 Fraunhofer SIT 2391 Rheinstrasse 75 2392 Darmstadt 64295 2393 Germany 2395 Email: michael.eckel@sit.fraunhofer.de 2396 Shwetha Bhandari 2397 ThoughtSpot 2399 Email: shwetha.bhandari@thoughtspot.com 2401 Eric Voit 2402 Cisco Systems 2404 Email: evoit@cisco.com 2406 Bill Sulzen 2407 Cisco Systems 2409 Email: bsulzen@cisco.com 2411 Liang Xia (Frank) 2412 Huawei Technologies 2413 101 Software Avenue, Yuhuatai District 2414 Nanjing, Jiangsu 210012 2415 China 2417 Email: Frank.Xialiang@huawei.com 2419 Tom Laffey 2420 Hewlett Packard Enterprise 2422 Email: tom.laffey@hpe.com 2424 Guy C. Fedorkow 2425 Juniper Networks 2426 10 Technology Park Drive 2427 Westford, Massachusetts 01886 2429 Email: gfedorkow@juniper.net