This application relates to digital communications in a network environment. More particularly, this application discloses techniques for a cross-domain digital verifiable credential exchange.
As credential verification systems evolve from paper-based credentials and simple digital tokens (often accessed with usernames and passwords), Verifiable Credentials (VC) are emerging as the leader of secure digital tokens. As with any emerging technology, there are many different credential types and formats.
From the diverse set of emerging VC formats, there will at some point be a consolidation into a finite subset of formats and standards. However, this number will probably never reduce to a single format. It is also unlikely that all VC verifiers will support all formats. This leaves users in a predicament.
As digital identity becomes more widely adopted and the number and types of verifiable credentials increases, a new type of compatibility process is required. There is a need for techniques that enable a VC of one type to be presented, verified, and used to request a credential of another type.
This paradigm would enable, for example, a visitor possessing a VC from a home country to present it for identity verification upon entry into a foreign country and receive a visitor pass credential (e.g., as a VC) that complies with the rules, regulations, governance model, and credential type stipulated by the foreign country's governing authority. This process serves many purposes, including identity verification upon immigration and issuance of a locally accepted VC. By receiving a visitor VC in the local format, visitors and immigrants will have a much easier time using their VCs with merchants, hotels, hospitals, etc. without having to explain the format of their home country's VC or why their VC technology may not work locally. Those skilled in the art will understand that numerous additional use cases are enabled by this more general process.
The known Decentralized Identity Trust Diamond is characterized in
Thus, elements 100, 102, 104 and 106 are machines in a networked environment. The arrows between the machines represent interactions between the machines in the networked environment.
While most VCs are conceptually similar to other types of VCs, they are often implemented using different standards, protocols, and/or modes. Some examples of existing identity and VC protocols and formats include: W3C VC Data Model, ISO/IEC 18013-5:2021 Personal Data (mDL), OpenID for Verifiable Credentials, AnonCreds, etc. Each of these standards is focused on identity, permissions, attributes, assertions, and verifications; however, the methods and formats they use are different and usually incompatible. They also differ in whether they employ selective disclosure, which enables some credential types to assert only part of the credential's data elements or whether they must assert (provide) all of them. An additional difference is whether they facilitate Zero Knowledge Proofs (ZKP), which enable credential presentations to answer credential proof presentation requests (e.g., “Are you over 18?”) without providing the actual data elements (e.g., birth date). Another difference is whether credential proofs can be answered in offline settings (e.g., when a Verifier cannot access the VDR).
The differences in today's identity and VC formats result in VCs or digital identities issued by one Issuer (e.g., national government) being incompatible or unacceptable by Verifiers in other locations (e.g., foreign governments, merchants, etc.) or digital environments. While some VC standards make efforts to include extra data or convert existing data to make one VC compatible in multiple VC governance environments, this approach is problematic due to the wide range of data and formatting employed by different VC environments. For example, if a school issues a VC to its students, those students may be unable to successfully present that VC at local merchant facilities, for national travel, etc.
Thus, there is a need to address shortcomings associated with existing digital verifiable credentials.
A non-transitory computer readable storage medium has instructions executed by a processor to host a digital verified credential exchange in network communication with different verified credential operating environments. The digital verified credential exchange has a verified credential exchange engine in network communication with user and system interfaces for interacting with a verified credential holder machine, a credential database, a verified credential operating environment operating attributes database, an exchanged verified credential database, and an exchanged verified credential status monitor. The digital verified credential exchange automatically forms a reissued digital verified credential from a first verified credential operating environment for execution in a second verified credential operating environment.
The invention is more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, in which:
Like reference numerals refer to corresponding parts throughout the several views of the drawings.
Instead of attempting to make every VC standard compatible and interoperable with every other VC standard, a new approach is presented. This new approach introduces a Verifiable Credential Exchange (VCE) system and method.
Under the VCE approach, a Holder of a VC issued in a foreign VC system may present their VC to a VC Exchange Service and request a new VC (Exchanged VC; EVC) that is interoperable and compatible with the local VC standard and format. Although the term ‘exchanged’ is used in this disclosure, this process includes exchanging, duplicating, and issuing different VCs, each of which can be performed for a variety of reasons.
The VCE will receive any verifiable data that can be either provided by a user (Holder), required by the originating VC (or more than one VC), or required by the target VC. The presented data will be verified and used to create an EVC that is applicable to the target/local VC standard and format and will issue it to the Holder. Upon receipt of the newly-issued EVC, the Holder may easily operate anywhere or with any service that accepts the EVC. The collection of locales, websites, services, partners, wallets, etc. that can interoperate with the EVC and the Holder of such is known as a VC Operating Environment (VCOE). VCOE's may be large or small, official or unofficial, formal or ad hoc, and may be operated by communities, businesses, colleges, governments, special interest organizations, groups, or individuals. The processes described herein encompass the exchange of VCs for EVCs regardless of the distinction between VC types, data, or operating parameters.
As discussed in connection with
For the VCE 200 to perform its functions, it must interoperate with the host VCOE corresponding to the VC being presented and also the target VCOE corresponding to the VC being sought or requested. To perform these tasks, the VCE must do the following (for both the originating and target VCs/VCOEs):
Each of the preceding steps is described in additional detail in the subsequent sections.
To be able to receive and process a presented VC that was created within a particular VCOE, the VCE must first incorporate the Operating Attributes (OA) selected by the VCOE. Example operating attributes include VC standards, communication protocols, communication endpoints, verifiable data registry, software SDK libraries (e.g., plugins), credential/key references, APIs and the like.
The OAs and process of incorporating them includes the following:
For some VCOEs, this integration may be performed independent of the knowledge or approval of the VCOE. However, other VCOEs may require the VCE to enroll as an official participating member of the VCOE and obtain any necessary credentials, cryptographic materials, or tokens required for participation. Implementing a VCOE's OA will enable the VCE to receive and verify a VC presentation, access any data presented through the VC presentation, and issue a new EVC in the target VCOE's format.
When a Holder presents a VC to the VCE, the Holder may provide some or all of the data contained within the original VC. Similarly, the Holder may present additional verifiable data to the VCE, which it wishes to include in the new exchanged or converted EVC. Additionally, the Holder may present multiple VCs (and their related data elements) from which the new EVC is to be created. Since the VC presentation may include elements from multiple VCs possessed by the Holder, the VCE must also implement the OAs for each of the required VCs/VCOEs.
Upon receipt of a VC presentation (potentially consisting of data elements from multiple VCs), the VCE will verify the presentation for authenticity, validity, etc. and will extract any of the presented data elements for inclusion into the resulting EVC.
To return an EVC to a requesting Holder, the VCE may employ one or more of the processes allowed by the corresponding VCOE. In many cases, the VCE may be able to communicate with an existing Issuer that is already operating within the VCOE. In this process, the VCE will create a request for a new credential that conforms to the request format of the target VCOE and contains the Holder-supplied data types. This message will be sent to the Issuer on behalf of the requesting Holder. Upon validation, payment, and eligibility requirements verification, the request will be processed by the contacted Issuer. After performing the issuance process, the newly issued VC (i.e., EVC) will be returned to the Holder either directly or via the EVC platform.
If EVC issuance requests cannot be processed by submitting them to an existing Issuer already operating within the target VCOE, then the VCE must itself become an Issuer within the target VCOE system. To do so, the VCE must conform to the Issuer-specific requirements stipulated by the VCOE's OA. This will normally require the VCE to formally enroll (and be accepted) as an Issuer in the target VCOE's environment. Often, the VCOE may need to approve the VCE as a type of Issuer that will exchange credentials from another VCOE to issue new credentials according to the local VCOE's OAs. This will often require the VCE to accept any terms and conditions necessary to become a VC Issuer for the target VCOE.
When a VC is presented, the accompanying data often contains a validity period, which can be a fixed expiration date, a specified timeframe, or an unlimited or indefinite timeframe. The VCE may also impose a shorter validity period for a variety of reasons (e.g., original or target VCOE requirements, fees for valid timeframes, etc.). Since the new EVC essentially needs to mirror the originally presented VC, the VCE will need to also issue the new VC with the appropriate expiration date.
In addition to simply setting the expiration attributes in the new VC, the VCE may also monitor the originally presented VC and the hosting VCOE for a change in validity status. For example, a driver's license VC issued with a 5-year validity period may be revoked early by the hosting VCOE as a penalty for a driving offense. Given that early revocation situations may exist, the VCE should periodically re-validate the validity status of the original presented VC. This can be done by the VCE checking the original VCOE source or if the original VCOE's OAs facilitate, the VCE can receive a revocation notice from the original VCOE. If the originally presented VC is found to be expired or revoked, then the VCE will need to revoke or expire the EVC.
The VCE is a system and method for bridging between VCOEs so that a Holder can exchange a VC issued by one VCOE for one issued in another VCOE. The major elements are depicted in
To support a new type or source of VC, it is necessary to integrate the corresponding VCOE into the VCE. This may be done manually, semi-automated (with a combination of manual and automated processing), or via fully automated processing. In one embodiment, to enroll a VCOE, the following steps are performed:
The OA material added during the enrollment process will be later used by the VC Exchange Engine to access the VCOEs. The VC Exchange Engine 304 accesses the VCOE to verify a VC presentation and also to create/issue a new EVC in the target VCOE.
When a VC Holder requests an EVC, two preconditions must have been previously met. First, the VCOE(s) corresponding to the presented VC must have previously been enrolled using the previously described process. Second, the target or requested VC format must also have had the corresponding VCOE enrolled in the VCE. If either of these conditions has not been met, then the EVC request process will not succeed. The process steps and their explanations are enumerated as follows:
With the newly received EVC, the Holder may use it within the corresponding VC environment with Verifiers that accept this credential type. As an example, a visitor to a foreign country will have submitted a VC presentation to the VCE, requested a locally accepted VC, and received the EVC for use within the local country. The new EVC will contain any data from the original VC that applies to the schema of the requested VC type (EVC). The EVC will have either the same VC expiration date as the original credential, an earlier expiration date mandated by the local country, or some other earlier time determined by some other means.
Since the EVCs must not persist beyond the validity date of the original VC or must adhere to an earlier expiration date, the desired date is incorporated into the EVC upon issuance. Additionally, the original VC may be revoked (by the VCOE) prior to the stated expiration date. As an example, a Holder may have a VC revoked for non-payment of a required subscription, the completion of a task for which the VC was issued, or some other revocation criteria.
The following characterizes the process steps for monitoring the validity status of the original VC and performing a revocation process of the EVC, if necessary. In this process, the EVC Status Monitor operates independently from other VCE system processes. The following process steps describe the actions of the EVC Status Monitor:
In an alternative embodiment, the EVC Status Monitor 312 may receive incoming communications from the original VC presentation's VCOE(s). Such incoming communications may include notifications or other instructions to the VCE intended to convey notice that the original VC/VCOEs have been revoked, are pending revocation, or are suspended in some way.
When the Holder requests an EVC, they will send an EVC Request Packet to the VCE. This packet will enumerate the type of EVC that they are requesting, which will also provide any required data, identifiers, signatures, etc. Upon receiving the EVC Request Packet, the VCE will prepare a VCE Response Packet that contains both logistical and cryptographic material request information to convey a challenge-response process to the requesting Holder. While the actual format and data elements conveyed will differ based on the VC types used and the systems implemented, the general format for a Holder EVC Request Packet and VCE Response Packet follow.
When the Holder computes a VC presentation proof response, it will contain specific logistical and cryptographic information based on the VC type and processing system used. When an EVC is issued, it will be returned to the requestor and contain specific logistical and cryptographic information based on the VC type and exchange protocols used. Exemplary Holder Proof Response Packet and VCE EVC Issue Packet follow.
In this process, the Holder requests that the VCE create a new EVC that corresponds to the identity information and data contained within the VC Presentation that the Holder presents. In this embodiment, the process is simple.
The following steps describe an Expanded EVC Request from Holder.
When credentials are exchanged, the new credentials may be stored in the Holders main wallet alongside the original credentials. This is possible since the new credential (EVC) will have a different ID value. However, this could also be confusing to users wondering which credential to use in each situation. To simplify this confusion, there are a few changes that should be made to the Holder Wallet to better support interactions with the Verifiable Credential Exchange.
The Holder Wallet needs a way to view each VCOE that they have credentials for and select which is the active VCOE (persona).
In travel use cases, a Holder will travel from their home VCOE to a foreign VCOE. In this case, the wallet could automatically detect the new location and offer the new locale's VCOE as the highlighted VCOE, which is depicted in
Suppose the user needs to prove identity information. The presentation proof request will request the information from the Wallet. The Wallet needs to know the active persona to present proofs from the VCs that are active, and not for example, VCs from their home persona.
When a Holder is travelling to a new VCOE jurisdiction, it is convenient for the Holder to quickly determine which VCs are available in the new VCOE, and which credentials from the Holder's current VCOE may be converted into EVCs that can be used in the new VCOE VCs. This type of listing of credential exchange options is referred to as a VCOE Credential Marketplace.
Holder Wallets can actively enable Holders to easily discover VCOE Credential Marketplaces and the opportunities they contain. For example:
This credential marketplace would be more than visual, as it would enable the Holder to very simply request and present VCs. If the user selects a VCOE Identity credential as shown in
In many embodiments, the marketplace contains a variety of EVC entries that Holders select from. Each EVC entry specifies the EVC type, the required VCs, issuance processes, data, authorizations, usage environments, time durations, etc. that are pertinent to each EVC. In these embodiments, Holders initiate a request based on the EVCs sought. In this embodiment, Holders request EVCs that they are seeking.
In other embodiments, the credential marketplace could solicit visiting Holders to offer a variety of EVC types that are available for exchange or purchase. In one embodiment, a Holder could present the VC types they possess (using privacy preserving processes) to the marketplace. Upon evaluating the VC types and other data presented by the Holder, the marketplace recommends a variety of EVC options that the Holder selects from. In this embodiment, the Holder approaches the marketplace, which in turn prepares and presents EVC options.
While the scenario traveling from a home VCOE to a foreign VCOE is the main use case presented, other scenarios will also benefit from this process. In other embodiments, traveling from one VCOE to another is not limited to the exchange of legal VCs such as a driver's license or passport. In another embodiment, commercial travel deals may be requested or offered from the marketplace. In another embodiment, a VCOE set may be requested and received for use in a specific location such as an amusement park or shopping venue. In another embodiment, VCs may be exchanged for EVCs in online gaming or reality environments. In another embodiment, this process may be used for commercial loyalty card solutions.
An embodiment of the present invention relates to a computer storage product with a computer readable storage medium having computer code thereon for performing various computer-implemented operations. The media and computer code may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well known and available to those having skill in the computer software arts. Examples of computer-readable media include but are not limited to: magnetic media, optical media, magneto-optical media, and hardware devices that are specially configured to store and execute program code, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer code include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using an object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hardwired circuitry in place of, or in combination with, machine-executable software instructions.
The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that specific details are not required to practice the invention. Thus, the foregoing descriptions of specific embodiments of the invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed; obviously, many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described to best explain the principles of the invention and its practical applications, they thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the following claims and their equivalents define the scope of the invention.
This application claims priority to U.S. Provisional Patent Application 63/644,402, filed May 8, 2024, the contents of which are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
6996718 | Henry | Feb 2006 | B1 |
8307003 | Sheth | Nov 2012 | B1 |
9424419 | Kruse | Aug 2016 | B1 |
9594922 | McGuire | Mar 2017 | B1 |
9600656 | Wellinghoff | Mar 2017 | B1 |
9721147 | Kapczynski | Aug 2017 | B1 |
10044695 | Cahill | Aug 2018 | B1 |
10248798 | Jayakumar | Apr 2019 | B1 |
10275736 | Annam | Apr 2019 | B1 |
10331695 | Stickle | Jun 2019 | B1 |
10402549 | Newstadt | Sep 2019 | B1 |
10554411 | Ashfield | Feb 2020 | B1 |
10628217 | Liverance | Apr 2020 | B1 |
10715507 | Spears | Jul 2020 | B1 |
10740778 | Nair | Aug 2020 | B1 |
11037088 | Woo | Jun 2021 | B1 |
11443180 | Boteanu | Sep 2022 | B1 |
11880836 | Nemethi | Jan 2024 | B1 |
11997108 | Begando | May 2024 | B1 |
20020169967 | Varma | Nov 2002 | A1 |
20050228722 | Embree | Oct 2005 | A1 |
20060242027 | Falic | Oct 2006 | A1 |
20080209224 | Lord | Aug 2008 | A1 |
20100096933 | Smith | Apr 2010 | A1 |
20100199336 | Tan | Aug 2010 | A1 |
20100251242 | Sivasubramanian | Sep 2010 | A1 |
20110173684 | Hurry | Jul 2011 | A1 |
20110314522 | Palanigounder | Dec 2011 | A1 |
20120072976 | Patil | Mar 2012 | A1 |
20120303491 | Hill | Nov 2012 | A1 |
20130268561 | Christie | Oct 2013 | A1 |
20160241559 | Trani | Aug 2016 | A1 |
20160328796 | Acuña-Rohter | Nov 2016 | A1 |
20160343049 | Nair | Nov 2016 | A1 |
20160359633 | Norton | Dec 2016 | A1 |
20170011214 | Cavanagh | Jan 2017 | A1 |
20180068380 | Srinivasan | Mar 2018 | A1 |
20180097793 | Agarwal | Apr 2018 | A1 |
20180183786 | Tardif | Jun 2018 | A1 |
20180278624 | Kuperman | Sep 2018 | A1 |
20190044740 | Smith | Feb 2019 | A1 |
20190102819 | Bilotta | Apr 2019 | A1 |
20190122243 | Mizzone | Apr 2019 | A1 |
20190158487 | Hayes | May 2019 | A1 |
20190319938 | Castinado | Oct 2019 | A1 |
20200057848 | Hecht | Feb 2020 | A1 |
20200058021 | Mittal | Feb 2020 | A1 |
20200065484 | Gordon | Feb 2020 | A1 |
20200082392 | Pishevar | Mar 2020 | A1 |
20200126102 | Bellrose | Apr 2020 | A1 |
20200151423 | Fox | May 2020 | A1 |
20200202336 | Walters | Jun 2020 | A1 |
20200220791 | Aiello | Jul 2020 | A1 |
20200250287 | Singh | Aug 2020 | A1 |
20200279312 | Salameh | Sep 2020 | A1 |
20200358787 | Barker | Nov 2020 | A1 |
20200394183 | Jois | Dec 2020 | A1 |
20200410556 | Kulkarni | Dec 2020 | A1 |
20210182806 | Ornelas | Jun 2021 | A1 |
20210201278 | Annamalai | Jul 2021 | A1 |
20210295431 | Vo | Sep 2021 | A1 |
20210314331 | Singh | Oct 2021 | A1 |
20210374650 | Lee | Dec 2021 | A1 |
20220043902 | Olson | Feb 2022 | A1 |
20220051246 | Barski | Feb 2022 | A1 |
20220054936 | Salik | Feb 2022 | A1 |
20220058633 | Yantis | Feb 2022 | A1 |
20220122100 | Smith | Apr 2022 | A1 |
20220188818 | Roche | Jun 2022 | A1 |
20220188958 | Vasudevan | Jun 2022 | A1 |
20220239483 | Sugarev | Jul 2022 | A1 |
20220255745 | Tiffany | Aug 2022 | A1 |
20220276996 | Gaur | Sep 2022 | A1 |
20220286446 | Hecht | Sep 2022 | A1 |
20220318418 | Goel | Oct 2022 | A1 |
20220335110 | Isaacs | Oct 2022 | A1 |
20220350496 | Mangaly | Nov 2022 | A1 |
20220351170 | Storiale | Nov 2022 | A1 |
20220370778 | Azdoud | Nov 2022 | A1 |
20220391961 | Gupta | Dec 2022 | A1 |
20220414650 | Wotherspoon | Dec 2022 | A1 |
20230020703 | Padinjaruveetil | Jan 2023 | A1 |
20230043398 | Yaplee | Feb 2023 | A1 |
20230065042 | Li | Mar 2023 | A1 |
20230080322 | Smith | Mar 2023 | A1 |
20230087841 | Read | Mar 2023 | A1 |
20230245231 | Teissier | Aug 2023 | A1 |
20230251876 | Mysore Jagadeesh | Aug 2023 | A1 |
20230274244 | Quigley | Aug 2023 | A1 |
20230356091 | Eisenberg | Nov 2023 | A1 |
20230377056 | Yang | Nov 2023 | A1 |
20230401597 | Mayer | Dec 2023 | A1 |
20230409357 | He | Dec 2023 | A1 |
20240037206 | Ramaiah | Feb 2024 | A1 |
20240062621 | Hufnagl-Abraham | Feb 2024 | A1 |
20240089104 | Reineke | Mar 2024 | A1 |
20240098323 | Biggs | Mar 2024 | A1 |
20240100444 | Samarthyam | Mar 2024 | A1 |
20240135402 | Cascio | Apr 2024 | A1 |
20240144324 | deGrandis | May 2024 | A1 |
20240171393 | Bathen | May 2024 | A1 |
20240235191 | Papadopoulos | Jul 2024 | A1 |
20240256643 | Burström | Aug 2024 | A1 |
20240257211 | Bathe | Aug 2024 | A1 |
20240261692 | Sliwka | Aug 2024 | A1 |
20240275596 | Stolbikov | Aug 2024 | A1 |
20240281865 | Zubcevic | Aug 2024 | A1 |
20240348608 | Howell | Oct 2024 | A1 |
20240370865 | Bernardi | Nov 2024 | A1 |
20240370916 | Talma | Nov 2024 | A1 |
20240378600 | Maurya | Nov 2024 | A1 |
Number | Date | Country | |
---|---|---|---|
63644402 | May 2024 | US |