Difference between revisions of "Mobile Driver's License with WebAPI"
From MgmtWiki
(→Context) |
(→Context) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
# how mDL holder consent to share data is obtained; | # how mDL holder consent to share data is obtained; | ||
# requirements on storage of mDL data and mDL private keys. | # requirements on storage of mDL data and mDL private keys. | ||
− | * If the mDL reader receives the token and URL from the mDL, either during device engagement or device data retrieval, it may retrieve mDL data from the issuing authority via the Internet or locally. If the reader | + | * If the mDL reader receives the token and URL from the mDL, either during device engagement or device data retrieval, it may retrieve mDL data from the issuing authority via the Internet or locally. If the reader chooses to use the internet, either OIDC or WebAPI can be used to retrieve the information. |
* This context discusses only server retrieval using WebAPI over the Internet. (It may be that Device retrieval has been attempted before server retrieval.) | * This context discusses only server retrieval using WebAPI over the Internet. (It may be that Device retrieval has been attempted before server retrieval.) | ||
* Data elements are signed by the issuing authority (IA). | * Data elements are signed by the issuing authority (IA). | ||
Line 13: | Line 13: | ||
* The reader must have a private key and certificate signed by a competent authority. It is theoretically possible for the wallet to check the key. | * The reader must have a private key and certificate signed by a competent authority. It is theoretically possible for the wallet to check the key. | ||
* Revocation methods are mentioned in the standard, but are not defined. | * Revocation methods are mentioned in the standard, but are not defined. | ||
− | * TLS is required | + | * TLS is required for server transfers. TLS client is required, which appears to mean mutual TLS ([[mTLS]]) is required, although other methods are possible. |
− | * One time tokens are required for server transfers. This typically means a packet ID or nonce is supplied. | + | * One-time tokens are required for server transfers. This typically means a packet ID or nonce is supplied. |
− | * CBOR data is used from the mDL in CDDL tstr per RFC 8610 which is converted to json according the RFC 7049 section 4.1. | + | * CBOR data is used from the mDL in CDDL tstr per RFC 8610 which is converted to json according to the RFC 7049 section 4.1. |
* All data element names are prefixed with “org.iso.18013.5.1:”. No provision for a header namespace declaration is defined. | * All data element names are prefixed with “org.iso.18013.5.1:”. No provision for a header namespace declaration is defined. | ||
The following are the data retrieval steps from 8.3.3.2.1 Data retrieval using WebAPI. | The following are the data retrieval steps from 8.3.3.2.1 Data retrieval using WebAPI. | ||
# The Issuing Authority may request consent or presence from the mDL holder. The details of consent or presence are not provided in 18013-5. | # The Issuing Authority may request consent or presence from the mDL holder. The details of consent or presence are not provided in 18013-5. | ||
# An HTTPS POST to the server is made over a secure (encrypted) session. | # An HTTPS POST to the server is made over a secure (encrypted) session. | ||
− | # The message body shall be the mdoc response as defined in clause 8.3.2.2.3.1.2 | + | # The message body shall be the mdoc response as defined in clause 8.3.2.2.3.1.2. |
+ | |||
===Taxonomy=== | ===Taxonomy=== | ||
Line 69: | Line 70: | ||
[[Category: Profile]] | [[Category: Profile]] | ||
[[Category: Identifier]] | [[Category: Identifier]] | ||
+ | [[Category: Mobile]] |
Latest revision as of 10:25, 6 December 2021
Full Title
How to use WebAPI with a Mobile Driver's License (mDL) compliant with ISO 18013-5,
Context
- The following items are out of scope for ISO 18013-5:
- how mDL holder consent to share data is obtained;
- requirements on storage of mDL data and mDL private keys.
- If the mDL reader receives the token and URL from the mDL, either during device engagement or device data retrieval, it may retrieve mDL data from the issuing authority via the Internet or locally. If the reader chooses to use the internet, either OIDC or WebAPI can be used to retrieve the information.
- This context discusses only server retrieval using WebAPI over the Internet. (It may be that Device retrieval has been attempted before server retrieval.)
- Data elements are signed by the issuing authority (IA).
- The mDL produces a signature or message authentication code over session data. The private key used to authenticate the session data is stored only in the mDL. The corresponding public key in turn is signed by the IA.
- Communications between mDL and mDL reader are encrypted and authenticated. The method is not defined.
- The reader must have a private key and certificate signed by a competent authority. It is theoretically possible for the wallet to check the key.
- Revocation methods are mentioned in the standard, but are not defined.
- TLS is required for server transfers. TLS client is required, which appears to mean mutual TLS (mTLS) is required, although other methods are possible.
- One-time tokens are required for server transfers. This typically means a packet ID or nonce is supplied.
- CBOR data is used from the mDL in CDDL tstr per RFC 8610 which is converted to json according to the RFC 7049 section 4.1.
- All data element names are prefixed with “org.iso.18013.5.1:”. No provision for a header namespace declaration is defined.
The following are the data retrieval steps from 8.3.3.2.1 Data retrieval using WebAPI.
- The Issuing Authority may request consent or presence from the mDL holder. The details of consent or presence are not provided in 18013-5.
- An HTTPS POST to the server is made over a secure (encrypted) session.
- The message body shall be the mdoc response as defined in clause 8.3.2.2.3.1.2.
Taxonomy
Term | mDL Purpose or Behavior | WebAPI issues |
Holder | The person that has the license to drive | |
Wallet | the device software that holds the mDL (aka mdoc) | software statement |
Reader | the device used by the verifier to get data from the mDL | client (RP) |
user agent | A program, such as a browser or other Web client, that mediates the communication between holders, issuers, and verifiers. (This does not match DID core well at all.) | Place to store Cookies |
Attacker | a bogus wallet that is attempting to illicitly gain access or steal data from the reader | |
Issuing Authority | typically the DMV or other state agency. | used in Federation |
Problems
- If the Reader might use server retrieval for some transactions, but not all, then the type of access can leak information from the reader to an attacker.
- Activation of the mDL is not defined in the standard and there are two access methods: NFC and QR. Other access methods available to the wallet MUST not be used for activation.
- Oddly the issuing authority is responsible to avoid unauthorized access by an mDL reader when mDL activation is triggered by NFC or QR.
- Nothing is said about the holder's role in activation.
- The reader must support both NFC and QR according to the standard.
- Protect storage of holder data in the wallet is not defined in the standard. Again, the issuing authority is given responsibility for storage in the wallet.
- The OIDC standard does not make any claim about data contained in JWT packets. The local implementation needs to clarify the protect levels needed by the transfers.
Solutions
- The transaction has been designed such that it is not necessary for the mDL holder to physically hand over the mobile device to the mDL verifier.
- A wallet that wants to be activated only from local devises should never use and radios than NFC as the others can be very distant from the holder.
- Even after reading data from the wallet, the reader can still decide to go to the Internet to retrieve data on the holder.
Example
From 18013-5
Step 3 Authorisation Authorisation Request: