github.com/cloudwan/edgelq-sdk@v1.15.4/iam/proto/v1alpha2/attestation_domain.proto (about)

     1  syntax = "proto3";
     2  
     3  package ntt.iam.v1alpha2;
     4  
     5  import "edgelq-sdk/iam/proto/v1alpha2/common.proto";
     6  import "google/api/resource.proto";
     7  import "goten-sdk/types/meta.proto";
     8  
     9  option go_package = "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/attestation_domain;attestation_domain";
    10  option java_multiple_files = true;
    11  option java_outer_classname = "AttestationDomainProto";
    12  option java_package = "com.ntt.iam.pb.v1alpha2";
    13  
    14  // AttestationDomain represents attestation parameters for a heterogenous fleet
    15  // of devices.
    16  message AttestationDomain {
    17    option (google.api.resource) = {
    18      type : "iam.edgelq.com/AttestationDomain"
    19      pattern : "projects/{project}/attestationDomains/{attestation_domain}"
    20    };
    21  
    22    // Meta
    23    goten.types.Meta metadata = 1;
    24  
    25    // Name of AttestationDomain
    26    // When creating a new instance, this field is optional and if not provided,
    27    // it will be generated automatically. Last ID segment must conform to the
    28    // following regex: [a-z][a-z0-9\-]{0,28}[a-z0-9]
    29    string name = 2;
    30  
    31    // Display name
    32    string display_name = 3;
    33  
    34    // If false (default), attestation verifier SHALL check CA certificate chain
    35    // up to the TPM chip manufacturers CA (defined in manufacturer_ca_issuers).
    36    // This step is necessary to prove that the attestation request comes from a
    37    // genuine TPM device, and not a TPM emulator.
    38    //
    39    // If true, attestation verifier SHALL skip EKcert verification -
    40    // !!INSECURE!! Without this check, any keys may come from a simulated TPM
    41    // on the device. An attacker may therefore forge any key they want.
    42    // Therefore, this option should only be changed for development purposes.
    43    bool insecure_skip_manufacturer_ekcert_verification = 4;
    44  
    45    // Attestees wanting to attest under this attestation domain SHALL fulfill
    46    // requirements of at least one of attestation policies defined in this list.
    47    // Policies are checked in the order they appear on this list.
    48    repeated Policy policies = 5;
    49  
    50    // Attestation policy may require atestees pubkey to be present on
    51    // enrollment_list.
    52    repeated EnrolledKey enrollment_list = 6;
    53  
    54    // Policy defines a singular attestation policy, that should match a
    55    // homogenous class of device (i.e. hardware and firmware configuration) in
    56    // the fleet.
    57    message Policy {
    58      // List of acceptable manufacturer's root CAs certs (in PEM format).
    59      //
    60      // To obtain such a cert, run something like:
    61      // `tpm2_getekcertificate -o cert.bin`
    62      // `openssl x509 -inform der -in cert.bin -noout -text`
    63      // Then manually download certificate specified in Authority Information
    64      // Access (AIA). Repeat the above `openssl` command on the newly
    65      // downloadedfile (change the value of `-in` argument). Continue this until
    66      // you reach a certificate which does not have AIA. It's the root
    67      // certificate. Convert it to PEM like so: `openssl x509 -inform der -in
    68      // root.crt -out root.pem` Still, we need to encode newlines: `awk 'NF
    69      // {sub(/\r/, ""); printf "%s\\n",$0;}' root.pem` Then paste the output
    70      // here.
    71      //
    72      // Note: multiple PEM certificates may be included here by simple means of
    73      // concatenation.
    74      string manufacturer_root_ca_certs_pem = 1;
    75  
    76      // If true, the attestee's pubkey SHALL be present on this
    77      // AttestationDomain's enrollment list, otherwise fail the attestation.
    78      bool require_enrollment = 2;
    79  
    80      // If true, the verifier SHALL parse, replay and verify TPM event log
    81      // provided by the atestee, otherwise fail the attestation.
    82      // Note that requiring verification of event does not provide additional
    83      // security. See
    84      // https://github.com/google/go-attestation/blob/master/docs/event-log-disclosure.md#event-type-and-verification-footguns
    85      bool verify_event_log = 3;
    86  
    87      // List of expected PCR values.
    88      // All PCRs on this list SHALL match exactly the PCRs provided by the
    89      // atestee, otherwise the attestation SHALL be failed. The verifier SHALL
    90      // perform sanity checks: PCR index/digest pairs are unique and the size of
    91      // the list is sane (TODO).
    92      // They can be read from TPM by running something like `tpm2_pcrread`.
    93      repeated PCR expected_pcrs = 4;
    94    }
    95  
    96    // EnrolledKey defines an enrolled key.
    97    message EnrolledKey {
    98      // PEM encoded EK pubkey.
    99      // It can be read from TPM by running something like `tpm2_createek -G rsa
   100      // -u ek.pub -c key.ctx -f pem`.
   101      string pubkey_pem = 1;
   102  
   103      // User's comments for this entry
   104      string comment = 2;
   105    }
   106  }