From 3cb409312d95ed5d3e24eca5221eaab6ed5c96d1 Mon Sep 17 00:00:00 2001
From: Gabe <7622243+decentralgabe@users.noreply.github.com>
Date: Mon, 30 Sep 2024 11:26:05 -0700
Subject: [PATCH] Fix grammar and flow in the Security Considerations section.
Co-authored-by: Ted Thibodeau Jr What is a Verifiable Credential?
as defined in this document. Verifiability of a credential does not imply
the truth of [=claims=] encoded therein. Instead, upon establishing the
authenticity and currency of a [=verifiable credential=] or
-[=verifiable presentation=], a [=verifier=] validates the included claims using their own
-business rules before relying on them. Such reliance only occurs after
+[=verifiable presentation=], a [=verifier=] validates the included [=claims=] using
+their own business rules before relying on them. Such reliance only occurs after
evaluating the issuer, the proof, the subject, and the claims against one or
more verifier policies.
A securing mechanism specification that creates a new type of [=embedded proof=] -MUST specify a [=property=] that relates the [=verifiable credential=] or [=verifiable -presentation=] to a [=proof graph=]. +MUST specify a [=property=] that relates the [=verifiable credential=] or +[=verifiable presentation=] to a [=proof graph=]. The requirements on the securing mechanism are as follow:
-The last requirement means that the securing mechanism secures the [=default graph=] and, -for [=verifiable presentations=], each [=verifiable credential=] of the presentation, together with -their respective [=proof graphs=]. +The last requirement means that the securing mechanism secures the [=default +graph=] and, for [=verifiable presentations=], each [=verifiable credential=] +of the presentation, together with their respective [=proof graphs=]. See also [[[#info-graph-vp]]] or [[[#info-graph-vp-mult-creds]]].
@@ -4284,11 +4287,11 @@@@ -4323,9 +4326,9 @@
It is crucial to note that [=holders=] not only depend on [=issuer=] @@ -5847,38 +5850,38 @@
-There are a number of security considerations that [=issuers=], -[=holders=], and [=verifiers=] should be aware of when processing data -described by this specification. Ignoring or not understanding the implications -of this section can result in security vulnerabilities. +[=Issuers=], [=holders=], and [=verifiers=] should be aware of a number of +security considerations when processing data described by this specification. +Ignoring or not understanding the implications of this section can result in +security vulnerabilities.
-While this section attempts to highlight a broad set of security considerations, -it is not a complete list. Implementers are urged to seek the advice of security -and cryptography professionals when implementing mission critical systems using -the technology outlined in this specification. +While this section highlights a broad set of security considerations, it is a +partial list. Implementers of mission-critical systems using the technology +described in this specification are strongly encouraged to consult security and +cryptography professionals for comprehensive guidance.
-Some aspects of the data model described in this specification can be -protected through the use of cryptography. It is important for implementers to -understand the cryptography suites and libraries used to create and process -[=credentials=] and [=presentations=]. Implementing and auditing -cryptography systems generally requires substantial experience. Effective +Cryptography can protect some aspects of the data model described in this +specification. It is important for implementers to understand the cryptography +suites and libraries used to create and process [=credentials=] and +[=presentations=]. Implementing and auditing cryptography systems generally +requires substantial experience. Effective red teaming can also help remove bias from security reviews.
-Cryptography suites and libraries have a shelf life and eventually fall to -new attacks and technology advances. Production quality systems need to take +Cryptography suites and libraries have a shelf life and eventually succumb to +new attacks and technological advances. Production quality systems need to take this into account and ensure mechanisms exist to easily and proactively upgrade -expired or broken cryptography suites and libraries, and to invalidate -and replace existing [=credentials=]. Regular monitoring is important to +expired or broken cryptography suites and libraries, and to invalidate and +replace existing [=credentials=]. Regular monitoring is important to ensure the long term viability of systems processing [=credentials=].
-The security of most digital signature algorithms, which are used to secure -[=verifiable credentials=] and [=verifiable presentations=], is dependent -on the quality and protection of their private signing keys. Guidance -in the management of cryptographic keys is a large subject and the reader is -referred to [[NIST-SP-800-57-Part-1]] for more extensive recommendations and -discussion. As strongly recommended in both [[FIPS-186-5]] and +The security of most digital signature algorithms, used to secure [=verifiable +credentials=] and [=verifiable presentations=], depends on the quality and +protection of their private signing keys. The management of +cryptographic keys encompasses a vast and complex field. For comprehensive +recommendations and in-depth discussion, readers are directed to +[[NIST-SP-800-57-Part-1]]. As strongly recommended in both [[FIPS-186-5]] and [[NIST-SP-800-57-Part-1]], a private signing key is not to be used for multiple -purposes, for example, a private signing key is not to be used for encryption +purposes; for example, a private signing key is not to be used for encryption as well as signing.
@@ -5902,8 +5905,8 @@
To deal with potential private key compromises, [[NIST-SP-800-57-Part-1]] @@ -5918,30 +5921,31 @@
-[=Verifiable credentials=] often contain URLs to data that resides outside of -the [=verifiable credential=] itself. Linked content that exists outside a -[=verifiable credential=], such as images, JSON-LD extension contexts, -JSON Schemas, and other machine-readable data, are not protected by default +[=Verifiable credentials=] often contain URLs to data that resides outside +the [=verifiable credential=]. Linked content that exists outside a +[=verifiable credential=] — such as images, JSON-LD extension contexts, +JSON Schemas, and other machine-readable data — is not protected against tampering because the data resides outside of the protection of the securing mechanism on the [=verifiable credential=].
-This specification provides an optional mechanism, contained in Section -[[[#integrity-of-related-resources]]], that is capable of ensuring content -integrity for external resources. While this mechanism need not be utilized -for external resources that do not affect the security of the -[=verifiable credential=], it is strongly suggested for external resources -that could result in a security issue if the external content changes. +Section [[[#integrity-of-related-resources]]] of this specification provides an +optional mechanism for ensuring content integrity of external +resources. This mechanism is not necessary for external resources that do not +impact the [=verifiable credential=]'s security. However, its implementation +is crucial for external resources where content changes could potentially +introduce security vulnerabilities.
-Implementers are urged to understand how links to external machine-readable -content that are not content-integrity protected could result in successful -attacks against their applications, and utilize the content integrity -protection mechanism provided by this specification if a security issue could -occur if the external resource is changed. +Implementers need to recognize the potential security risks associated with +unprotected URLs of external machine-readable content. Such vulnerabilities +could lead to successful attacks on their applications. Where changes to +external resources might compromise security, implementers will benefit by +employing the content integrity protection mechanism outlined in this +specification.
-This specification allows [=credentials=] to be produced that are not secured by -signatures or proofs of any kind. These classes of [=credential=] are often -useful for intermediate storage or self-asserted information, which is -analogous to filling out a form on a web page. Implementers ought to be aware -that these [=credential=] types are not [=verifiable=] because the -authorship either is not known or cannot be trusted. +This specification enables the creation of [=credentials=] without signatures +or proofs. These [=credential=] classes are often useful for intermediate +storage or self-asserted information, analogous to filling out a form on a web +page. Implementers ought to be aware that these [=credential=] types are not +[=verifiable=] because the authorship either is unknown or cannot be trusted.
@@ -5967,9 +5970,9 @@-Alternate approaches such as token binding [[RFC8471]], which ties the request -for a [=verifiable presentation=] to the response, can secure the protocol. +Other approaches, such as token binding [[RFC8471]], which ties the request for +a [=verifiable presentation=] to the response, can help secure the protocol. Any unsecured protocol is susceptible to man-in-the-middle attacks.
-A [=verifier=] might wish to ensure that a [=verifiable presentation=] is -not used more than a certain number of times. For example, a [=verifiable -credential=] representing an event ticket might allow entry to multiple -individuals if presented multiple times, undermining the purpose of the ticket +A [=verifier=] might wish to limit the number of times that +[=verifiable presentation=] can be used. For example, multiple individuals +presenting the same [=verifiable credential=] representing an event ticket +might be granted entry to the event, undermining the purpose of the ticket from the perspective of its [=issuer=]. To prevent such replay attacks, [=verifiers=] require [=holders=] to include additional security measures in their [=verifiable presentations=]. Examples include the following: @@ -6013,8 +6017,8 @@
-A [=verifier=] has a vested interest in knowing that a [=holder=] is -authorized to present the claims inside of a [=verifiable presentation=]. +[=Verifiers=] might have a vested interest in knowing that a [=holder=] is +authorized to present the [=claims=] inside of a [=verifiable presentation=]. While the data model outlines the structure and data elements necessary for a [=verifiable credential=], it does not include a mechanism to ascertain the authorization of presented [=credentials=]. To address this concern, @@ -6029,25 +6033,24 @@
It is considered best practice for [=issuers=] to atomize information in a -[=credential=], or use a signature scheme that allows for selective -disclosure. In the case of atomization, if it is not done securely by the -[=issuer=], the [=holder=] might bundle together different -[=credentials=] in a way that was not intended by the [=issuer=]. -
- --For example, a university might issue two [=verifiable credentials=] to a -person, each containing two [=properties=], which must be taken together -to designate the "role" of that person in a given "department", such as "Staff -Member" in the "Department of Computing", or "Post Graduate Student" in the -"Department of Economics". If these [=verifiable credentials=] are atomized -to put only one of these [=properties=] into each [=credential=] , then -the university would issue four [=credentials=] to the person, each -containing one of the following designations: "Staff Member", "Post Graduate -Student", "Department of Computing", and "Department of Economics". The -[=holder=] might then transfer the "Staff Member" and "Department of -Economics" [=verifiable credentials=] to a [=verifier=], which together -would comprise a false [=claim=]. +[=credential=] or use a signature scheme that allows for selective +disclosure. When atomizing information, if it is not done securely by the +[=issuers=], the [=holders=] might bundle together [=claims=] from different +[=credentials=] in ways that the [=issuers=] did not intend. +
+ ++Consider a university issuing two [=verifiable credentials=] to an individual. +Each [=credential=] contains two properties that, when combined, indicate the +person's "role" in a specific "department." For instance, one [=credential=] +pair might designate "Staff Member" in the "Department of Computing," while +another could signify "Post Graduate Student" in the "Department of Economics." +Atomizing these [=verifiable credentials=] results in the university issuing +four separate [=credentials=] to the individual. Each [=credential=] contains +a single designation: "Staff Member", "Post Graduate Student", "Department of +Computing", or "Department of Economics". The [=holder=] might then present +the "Staff Member" and "Department of Economics" [=verifiable credentials=] to +a [=verifier=], which, together, would comprise a false [=claim=].
@@ -6055,16 +6058,15 @@-When [=verifiable credentials=] are issued for highly dynamic information, -implementers should ensure the validity periods are set appropriately. Validity -periods longer than the timeframe where the [=verifiable credential=] is -meant for use might create exploitable security vulnerabilities. Validity +When [=verifiable credentials=] contain highly dynamic information, careful +consideration of validity periods becomes crucial. Issuing [=verifiable +credentials=] with validity periods that extend beyond their intended use creates +potential security vulnerabilities that malicious actors could exploit. Validity periods shorter than the timeframe where the information expressed by the [=verifiable credential=] is expected to be used creates a burden on -[=holders=] and [=verifiers=]. It is therefore important to set validity -periods for [=verifiable credentials=] that are appropriate to the use case -and the expected lifetime for the information contained in the -[=verifiable credential=]. +[=holders=] and [=verifiers=]. It is, therefore, important to set validity +periods for [=verifiable credentials=] appropriate to the use case and the +expected lifetime of the information contained in the [=verifiable credential=].
@@ -6072,10 +6074,10 @@-When [=verifiable credentials=] are stored on a device and that -device is lost or stolen, it might be possible for an attacker to gain access -to systems using the victim's [=verifiable credentials=]. Ways to mitigate -this type of attack include: +Storing [=verifiable credentials=] on a device poses risks if the device is +lost or stolen. An attacker gaining possession of such a device potentially +acquires unauthorized access to systems using the victim's [=verifiable +credentials=]. Ways to mitigate this type of attack include:
Furthermore, instances of impersonation can manifest in various forms, -including situations where an [=entity=] attempts to disavow their actions. -Elevating the level of trust and security within the realm of [=verifiable -credentials=] entails more than just averting impersonation; it involves the -implementation of non-repudiation mechanisms. These mechanisms solidify an -[=entity's=] responsibility for their actions or transactions, thereby -reinforcing accountability and deterring malicious behaviors. The attainment of -non-repudiation is a multifaceted endeavor, encompassing an array of techniques -ranging from securing mechanisms, proofs of -possession, and authentication schemes in a variety of protocols designed to -foster trust and reliability. +including situations where an [=entity=] attempts to disavow its actions. +Elevating trust and security within the realm of [=verifiable credentials=] +entails more than averting impersonation; it also involves implementing +non-repudiation mechanisms. These mechanisms solidify an [=entity's=] +responsibility for its actions or transactions, reinforcing accountability and +deterring malicious behavior. Attainment of non-repudiation is a +multifaceted endeavor, encompassing an array of techniques including +securing mechanisms, proofs of possession, +and authentication schemes in various protocols designed to foster trust and +reliability.
-Ensuring that there is alignment between an [=entity's=] actions, such as -[=presentation=], and the intended purpose of those actions, is of -importance. It involves having the authorization to make use of [=verifiable -credentials=] as well as using [=credentials=] in a manner that adheres to -their designated scope(s) and objective(s). Two critical aspects that arise -within this context are Unauthorized Use and Inappropriate Use. +Ensuring alignment between an [=entity's=] actions — such as [=presentation=], +and the intended purpose of those actions — is essential. It involves having the +authorization to use [=verifiable credentials=] and using [=credentials=] in a +manner that adheres to their designated scope(s) and objective(s). Two critical +aspects in this context are Unauthorized Use and Inappropriate Use.
-Any attempt by entities to make use of [=verifiable credentials=] and -[=verifiable presentations=] outside of their intended use can be seen as -unauthorized. One class of unauthorized use is a confidentiality -violation. Consider an example where a [=holder=] shares a [=verifiable -presentation=] with a [=verifier=] to establish their age and residency -status. If the [=verifier=] then proceeds to exploit the [=holder's=] data -without proper consent, such as by selling the data to a data broker, that -would constitute an unauthorized use of the data, violating an expectation of -privacy that the [=holder=] might have in the transaction. +Entities using [=verifiable credentials=] and [=verifiable presentations=] +beyond their intended purpose are engaging in unauthorized activity. One class +of unauthorized use is a confidentiality violation. Consider a [=holder=] +that shares a [=verifiable presentation=] with a [=verifier=] +to establish their age and residency status. If the [=verifier=] then proceeds +to employ the [=holder's=] data without proper consent, such as by selling the +data to a data broker, that would constitute an unauthorized use of the data, +violating an expectation of privacy that the [=holder=] might have in the +transaction.
-Similarly, an [=issuer=] could make use of a -termsOfUse property to stipulate how and when a -credential might be used. A [=holder=] using credentials outside of the -scopes defined in the `termsOfUse` would be considered unauthorized -use. +Similarly, an [=issuer=] can employ a termsOfUse +property to specify how and when a [=holder=] might be permitted and expected +to use a [=credential=]. A [=holder=] using [=credentials=] outside of the +scope(s) defined in the `termsOfUse` would be considered to be unauthorized.
@@ -6153,15 +6153,15 @@
For instance, in scenarios where a certified medical diagnosis is required, a self-asserted [=credential=] carrying the necessary data might not suffice -because it lacks validity from an authoritative medical source. To ensure the -propriety of [=credential=] use, stakeholders are urged to assess the +because it lacks validity from an authoritative medical source. To ensure proper +[=credential=] use, stakeholders need to assess the credential's relevance and authority within the specific context of their intended application.
@@ -6171,25 +6171,25 @@-It is possible for data in [=verifiable credentials=] to include -executable code or scripting languages. Authors of verifiable credentials are -advised to avoid doing so, unless necessary, and the risks have been mitigated -to the extent possible. +Data in [=verifiable credentials=] can include injectable code or code from +scripting languages. Authors of [=verifiable credentials=] benefit from avoiding +such inclusions unless necessary and only after mitigating associated risks to +the fullest extent possible. +
-For example, when a single natural language string contains multiple languages -or annotations, the contents of the string might require additional structure or -markup in order to be presented correctly. It is possible to use markup -languages, such as HTML, to label spans of text in different languages or to -supply string-internal markup needed for the proper display of [=bidirectional -text=]. It is also possible to use the `rdf:HTML` datatype to encode such values -accurately in JSON-LD. +For example, a single natural language string containing multiple languages or +annotations often requires additional structure or markup for correct +presentation. Markup languages, such as HTML, can label text spans in different +languages or supply string-internal markup needed to display [=bidirectional +text=] properly. It is also possible to use the `rdf:HTML` datatype to encode +such values accurately in JSON-LD.
Despite the ability to encode information as HTML, implementers are strongly -discouraged from doing so, for the following reasons: +discouraged from doing so for the following reasons: