Difference between revisions of "Mobile Driver's License with WebAPI"
From MgmtWiki
(Created page with "==Full Title== How to use WebAPI with a Mobile Driver's License (mDL) compliant with ISO 18013-5, ==Context== * If the mDL reader receives the token and URL from the...") |
(→Context) |
||
Line 4: | Line 4: | ||
==Context== | ==Context== | ||
* 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. | * 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 | + | * 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). | ||
* 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. | * 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. | ||
Line 10: | Line 10: | ||
* 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 Server transfers. TLS client is required, which appears to mean mutual TLS 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 the RFC 7049 section 4.1. |
Revision as of 07:52, 24 May 2021
Full Title
How to use WebAPI with a Mobile Driver's License (mDL) compliant with ISO 18013-5,
Context
- 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 Server transfers. TLS client is required, which appears to mean mutual TLS 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 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.2 using code flow, which seems utterly pointless for cases where the client is already certified. In which case only step 3 wold be needed.
- It appears that configuration discovery using OpenID Connect Discovery is required to get the authz endpoint. This seems inefficient and probably unneccessary.
- The reader requires a clientid which can be obtained from a client registration process (but that seems to conflict with the idea that all readers are registered.)
- Reader (client) sends authorization endpoint the clientid and token from mdoc as login_hint.
- For some unexplained reason the authz resp is send to the mdoc with the authz code.
- Reader (client) sends authz code to "token" endpoint.
- The Token endpoint sends the id_token.
Taxonomy
Term | mDL Purpose or Behavior | OIDF term or concept |
Holder | The person that has the license to drive | the subject |
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 | Used in FAPI |
Issuing Authority | typically the DMV or other state agency. | used in Federation |
Problems
- If the Reader might use the internet 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: