Skip to content

Platform Configuration Registers Open Config Standard based proto definitions for External Vendors#11

Open
mihirpitale-googler wants to merge 7 commits intoopenconfig:mainfrom
mihirpitale-googler:main
Open

Platform Configuration Registers Open Config Standard based proto definitions for External Vendors#11
mihirpitale-googler wants to merge 7 commits intoopenconfig:mainfrom
mihirpitale-googler:main

Conversation

@mihirpitale-googler
Copy link
Copy Markdown
Member

@mihirpitale-googler mihirpitale-googler commented Jan 26, 2026

Description

The current lack of a unified standard for vendors to provide Platform Configuration Register (PCR) values—characterized by less secure delivery methods like Excel or JSON and disparate data formats—severely hampers the scalability and reliability of Google’s Attestation service for network infrastructure.

This fragmentation necessitates manual data entry and creates significant operational toil, ultimately slowing down the integrity verification process for network devices. To resolve this, we propose a standardized OpenConfig schema and protobuf-based framework that mandates vendors to deliver PCR values in a consistent, hex-standardized format via secure endpoints with every software release. By automating the ingestion of these measurements, the solution ensures a more reliable and efficient way to verify device trustworthiness across the network.

@mihirpitale-googler mihirpitale-googler requested a review from a team as a code owner January 26, 2026 19:59
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto Outdated
@mihirpitale-googler mihirpitale-googler self-assigned this Jan 26, 2026
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto
Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto Outdated
Copy link
Copy Markdown
Member Author

@mihirpitale-googler mihirpitale-googler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding bootloaderversion repeated pcr values and creating struct

Comment thread proto/pcr.proto Outdated
Comment thread proto/pcr.proto
Copy link
Copy Markdown
Member Author

@mihirpitale-googler mihirpitale-googler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding comments above attributes

Comment thread proto/pcr.proto Outdated
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" B1IS,
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

B1IS should be BASIS

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure done

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment thread proto/pcr.proto Outdated

package openconfig.pcrservice;

import "github.com/openconfig/attestz/proto/common_definitions.proto";
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused import

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for pointing out.

Comment thread proto/pcr.proto Outdated

enum RootOfTrustVersion {
ROOT_OF_TRUST_VERSION_UNSPECIFIED = 0;
TPM_1.2_PCR = 1;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dots in enum names are not allowed.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure, done

Comment thread proto/pcr.proto Outdated
google.protobuf.Timestamp timestamp = 3;

// Date of PCR Artifact Collection
google.type.Date calendar_date = 4;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we have the time twice - timestamp and calendar_date?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure, will remove calendar_date since its overlapping.

Comment thread proto/pcr.proto Outdated
service SecurityService {

// Retrieves the PCR values for a specific software/hardware/bootloader combination.
rpc GetPCR(GetRequest) returns (GetResponse);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Lets change this RPC to FetchPCR and the messages to message PCRRequest and message PCRResponse

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure, modified

Comment thread proto/pcr.proto
option go_package = "github.com/openconfig/pcrservice";


// Enumerations
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these need docstrings describing use

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment thread proto/pcr.proto
Comment thread proto/pcr.proto
Comment thread proto/pcr.proto
TPM_2_0_PCR = 2;
}

enum BootStage {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same

Copy link
Copy Markdown

@haussli haussli Mar 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And reference the table in TCG documentation from whence the initial list came?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done updated

Comment thread proto/pcr.proto
}

// Request for fetching all known bootloader versions for a specific hardware model.
message FetchBootLoaderVersionsRequest {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't this have the software version as well?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ack marcus, yes i believe we should add software version here as well

Comment thread proto/pcr.proto
Comment thread proto/pcr.proto Outdated

// Response containing a list of known hardware model strings.
message FetchHardwareModelsResponse {
// List of valid hardware model strings (e.g., "A9K-400-LC", "Nokia-7750")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this description needs to be more specific. If not, every vendor will choose their own format and content.

Does the mfg belong in the model, like "Nokia-7750" and "Cisco-A9K-400-LC"? Do we want linecards to be included, like "A9K-400-LC"?

The same for software versions; what should the format be?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ack john, updated docstrings

Comment thread proto/pcr.proto

// Response containing a list of known bootloader version strings.
message FetchBootLoaderVersionsResponse {
// List of valid bootloader version strings for the specified hardware model
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is the software variant? That is also missing from FetchSoftwareVersionsResponse.

I feel as if I am reviewing an old version. Stuff that I was expecting to be present from our chat discussions are missing.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we (with this PR) commiting half the work on purpose because someone else (betul?) has queued up a bunch of further enhancements?

that'd be fine I bet... 'get progress now so more progress sooner'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe; if that is so, just commit it and go from there.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes chris/john. ill commit this pr for betul to add on further enhancements.

Copy link
Copy Markdown

@haussli haussli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have decided to commit the current draft and continue development from there.

@haussli
Copy link
Copy Markdown

haussli commented Mar 16, 2026

Mihir, do we need another review? I thought that this was going to merged, then the other suggestions, including those from Marcus would be merged/discussed.

@lbird-jnpr
Copy link
Copy Markdown

lbird-jnpr commented Mar 29, 2026

We have established a general logical set here: a downloaded image and derivative metadata, including supported OpenConfig xpaths, SBOM, and golden PCR values for that image. Importantly, image and metadata are only meaningful when paired tightly together. It is conceivable that additional metadata (PQC, supported OpenConfig global versions, etc.) will be added in the future. Instead of developing several disjoint protocols in piecemeal fashion, have we considered building a single comprehensive and extensible protocol which covers the downloaded image and all associated artifacts, emphasizing the tight coupling of the logical set? Because of shared nature, it is my recommendation that we combine these operations to reduce complexity and enhance intuitiveness instead of treating them as unrelated problems. Thanks.

Comment thread proto/pcr.proto
Comment thread proto/pcr.proto
Comment thread proto/pcr.proto
Copy link
Copy Markdown
Member Author

@mihirpitale-googler mihirpitale-googler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resolved comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.