├── Scope.md
├── License.md
├── Notices.md
├── SECURITY.md
├── README.md
├── Contributing.md
├── Code_of_Conduct.md
├── Governance.md
├── Community_Specification_License-v1.md
├── Specification.md
└── images
├── spec
├── Workflow - Self-Attestation.svg
└── Standards.svg
└── workflow.svg
/Scope.md:
--------------------------------------------------------------------------------
1 | # Scope
2 |
3 | The Supply Chain Integrity Model (SCIM) specifies an end-to-end system for validating arbitrary artifacts in terms of supply chains whose integrity has been proven.
4 |
5 | SCIM is applicable to both hardware (objects in the physical world) and software (digital) artifacts.
6 |
7 | SCIM defines minimum standards around the preparation, storage, distribution, consumption, validation and evaluation of arbitrary evidence about artifacts that are critical to maintaining the integrity of supply chains.
8 |
9 | SCIM does not define how artifacts are produced or distributed, nor the methods by which evidence about artifacts is produced prior to preparation for inclusion in SCIM.
10 |
11 | Any changes to this scope are not retroactive.
12 |
--------------------------------------------------------------------------------
/License.md:
--------------------------------------------------------------------------------
1 | # Licenses
2 |
3 | ## Specification License
4 |
5 | Specifications in the repository are subject to the **Community Specification License 1.0** available at [https://github.com/CommunitySpecification/1.0](https://github.com/CommunitySpecification/1.0).
6 |
7 | ## Source Code License
8 |
9 | If source code is included in this repository, or for sample or reference code included in the specification itself, that code is subject to the MIT license unless otherwise designated. In the case of any conflict or confusion within this specification repository between the Community Specification License and the MIT or other designated license, the terms of the Community Specification License shall apply.
10 |
11 | If source code is included in this repository, or for sample or reference code included in the specification itself, that code is subject to the MIT license unless otherwise marked.
12 |
13 | In the case of any conflict or confusion within this specification repository between the Community Specification License and the designated source code license, the terms of the Community Specification License shall apply.
14 |
--------------------------------------------------------------------------------
/Notices.md:
--------------------------------------------------------------------------------
1 | # Notices
2 |
3 | ## Code of Conduct
4 |
5 | Contact for Code of Conduct issues or inquires: [opencode@microsoft.com](mailto:opencode@microsoft.com)
6 |
7 |
8 | ## License Acceptance
9 |
10 | Per Community Specification License 1.0 Section 2.1.3.3, Licensees may indicate their acceptance of the Community Specification License by issuing a pull request to the Specification’s repository’s Notice.md file, including the Licensee’s name, authorized individuals' names, and repository system identifier (e.g. GitHub ID), and specification version.
11 |
12 | A Licensee may consent to accepting the current Community Specification License version or any future version of the Community Specification License by indicating "or later" after their specification version.
13 |
14 | ---------------------------------------------------------------------------------
15 |
16 | Licensee’s name:
17 |
18 | Authorized individual and system identifier:
19 |
20 | Specification version:
21 |
22 | ---------------------------------------------------------------------------------
23 |
24 | ## Withdrawals
25 |
26 | Name of party withdrawing:
27 |
28 | Date of withdrawal:
29 |
30 | ---------------------------------------------------------------------------------
31 |
32 | ## Exclusions
33 |
34 | This section includes any Exclusion Notices made against a Draft Deliverable or Approved Deliverable as set forth in the Community Specification Development License. Each Exclusion Notice must include the following information:
35 |
36 | - Name of party making the Exclusion Notice:
37 |
38 | - Name of patent owner:
39 |
40 | - Specification:
41 |
42 | - Version number:
43 |
44 | **For issued patents and published patent applications:**
45 |
46 | (i) patent number(s) or title and application number(s), as the case may be:
47 |
48 | (ii) identification of the specific part(s) of the Specification whose implementation makes the excluded claim a Necessary Claim.
49 |
50 | **For unpublished patent applications must provide either:**
51 |
52 | (i) the text of the filed application; or
53 |
54 | (ii) identification of the specific part(s) of the Specification whose implementation makes the excluded claim a Necessary Claim.
55 |
56 | -----------------------------------------------------------------------------------------
57 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Security
4 |
5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6 |
7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
8 |
9 | ## Reporting Security Issues
10 |
11 | **Please do not report security vulnerabilities through public GitHub issues.**
12 |
13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
14 |
15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
16 |
17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
18 |
19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20 |
21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22 | * Full paths of source file(s) related to the manifestation of the issue
23 | * The location of the affected source code (tag/branch/commit or direct URL)
24 | * Any special configuration required to reproduce the issue
25 | * Step-by-step instructions to reproduce the issue
26 | * Proof-of-concept or exploit code (if possible)
27 | * Impact of the issue, including how an attacker might exploit the issue
28 |
29 | This information will help us triage your report more quickly.
30 |
31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
32 |
33 | ## Preferred Languages
34 |
35 | We prefer all communications to be in English.
36 |
37 | ## Policy
38 |
39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
40 |
41 |
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## NOTE: The SCIM effort has a new name and location
2 | - This site is now deprecated.
3 | - Join us instead at https://github.com/ietf-scitt.
4 |
5 | ## Overview
6 |
7 | The Supply Chain Integrity Model (SCIM) supports the ongoing verification of artifacts, including hardware and software components, where the authenticity of entities, evidence, policy, and artifacts can be assured and the actions of entities can be guaranteed to be authorized, non-repudiable, immutable, and auditable. The proposed SCIM will be an industry standard specification, easing the path for uniform data flow across globally distributed supply chains.
8 |
9 | SCIM aligns with an iterative approach to developing and implementing supply chain integrity requirements, allowing for enhancements over time based on evolving threat models and practices. A phased roll out of requirements promotes clarity for supplier planning and engineering and minimize disruptions.
10 |
11 | Note: SCIM describes principles and a proposed model and system for conveying evidence. It does not address what evidence or information for attestation of conformity must be conveyed.
12 |
13 | ## Workflow
14 |
15 | The following diagram depicts the flow of artifacts, evidence and policies between entities in the Supply Chain Integrity Model.
16 |
17 |
18 |
19 | A Supplier creates an Artifact (a). An Attester creates Evidence (b) and submits to a Store for logging, query, and retrieval. The Supplier and Attester may be the same entity. A Policy Manager creates Policy (c) and submits to a Store where it is recorded and made available for query and retrieval. A User Agent receives an Artifact, retrieves Evidence and Policy, and verifies the Artifact (d).
20 |
21 | ## Example Application
22 |
23 | The diagram below shows an example application of SCIM to the Software Development Lifecycle (SDLC).
24 |
25 |
168 |
169 | A Supplier creates an Artifact (a) and an Attester creates Evidence (b) about an Artifact. The Supplier and the Attester may be the same entity. The Attester submits Evidence to a Store where it is certified and made available for query and retrieval.
170 |
171 | A Policy Manager creates Policy (c) and submits it to a Store where it is certified and made available for query and retrieval.
172 |
173 | A User Agent (d) receives an Artifact, and retrieves Evidence and Policy. The User Agent uses Evidence to verify the Artifact against Policy.
174 |
175 | #### 4.1 Reference Use Cases
176 |
177 | This section covers a number of representative use cases for supply chain integrity, independent of specific solutions. The purpose is to provide motivation for various aspects of the architecture presented in this document. Many other use cases exist, and this document does not intend to have a complete list, only to have a set of use cases that collectively cover all the functionality required in the architecture.
178 |
179 | Each use case includes a description followed by a summary of the Attester and Relying Party roles.
180 |
181 | #### 4.1.1 Self-Attestation
182 |
183 | In the most basic use case for supply chain integrity, a Supplier serves a dual role as Supplier and Attester, providing Evidence about an Artifact. At a minimum, Evidence includes globally unique identifiers for both Supplier and Artifact. Evidence may include additional information such as the following:
184 |
185 | - information allowing the Artifact to be verified (e.g. a cryptographic hash for software)
186 | - information about subcomponents of the Artifact
187 | - information about how the Artifact was created
188 | - information about restrictions on the legal use of the Artifact
189 | - information about security and quality evaluations performed on the Artifact
190 | - information about defects identified in the Artifact
191 | - references to related Artifacts or Evidence
192 |
193 | A Supplier creates an Artifact (a) and Evidence (b). A Policy Manager provides Policy (c). A User Agent (d) obtains Artifact (a) and Evidence (b), and uses Policy (c) to verify suitability of Artifact (a) for the intended use.
194 |
195 |
199 |
200 | #### 4.1.2 Private/Public Attestation
201 |
202 | In this use case, a Supplier creates an Artifact (a), private Evidence (b), and private Policy (c). A Build Verifier (d) uses these to verify Artifact (A) prior to release. At release, the Supplier provides a summarized version of Evidence (e) for public users.
203 |
204 |
208 |
209 | On the User side, a Policy Manager creates Policy (f), and a User Agent (g) obtains Artifact (a) and uses Policy (f) to verify suitability of Artifact (a) for the intended use.
210 |
211 | #### 4.1.3 Multi-Party Attestation
212 |
213 | To increase trust in Artifacts, Policy Managers may require independent Evidence from multiple third-party Attesters. For example in a software supply chain, a Policy Manager may require that all code commits be approved by two qualified reviewers, or that software be independently rebuilt by multiple parties with matching build Artifacts.
214 |
215 | In the Multi-Party Attestation workflow, the User Agent obtains an Artifact from the Supplier and Evidence (a) and (b) from Attesters.The User Agent verifies the Artifact against Policy, which specifies allowed Attesters, the number of Attesters required, and any additional requirements.
216 |
217 |
221 |
222 | #### 4.1.4 Subcomponent Verification
223 |
224 | Often a Policy Manager requires that a final component (Artifact) and all sub-components (Artifacts) conform to Policy, for example that a component and all subcomponents are free from critical defects.
225 |
226 | In this workflow, Subcomponent Suppliers provide Artifacts (a) and (b) and Evidence (a) and (b) to the Component Supplier, who in turn provides Artifact (c) and Evidence (c) to the User Agent. Evidence (c) includes Evidence (a) and (b) either inline, or by reference. The User Agent verifies Artifact (c) against Policy, which specifies requirements for the component and all nested subcomponents.
227 |
228 |
232 |
233 | #### 4.1.5 Continuous Verification
234 |
235 | Policy Managers often require corrective action when changes occur in Artifact status, such as when critical security issues are reported, when legal licences are modified, and when Artifacts become obsolete. Additionally, Policy Managers may require corrective action when changes occur in Policy, for example to respond to updated business or regulatory requirements. Thus, User Agents must continuously monitor and respond to changes in both Evidence and Policy. In some cases, such as the case of critical security issues, the response must be rapid.
236 |
237 | In this workflow, the User Agent obtains Evidence (a) and Policy (a) and uses these to verify an Artifact.
238 |
239 | Later, when a critical security issue is reported against the Artifact by a Defect Reporting Service, the User Agent receives Evidence (b) and re-verifies the artifact, rapidly performing corrective action.
240 |
241 | Later still, business conditions require the Policy Manager to modify policy. At this time, the User Agent receives Policy (b) and re-verifies the Artifact, performing corrective action as needed.
242 |
243 | Eventually, when the Supplier determines to discontinue support for the Artifact, it provides new evidence, Evidence (c) indicating the Artifact’s pending obsolescence. The user receives the new evidence, re-verifies the Artifact, and performs corrective action as needed.
244 |
245 |
249 |
250 | #### 4.1.6 Runtime Integrity Verification
251 |
252 | Policy Managers often require verification that Artifacts are not tampered with after deployment to production environments..
253 |
254 | The diagram below depicts a workflow in which software is received from a Supplier, verified and installed by an Installer, and monitored for runtime tampering by a Runtime Monitor.
255 |
256 | Initially, the Installer obtains the Artifact and Evidence and uses the evidence, in this case a cryptographic hash of the Artifact, to verify Artifact integrity prior to installation. Post installation, the Installer submits new Evidence, including a cryptographic hash for each installed file, to a local Store.
257 |
258 | Thereafter, a Runtime Monitor such as a background process or application loader continuously verifies installed files against the Evidence (cryptographic hashes) in the local Store.
259 |
260 |
264 |
265 | ### 5 Standards
266 |
267 | The diagram below shows standards that comprise the Supply Chain Integrity Model.
268 |
269 |
270 |
271 | Figure 5.1 -- Standards within the Supply Chain Integrity Model
272 |
273 |
274 | **SCIM-Evidence**. The SCIM-Evidence standard defines a data model and exchange format for providing evidence about artifacts. Add requirements for SCIM-Evidence standard.
275 |
276 | **SCIM-Policy**. The SCIM-Policy standard defines a data model and exchange format for providing policy for use in evaluating artifacts for a specified.use.
277 |
278 | **SCIM-Store**. The SCIM-Store standard provides a definition for a service that allows publishing and subscribing to Evidence and Policy. The SCIM-Store provides backing storage for both Evidence and Policy. The SCIM-Store service definition provides a uniform application programming model that allows:
279 | - Distributed identity management.
280 | - Verification and certification of published evidence and policy.
281 | - Transparent, immutable, non-repudiable logging of transactions.
282 | - Rich, graph-aware query of evidence and policy.
283 | - Notifications of new transactions in the data store (to support continuous verification)
284 |
285 |
308 |
--------------------------------------------------------------------------------
/images/spec/Workflow - Self-Attestation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/spec/Standards.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/workflow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------