CCC Ts 101 Digital Key r3 1.2.3 Approved
CCC Ts 101 Digital Key r3 1.2.3 Approved
Technical Specification
Version 1.2.3
(CCC-TS-101)
1 VERSION HISTORY
1 LEGAL NOTICE
2 The copyright in this Specification is owned by the Car Connectivity Consortium LLC (“CCC LLC”). Use of
3 this Specification and any related intellectual property (collectively, the “Specification”) is governed by; (a)
4 the license terms contained in this Legal Notice and the Car Connectivity Consortium Specification
5 License Agreement (the “License Agreement”) for anyone who is not a Member of CCC LLC (a “non-
6 Member”); or (b) the terms contained in this Legal Notice and the CCC LLC Limited Liability Company
7 Agreement (the “LLC Agreement”) for any party who is a Member of CCC LLC (a “Member”).
8 Use of the Specification by a non-Member is prohibited unless such non-Member has entered into the
9 License Agreement and downloaded this Specification in accordance with the requirements of CCC LLC.
10 The legal rights and obligations of each Member are governed by the LLC Agreement and their applicable
11 Membership Agreement, including without limitation those contained in Article 10 of the LLC Agreement.
12 In addition to the terms of the LLC Agreement and its exhibits and appendices, CCC LLC hereby grants
13 each Member a right to use and to make verbatim copies of the Specification for the purposes of
14 implementing the technologies specified in the Specification to their products (“Implementing Products”)
15 under the terms of the LLC Agreement (the “Purpose”). Members are not permitted to make available or
16 distribute this Specification or any copies thereof to non-Members other than to their Affiliates (as defined
17 in the LLC Agreement) and subcontractors but only to the extent that such Affiliates and subcontractors
18 have a need to know for carrying out the Purpose and provided that such Affiliates and subcontractors
19 accept confidentiality obligations similar to those contained in the LLC Agreement. Each Member shall be
20 responsible for the observance and proper performance by such of its Affiliates and subcontractors of the
21 terms and conditions of this Legal Notice and the Agreement. No other license, express or implied, by
22 estoppel or otherwise, to any intellectual property rights are granted to Members herein.
23 THE SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES, EXPRESS OR IMPLIED,
24 INCLUDING WITHOUT LIMITATION ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A
25 PARTICULAR PURPOSE, NONINFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY
26 RIGHTS, AND COMPLIANCE WITH APPLICABLE LAWS. Notice for Members: Any use of the
27 Specification not in compliance with the applicable terms of this Legal Notice, the LLC Agreement, and
28 Membership Agreement is prohibited and any such prohibited use may result in termination of the
29 applicable Membership Agreement and other liability permitted by the applicable agreement or by
30 applicable law to CCC LLC or any of its members for patent, copyright, and/or trademark infringement.
31 Notice for Non-Members: Any use of the Specification not in compliance with the applicable terms of this
32 Legal Notice or the License Agreement for non-Members is prohibited and any such prohibited use may
33 result in termination of the non-Member’s License Agreement and other liability permitted by the License
34 Agreement or by applicable law to CCC LLC or any of its members for patent, copyright, and/or trademark
35 infringement.
36
37 NOTHING IN THE SPECIFICATION CREATES ANY WARRANTIES, EITHER EXPRESS OR IMPLIED,
38 REGARDING SUCH LAWS OR REGULATIONS. ALL LIABILITY, INCLUDING LIABILITY FOR
39 INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS OR FOR NONCOMPLIANCE WITH
40 LAWS RELATING TO USE OF THE SPECIFICATION IS EXPRESSLY DISCLAIMED. BY USE OF THE
41 SPECIFICATION, EACH MEMBER AND NON-MEMBER EXPRESSLY WAIVES ANY CLAIM AGAINST
42 CCC LLC AND ITS MEMBERS RELATED TO USE OF THE SPECIFICATION.
43 Disclaimers for Members: Each Member hereby acknowledges that its Implementing Products may be
44 subject to various regulatory controls under the laws and regulations of various jurisdictions worldwide.
45 Such laws and regulatory controls may govern, among other things, the combination, operation, use,
46 implementation, and distribution of Implementing Products. Examples of such laws and regulatory
1 controls include, but are not limited to, road safety regulations, telecommunications regulations,
2 technology transfer controls, and health and safety regulations. Each Member is solely responsible for the
3 compliance by their Implementing Products with any such laws and regulations and for obtaining any and
4 all required authorizations, permits, or licenses for their Implementing Products related to such
5 regulations within the applicable jurisdictions. Each Member acknowledges that nothing in the
6 Specification provides any information or assistance in connection with securing such compliance,
7 authorizations, or licenses.
8 Disclaimers for non-Members: Each non-Member that downloads or otherwise obtains access to the
9 Specification acknowledges that its limited copyright license is for the sole purpose of evaluation and
10 such license does not extend to implementations. Products that are the result of implementing the
11 Specification may be subject to various regulatory controls under the laws and regulations of various
12 jurisdictions worldwide. Such laws and regulatory controls may govern, among other things, the
13 combination, operation, use, implementation, and distribution of products. Examples of such laws and
14 regulatory controls include, but are not limited to, road safety regulations, telecommunications
15 regulations, technology transfer controls, and health and safety regulations. Each non-Member that
16 downloads or otherwise obtains access to the Specification is solely responsible for decisions whether to
17 become a Member of CCC LLC and whether to implement products based upon the Specification, and
18 non-Member acknowledges that if such non-Member implements products then it is solely responsible for
19 the compliance with any such laws and regulations and for obtaining any and all required authorizations,
20 permits, or licenses for their products related to such regulations within the applicable jurisdictions. Each
21 non-Member that downloads or otherwise obtains access to the Specification acknowledges that nothing
22 in the Specification provides any information or assistance in connection with securing such compliance,
23 authorizations, or licenses for products that may implement the Specification.
24
25 CCC LLC reserves the right to adopt any changes or alterations to the Specification as it deems necessary or
26 appropriate.
28
1 TABLE OF CONTENTS
2 VERSION HISTORY.................................................................................................................................................. 2
3 LEGAL NOTICE ........................................................................................................................................................ 3
4 TABLE OF CONTENTS ............................................................................................................................................ 5
5 LIST OF FIGURES ................................................................................................................................................... 17
6 LIST OF TABLES ..................................................................................................................................................... 20
7 LIST OF LISTINGS .................................................................................................................................................. 26
8 ABBREVIATIONS AND ACRONYMS .................................................................................................................. 29
9 DEFINITIONS ........................................................................................................................................................... 32
10 NOTATIONS ............................................................................................................................................................. 33
11 CODE LISTINGS ...................................................................................................................................................... 35
12 1 INTRODUCTION AND SCOPE ..................................................................................................................... 36
13 2 SYSTEM ARCHITECTURE ........................................................................................................................... 37
14 2.1 OVERVIEW ..................................................................................................................... 37
15 2.2 HIGH-LEVEL FEATURES ................................................................................................. 37
16 2.3 HIGH LEVEL ARCHITECTURE .......................................................................................... 37
17 2.4 ACTORS ......................................................................................................................... 39
18 Vehicle................................................................................................................... 39
19 Vehicle NFC Readers [WCC1] ............................................................................. 39
20 Vehicle Bluetooth LE Module [WCC2/WCC3]..................................................... 40
21 Vehicle UWB Module [WCC3] ............................................................................. 40
22 Vehicle OEM Server ............................................................................................. 40
23 Key Tracking Server (KTS) ................................................................................... 40
24 Devices .................................................................................................................. 41
25 Device OEM Server .............................................................................................. 41
26 Relay Server .......................................................................................................... 41
27 2.5 RELATIONSHIPS ............................................................................................................. 42
28 Door NFC Reader (3) [WCC1] ............................................................................ 42
29 Console NFC Reader (4) [WCC1] ........................................................................ 42
30 Bluetooth LE Interface (11) [WCC2/WCC3] ........................................................ 42
31 UWB Interface (12) [WCC3] ................................................................................ 43
32 Owner-to-Friend Device Link (via (2), (6), (8), and (7))...................................... 43
33 Owner or Friend Device to Vehicle OEM Server (10, 9) ..................................... 43
34 Telematics Link (1) ............................................................................................... 43
35 Owner/Friend Device OEM Server Link (2,7) ...................................................... 43
36 Vehicle OEM Server to KTS (5) ............................................................................ 43
37 Owner/Friend Device OEM Server to Vehicle OEM Server (6,8)........................ 44
38 2.6 DEVICE STRUCTURE....................................................................................................... 45
1 LIST OF FIGURES
2 Figure 2-1: Digital Key Architecture with Actors and Their Relationships 38
3 Figure 2-2: Device Functional Elements. 45
4 Figure 2-3: Domain Versions 49
5 Figure 2-4: D-VS Agreement for Key Tracking 52
6 Figure 2-5: Version Agreement after Device Software Update 54
7 Figure 2-6: Example – manageKey() usage based on D-VS agreed version 55
8 Figure 2-7: V-OD-FW Agreement after Vehicle SW Update 56
9 Figure 4-1: Applet Instance Layout 65
10 Figure 4-2: Friend Digital Key Structure and Entitlements Attestation 66
11 Figure 4-3: Mailboxes Read/Write Permissions 69
12 Figure 4-4: Owner Device Private Mailbox Signaling 70
13 Figure 4-5: Slot Identifier Bitmap Assignment 71
14 Figure 4-6: Owner Device Immobilizer Token Signaling 72
15 Figure 4-7: Slot Identifier List to Confidential Mailbox mapping 73
16 Figure 6-1: Owner Pairing NFC Exchanges 95
17 Figure 6-2: Owner Pairing Flow–- Phase 0/1: Preparation/Initiation 96
18 Figure 6-3: Owner Pairing Flow–- Phase 2: First NFC Session 98
19 Figure 6-4: SPAKE2+ Flow 100
20 Figure 6-5: Key Creation Data Transfer to Device 101
21 Figure 6-6: Key Creation Data Transfer to Device 102
22 Figure 6-7: Key Creation Info Retrieval by Vehicle 104
23 Figure 6-8: Owner Pairing Flow – Phase 3: Second NFC Session 111
24 Figure 6-9: Error Management of Different Phases in Owner Pairing 115
25 Figure 6-10: Owner Pairing Flow – Phase 4: Finalization 116
26 Figure 6-11: Vehicle and Device Transaction Timeout 119
27 Figure 7-1: Standard Transaction Flow 122
28 Figure 8-1: Fast Transaction Flow 123
29 Figure 10-1: Check Presence Transaction 127
30 Figure 13-1: REV_100: Friend Key Termination in Vehicle 169
31 Figure 13-2: REV_100a: Friend Key Termination in Vehicle (Vehicle Required to be Online) 170
32 Figure 13-3: REV_110/120: Friend Key Termination in Owner/Friend Vehicle OEM Account 171
33 Figure 13-4: REV_130/140: Friend Key Termination on Owner Device Natively/in Vehicle OEM App 172
34 Figure 13-5: REV_150: Friend Key Termination Based on Expiry Date of the Key 173
35 Figure 13-7: REV_160: Friend Key Termination by Device OEM (Device Security Issue) 175
36 Figure 13-8: REV_160a: Friend Key termination by Device OEM and Friend Device is Offline 176
37 Figure 13-9: REV_170: Friend Key Termination Due to Remote Wipe of Device 177
38 Figure 13-10: REV_200/210: Friend Key Termination on Friend Device Natively/in Vehicle OEM App 178
39 Figure 13-11: REV_220: Friend Key Termination Due to Local Wipe of Device 179
40 Figure 13-12: REV_300: Friend Key Suspension by Device OEM Account 180
41 Figure 13-13: REV_310: Friend Key Resume in Device OEM Account or on Device 181
42 Figure 13-14: REV_310: Friend Key Resume Using ResumeAttestation 181
1 Figure 13-15: REV_400: Owner Key Deletion in Vehicle UI (Change of Device) 183
2 Figure 13-16: REV_400a: Owner Key Deletion in Vehicle UI (Change of Device) 184
3 Figure 13-17: REV_600: Owner key suspension due to device reported lost/stolen 185
4 Figure 13-18: REV_610: Owner key resumption after device reported lost/stolen 186
5 Figure 13-19: REV_700: Unpairing in Vehicle UI (Sale of Device) 187
6 Figure 13-20: REV_700a: Unpairing in Vehicle UI (Vehicle Required to be Online) 188
7 Figure 13-21: REV_710: Unpairing in Vehicle OEM App on Owner Device 189
8 Figure 13-22: Example Step 1: After Owner Pairing 191
9 Figure 13-23: Example Step 2: Device Fully Refilled 192
10 Figure 13-24: Example Step 3: Key Shared with Friend 192
11 Figure 13-25: Example Step 4: Refill of Shared Slot Identifier 193
12 Figure 13-26: Example Step 5a: Key Termination in Vehicle 193
13 Figure 13-27: Example Step 5b: Key Termination in Device 194
14 Figure 14-1: Message Authentication and Privacy Encryption 195
15 Figure 14-2: Authentication and Privacy Encryption Certificate Chain 197
16 Figure 15-1: Authentication Command Flows Over Contactless Interface 207
17 Figure 15-2: Authentication Command Flows Over Wired Interface 207
18 Figure 16-1: Variant 1 Certification Chain Model 276
19 Figure 16-2: Variant 2 Certification Chain Model 277
20 Figure 19-1: Bluetooth LE Link Layer Connection Establishment. 343
21 Figure 19-2: L2CAP Connection-Oriented Channel. 343
22 Figure 19-3: Bluetooth LE Pairing and Encryption Setup. 345
23 Figure 19-4: Passive Entry Flow Diagram. 354
24 Figure 19-5: Connection performance in relationship with device, transmitter, and receiver requirements. 356
25 Figure 19-7: Synchronization Methods. 392
26 Figure 19-8: Synchronization state between device and anchor. 393
27 Figure 19-9: Time Synchronization Uncertainty Flow Diagram. 395
28 Figure 19-10: Successful Bluetooth LE timeSync at BT connection (Procedure 0). 396
29 Figure 19-11: Successful Bluetooth LE timeSync triggered by vehicle (Procedure 1). 397
30 Figure 19-12: Unsuccessful Timesync message. 397
31 Figure 19-13: Bluetooth LE Timesync message flow example 1. 398
32 Figure 19-14: Time Synchronization flow diagram example 2. 399
33 Figure 19-15: Bluetooth LE Time Sync message flow example 3. 400
34 Figure 19-16: Owner Pairing Flow for Bluetooth LE/UWB. 402
35 Figure 19-17: Bluetooth LE Secure OOB Pairing Prep. 405
36 Figure 19-18: Capability Exchange. 407
37 Figure 19-20: Head Unit Pairing Flow Diagram. 410
38 Figure 19-21: URSK Derivation Flow in a dedicated Standard Transaction 413
39 Figure 19-22: Flow Selection for Establishing Secure Ranging 415
40 Figure 19-23: Secure Ranging Setup Flow. 416
41 Figure 19-24: Sub-Optimal Flow. 417
42 Figure 19-25: Ranging Session State Machine. 418
43 Figure 19-26: Ranging Suspend Accepted Flow. 418
44 Figure 19-27: Ranging Suspend Delayed Flow. 419
1 LIST OF TABLES
1 Table 15-26: View Endpoint Identifier Response in Internal Buffer ......................................................................... 235
2 Table 15-27: View Instance CA Response in Internal Buffer ................................................................................... 235
3 Table 15-28: AUTH0 P1, P2 Parameters................................................................................................................... 236
4 Table 15-29: AUTH0 Command Payload ................................................................................................................. 237
5 Table 15-30: AUTH0 Response Payload................................................................................................................... 237
6 Table 15-31: AUTH1 Vehicle Authentication Data Fields ....................................................................................... 238
7 Table 15-32: AUTH1 Command Payload ................................................................................................................. 239
8 Table 15-33: AUTH1 Response Payload Before Encryption .................................................................................... 239
9 Table 15-35: PRESENCE0 Response Payload .......................................................................................................... 240
10 Table 15-36: PRESENCE1 Command Payload ........................................................................................................ 241
11 Table 15-37: PRESENCE1 Vehicle Authentication Data Fields ............................................................................... 241
12 Table 15-38: PRESENCE1 Response Payload Before Encryption ........................................................................... 241
13 Table 15-39: READ BUFFER Command Payload for Format 2 .............................................................................. 242
14 Table 15-40: Exchange Command Decrypted Payload ............................................................................................. 244
15 Table 15-41: Exchange Response Decrypted Payload .............................................................................................. 245
16 Table 15-42: CONTROL FLOW P1 Parameters ....................................................................................................... 246
17 Table 15-43: CONTROL FLOW P2 Parameters ....................................................................................................... 246
18 Table 15-44: CONTROL FLOW P1/P2 Values for Applet ....................................................................................... 247
19 Table 15-45: CREATE ENCRYPTION KEY Command Payload............................................................................ 248
20 Table 15-46: Encryption Key Attestation Data Fields ............................................................................................... 249
21 Table 15-47: Encryption Key Attestation .................................................................................................................. 249
22 Table 15-48: GET PRIVATE DATA Command Payload ......................................................................................... 250
23 Table 15-49: SET PRIVATE DATA Command Payload ......................................................................................... 251
24 Table 15-50: SET CONFIDENTIAL DATA Command Payload ............................................................................. 251
25 Table 15-51: SET CONFIDENTIAL DATA Internal Buffer Content Before Processing ........................................ 251
26 Table 15-52: SETUP ENDPOINT Command Payload ............................................................................................. 253
27 Table 15-53: SETUP INSTANCE Command Payload.............................................................................................. 254
28 Table 15-54: SIGN Command Payload ..................................................................................................................... 255
29 Table 15-55: SIGN Command Payload ..................................................................................................................... 255
30 Table 15-56: SIGN Data Fields ................................................................................................................................. 255
31 Table 15-57: SIGN Response .................................................................................................................................... 256
32 Table 15-58: MANAGE UA Command Payload ...................................................................................................... 257
33 Table 15-59: Delete Ranging Keys Request. ............................................................................................................. 258
34 Table 15-60: Receiver Endpoint Key Attestation Signed by Sender ......................................................................... 269
35 Table 15-61: Arbitrary Data Attestation .................................................................................................................... 271
36 Table 19-1: AdvA field of ADV_IND. ...................................................................................................................... 347
37 Table 19-2: AdvData field of ADV_IND. ................................................................................................................. 347
38 Table 19-3: Definition of IntentConfiguration byte................................................................................................... 347
39 Table 19-4: Mandatory fields in Pairing Request. ..................................................................................................... 347
40 Table 19-5: Mandatory fields in Pairing Response.................................................................................................... 348
41 Table 19-6: DK Service UUID. ................................................................................................................................. 348
42 Table 19-7: SPSM Characteristic declaration. ........................................................................................................... 348
43 Table 19-8: SPSM Characteristic value declaration. ................................................................................................. 349
44 Table 19-19: DK Message Format............................................................................................................................. 357
1 Table A-6: Issuer and Verifier Rules for Vehicle OEM Root CA certificate ............................................................ 493
2 Table A-7: Issuer and Verifier Rules for Vehicle Public Key Certificate ................................................................. 494
3 Table E-1: ENCAPSULATION_CMD format.......................................................................................................... 517
4 Table E-2: Format of the P1 field .............................................................................................................................. 517
5 Table E-3: ENCAPSULATION_RSP format............................................................................................................ 518
6 Table E-4: Format of the P1 field .............................................................................................................................. 518
7 Table E-5: SENSF_RES format ................................................................................................................................ 520
8 Table E-6: Format of RWTI ...................................................................................................................................... 520
9 Table G-1: Number of Valid Ranging Rounds per 96 ms. ........................................................................................ 524
10
11
1 LIST OF LISTINGS
1 Listing 15-23: READ BUFFER Processing for Command Format 1 ........................................................................ 243
2 Listing 15-24: READ BUFFER Processing for Command Format 2 ........................................................................ 243
3 Listing 15-25: WRITE BUFFER Processing............................................................................................................. 243
4 Listing 15-26: EXCHANGE Processing ................................................................................................................... 245
5 Listing 15-27: CONTROL FLOW Processing .......................................................................................................... 248
6 Listing 15-28: CREATE ENCRYPTION KEY Processing ...................................................................................... 249
7 Listing 15-29: GET PRIVATE DATA Processing for Command Format 1 ............................................................. 250
8 Listing 15-30: GET PRIVATE DATA Processing for Command Format 2 ............................................................. 250
9 Listing 15-31: SET PRIVATE DATA Processing .................................................................................................... 251
10 Listing 15-32: SET CONFIDENTIAL DATA Processing ........................................................................................ 252
11 Listing 15-33: SETUP ENDPOINT Processing ........................................................................................................ 253
12 Listing 15-34: SETUP INSTANCE Processing ........................................................................................................ 254
13 Listing 15-35: SIGN Processing ................................................................................................................................ 256
14 Listing 15-36: onDeselect Event Processing ............................................................................................................. 257
15 Listing 15-37: CREATE RANGING KEY processing.............................................................................................. 257
16 Listing 15-38: DELETE RANGING KEYS Processing............................................................................................ 258
17 Listing 15-39: Generate Random............................................................................................................................... 259
18 Listing 15-40: Generate Key Pair .............................................................................................................................. 259
19 Listing 15-41: Generate Identifier ............................................................................................................................. 259
20 Listing 15-42: Generate Attestation Signature .......................................................................................................... 259
21 Listing 15-43: Verify Attestation Signature .............................................................................................................. 260
22 Listing 15-44: Compute Shared Key with Diffie-Hellman ........................................................................................ 260
23 Listing 15-45: Key Derivation ................................................................................................................................... 260
24 Listing 15-46: Secure Channel Command Decryption and Authentication ............................................................... 260
25 Listing 15-47: Secure Channel Response Encryption and Authentication ................................................................ 261
26 Listing 15-48: Derive KEenc, KEmac ....................................................................................................................... 261
27 Listing 15-49: Confidential Mailbox Encryption and Authentication ....................................................................... 261
28 Listing 15-50: Compute DeviceCryptogram ............................................................................................................. 262
29 Listing 15-51: framework.createInstance Processing ................................................................................................ 263
30 Listing 15-52: framework.getInstance Processing ..................................................................................................... 264
31 Listing 15-53: framework.view Processing ............................................................................................................... 264
32 Listing 15-54: framework.deleteInstance Processing ................................................................................................ 264
33 Listing 15-55: instance.view Processing ................................................................................................................... 265
34 Listing 15-56: instance.createEndpoint Processing ................................................................................................... 266
35 Listing 15-57: instance.deleteEndpoint Processing ................................................................................................... 266
36 Listing 15-58: instance.getEndpoint Processing ........................................................................................................ 267
37 Listing 15-59: instance.setParameters Processing ..................................................................................................... 267
38 Listing 15-60: endpoint.setParameters Processing .................................................................................................... 268
39 Listing 15-61: endpoint.getCertificate Processing ..................................................................................................... 268
40 Listing 15-62: endpoint.terminate Processing ........................................................................................................... 269
41 Listing 15-63: endpoint.authorize Processing............................................................................................................ 270
42 Listing 15-64: endpoint.createEncryptionKey Processing......................................................................................... 270
43 Listing 15-65: endpoint.setConfidentialData Processing........................................................................................... 270
44 Listing 15-66: endpoint.getPrivateData Processing ................................................................................................... 271
1 DEFINITIONS
2 Bluetooth Module An entity managing the Bluetooth communication between device and
3 vehicle as described in this specification. This entity may consist of one or
4 more integrated circuits or may be part of a combo chip solution
5 Central The master of the Bluetooth LE connection
6 Digital Key Digital credentials used to authenticate access to the vehicle
7 Endpoint Digital Key object in the applet
8 Initiator An entity that starts the UWB ranging packet exchange by sending a first
9 UWB POLL packet
10 Owner Pairing Pairing of an Owner Device with a Vehicle
11 Peripheral The slave in the Bluetooth LE connection.
12 Responder An entity that responds to a UWB POLL packet
13 Shared Key Digital Key shared with a friend device. It is used interchangeably with
14 friend Digital Key
15 Slot identifier Value stored in private mailbox to reference a key slot of a Digital Key
16 Vehicle A vehicle implementing the Digital Key service
17 UWB Module An entity managing the UWB ranging session as described in this
18 specification. This entity may consist of one or more integrated circuits or
19 may be part of a combo chip solution
20
1 NOTATIONS
2 Values like A1h or FEEDh are hexadecimal values using the Most Significant Byte first
3 convention (big-endian).
4 Values like 1101b are binary values using Most Significant Bit first convention.
5 Command and response APDU bytes and buffers are implicitly represented in hexadecimal
6 notation.
7 Other numerical values like 1234 are decimal representations.
8 Fields in parentheses (..) are optional or conditional.
9 The concatenation operation is represented by ||.
10 ASCII values are represented by “quotes.”
11 String values shall be UTF-8 encoded unless specified differently.
12 Strings containing URLs/URIs shall be encoded as per RFC 3986 [27] unless specified
13 differently.
14 Strings containing date values shall follow ISO-8601[2] definition using date format yyyy-MM-
15 d’'’'HH:mm:ss.SSSZ unless specified differently
16 Binary data in JSON shall be encoded in hex string format (e.g., “deadbeef”) unless specified
17 differently.
18 In fields described as a sequence of bits, bit7 is the most significant bit, bit0 is the least
19 significant bit.
20 The following table shows a list of the parameters/variables used in this specification for the
21 purpose of the UWB MAC layer definition.
22
Parameter/Variable Definition Context
i Ranging Block index Ranging session
s Ranging Round index Ranging session
m Slot index Ranging session
k Ranging Session index Ranging session
k Number of ranging rounds in a ranging block Ranging session
N Round
Round _ Idx k (i) Ranging round index in ranging block i in the k- Ranging session
th ranging session that is used for the ranging
exchange.
k
N Responder Number of responders Ranging session
Rl k
Responder with index l=0,1,…, N Responder -1 Ranging session
1
2
3
1 CODE LISTINGS
2 The pseudo-code listings presented in this document highlight the important processing steps
3 from a functional perspective. These pseudo-code listings do not represent any specific
4 implementation, but actual implementations shall be functionally equivalent. Operations like
5 basic input validation, length checking, input checking, option checking, or security counter-
6 measures may not be described. Memory or speed optimizations are not described in these
7 listings unless explicitly mentioned.
2 The Digital Key Technical Specification Release 3 specifies a Digital Key ecosystem using a
3 standardized Digital Key applet, standardized vehicle access protocol, and a scalable architecture
4 to support wide-scale deployment of the Digital Key services across different Vehicle OEMs and
5 Device OEMs. Release 3 is backward compatible with Release 2. Release 3 is not backward
6 compatible with Release 1. Release 1 can be deployed independently of Release 2 or 3.
7 The Digital Key Technical Specification Release 3 is based on the use of BLE/UWB or NFC as
8 an underlying radio technology to enable Digital Key services. The Digital Key management
9 framework is designed to be radio technologies agnostic, enabling the framework to be extended
10 to support other technologies.
11
12
1 2 SYSTEM ARCHITECTURE
2 With the exception of Section 2.10, which is normative, this is an informational section, which
3 provides an overview of the features, components, architecture, and operations of the Digital Key
4 system.
5 2.1 Overview
6 The proposed system uses asymmetric cryptography to mutually authenticate vehicle and device.
7 The device reveals its identity only to known vehicles.
8 Public keys are mutually exchanged through pairing of the owner device to the vehicle. The
9 owner can then authorize the use of Digital Keys by friends and family members by signing their
10 public keys.
11 The system is designed to work fully offline (i.e., no server connection is needed for a vehicle or
12 a device) for all relevant features at the time of execution, such as the owner pairing or
13 lock/unlock vehicle using the Digital Key. Where regulatory or business constraints require
14 online connections, these can be added to the system.
1
2 Figure 2-1: Digital Key Architecture with Actors and Their Relationships
3
4
5 In the system, the vehicle is linked to the Vehicle OEM Server per Telematics Link (1). This
6 link provides a secure communication channel and is fully controlled by the Vehicle OEM.
7 The vehicle is equipped with NFC Readers and optional Bluetooth/UWB modules to
8 communicate with the devices for owner pairing, vehicle locking/unlocking, and engine start via
9 links (3), (4) in the case of NFC connectivity, or links (11), (12) in the case of BLE/UWB
10 connectivity.
11 The owner device communicates with the owner Device OEM Server using a proprietary
12 method (2). The owner device can also communicate directly with the Vehicle OEM Server
13 using a proprietary Vehicle OEM app interface (10). Similarly, the friend device can
14 communicate directly with the Vehicle OEM Server using a proprietary Vehicle OEM app
15 interface (9).
16 The (owner/friend) Device OEM Server is responsible for managing the life cycle of the Digital
17 Key applet and to update necessary certificates in the owner/friend device via (2)/ (7). It can
18 provide services to suspend, restore, and wipe Digital Keys when a device is lost or stolen.
19 The Vehicle OEM Server hosts user accounts and manages ID&V. It also connects to an
20 optional Key Tracking Server (5) to register all issued Digital Keys for a vehicle in such a way
21 that privacy of the stored information is preserved.
22 The owner Device OEM Server is not directly connected to the other Device OEM Servers.
1 The owner device can share a Digital Key with the friend device (via (2), (6), (8) and (7)),
2 defining the appropriate access profile and can terminate the shared Digital Key when it is no
3 longer needed. Key sharing can be accomplished either via (2) and (7), (most commonly when
4 the Owner Device and Friend device are manufactured by the same OEM), or through a Relay
5 Server (most commonly when the Owner Device and Friend Device are manufactured by
6 different OEMs: via (13), (14)). The invitation to obtain a shared key from the relay server shall
7 be sent from the owner device to the friend device via (15). The invitation may use a second
8 factor authentication scheme where the friend proves its identity using schemes defined and
9 required by either Device OEMs (such as Device PIN) or Vehicle OEMs (such as sharing
10 password) as outlined in Section 11.2.2. The friend device can host Digital Keys shared by the
11 owner but cannot share the same Digital Key with any other device.
12 The friend device and its friend Device OEM Server connection (7) support necessary
13 certificate services, as in link (2). Device OEM or Vehicle OEM can facilitate device change.
14 However, this is out of scope.
15 The interface between the Vehicle OEM Server and (owner/friend) Device OEM Server (6)/
16 (8) is used to exchange the servers’ certificates, key tracking, key termination, and notifications.
17 All eligible devices contain a certified SE as well as NFC capability to enable them to
18 communicate with the vehicle.
19 2.4 Actors
20 In this section, the roles and responsibilities of the entities involved in the Digital Key ecosystem
21 are described. The subsections within 2.4 describe the primary functions of the various actors.
22 Vehicle
23 • Determine if the owner/friend device is eligible for the Digital Key service before allowing
24 owner pairing or accepting a friend key shared by the owner device.
25 • If key tracking is required, may provide owner pairing information (owner public key, device
26 information, etc.) to the KTS or verify that owner pairing information was received by the
27 KTS.
28 • Verify authenticity of the device.
29 • Authorize any device that proves that it has a valid Digital Key to access the vehicle, and if
30 required by the vehicle, an immobilizer token to start the engine.
31 • If required, provide a user interface to delete the owner and friend Digital Keys.
32 • Provide secure processing and storage environment.
1 o Data separation from the Vehicle OEM Server to fulfill privacy requirements of
2 tracked data
3 Devices
4 • Contain a secure processing and storage environment (SE or equivalent) running a Digital
5 Key applet
6 • Can take on the role of an owner device and friend device
7 • Support contactless transactions to lock/unlock vehicle and start the engine
8 • Support configurable user authentication (e.g., passcode)
9 • Check service eligibility before allowing owner pairing or acceptance of a friend Digital Key
28 Relay Server
29 • Provides a standardized communication channel to support key sharing between two
30 devices from different (or the same) OEMs. The standardized communication channel is
31 outlined in the Secure Credential Transfer RFC [38].
32 • Implements push notifications and supports polling mechanisms to keep devices
33 informed during the key sharing process.
34 • May be implemented by any entity and must be included in the CCC-approved Relay
35 Server providers listed in [35]
1 2.5 Relationships
2 In this section, the relationships between different entities are described. Links referred to in this
3 section (in parentheses) are shown in Figure 2-1.
4 The following links are standardized according to the protocol, and relevant message formats are
5 defined in this specification:
6 • Owner/Friend Device: Door NFC reader (link 3) as defined in Section 2.5.1
7 • Owner/Friend Device: Console NFC reader (link 4) as defined in Section 2.5.2
8 • Owner/Friend Device OEM Server: Vehicle OEM Server (links 6 and 8) as defined in
9 Section 2.5.10.
10 • Owner/Friend Device: Bluetooth LE Interface as defined in Section 2.5.3.
11 • Owner/Friend Device: UWB Interface as defined in Section 2.5.4.
12 • Relay server: Owner and friend device (links 13 and 14) as defined in Section 11.3
13 All other links are out of scope of this specification and are described at a high level to provide
14 an overview of the underlying links and their functionality. Standardized information may be
15 transported across out-of-scope links.
1 • Conducts Remote transactions to allow the device to initiate on-demand features (e.g.
2 Lock/Unlock etc.)
3 • Transmit Notifications to notify and signal change of state information
4 • Transmit data of 3rd party vehicle OEM application.
10 2.5.5.1 Owner-to-Friend Device Link (via (2), (6), (8), and (7))
11 • Owner device deletes Digital Keys from the friend device by sending termination and
12 deletion commands
13 • Friend device sends termination attestation when a Digital Key on the device is terminated
Device OEM
Vehicle OEM Server
Server
Vehicle Native
OEM Apps Apps BLE
UWB
Vehicle
Digital Key Framework
NFC
Secure Element
32 If the Digital Key applet is the SE-centric applet model as defined in Section 15.1, the applet also
33 provides the following service:
34 • Verifies the Vehicle Public Key Certificate [K]
1 • Provides common Digital Key service functionality via a set of OS-specific APIs for
2 Vehicle OEM apps. The APIs are described in documentation of the respective OS
3 platform developer. The functional requirements are defined in Appendix F.
11 Native App
12 • Provides device-native UI such as Digital Key creation, Digital Key termination and
13 deletion, Digital Key enable/disable, etc.
14 • Displays a list of all issued owner/friend Digital Keys
29 Owner
30 The vehicle accepts only one owner device. When an owner device is associated, the vehicle
31 switches from the unpaired to paired state. The owner has all access rights to the vehicle. The
32 owner’s Digital Key may need to be registered in the KTS in order to be accepted by the vehicle.
1 Friend
2 The vehicle accepts several friend devices. Friend devices may have restricted access rights to
3 the vehicle. These access rights are assigned by the owner using an access profile (see Section
4 2.9.2) when issuing the Digital Key and are checked by the vehicle and/or Vehicle OEM Server
5 according to the Vehicle OEM policy. The friend Digital Key may need to be registered in the
6 KTS in order to be accepted by the vehicle.
10 Owner
11 The owner Digital Key has all access rights with no restrictions.
12 Friend
13 The owner may choose which profile to grant to the friend during key sharing.
14 The list of supported access profiles is defined in Section 11. As not all vehicles support all
15 profiles, the vehicle indicates to the owner device which profiles are supported during owner
16 pairing (see Section 6).
17 2.10 Versioning
18 General
19 Versioning is required so that devices, vehicles, and servers with different Digital Key
20 specification releases, can still work together.
21 Version negotiation is used to agree on the highest version supported by all participants of a
22 specific feature or relationship.
23 Domain Versions
24 Figure 2-3 identifies the domain versions that are relevant for the system.
25 Domain versions describe logical relationships, not physical APIs, between actors in the system.
26 All APIs are associated to a particular domain version. Data structures might be associated with
27 one or multiple domain versions, depending on how many entities receive and process the data
28 structure. Data structures can contain elements that are determined by a different domain version
29 than the data structure layout itself. This specification documents those associations where
30 reasonable, so as to allow quick identification of the impact that an API or data structure change
31 has on the relevant domain versions. Some data structures do not list domain version
32 information. In case of a change in those data structures, the relevant domain version(s) need(s)
33 to be identified depending on the nature of the change.
1 The domain version determining the data structure is provided in the first line (e.g., highest level
2 TLV). Domain versions for data elements are provided with each element in the structure
3 description.
4 Note that the APIs and data structures do not need to (but can) carry explicit version information,
5 the knowledge of the API and data structure semantics and syntax are implicitly known by
6 sender and receiver based on the associated domain version.
7 Note also that the relationships described by dashed lines in Figure 2-3 are out of scope of this
8 specification and the representation of these relationships in any subsequent MSDs in this
9 specification is for illustrative purposes only.
10 Domain versions always include a list of versions from both sides, for example, D-VS-serverList
11 and D-VS-deviceList, or at least an agreed version from the responding side. When a commonly
12 supported version is found through the exchange of lists, then this is the “agreed version”. Where
13 relevant, this clarification is added throughout the specification.
14 Figure 2-3: Domain Versions
15
16 The vehicle-to- device (V-D) relationship is described by two domain versions.
17 1. (V-D-TX): Version of the transactions (fast, standard, etc.) between device and vehicle.
18 2. (V-D-BT): This domain version determines the Bluetooth (BT) version for Digital Key used
19 between device and vehicle.
20 The vehicle-to-owner-device (V-OD) relationship is described by one additional domain version:
21 1. (V-OD-FW): Version of the framework relationship established at owner pairing and features
22 based on this relationship.
23 The device-to-vehicle-server (D-VS) relationship and the device-server-to-vehicle-server
24 relationship do not require a differentiation between owner and friend device or owner and friend
25 device server. The versioning is managed independently of the key type.
1 The vehicle-side lists of V-D-TX, V-OD-FW and V-D-BT obtained by the owner are sent to the
2 friend device during key sharing. This allows Friend device to determine if there will be an
3 agreed V-D-TX and V-D-BT version to connect over Bluetooth LE and to transact with the
4 vehicle. This allows to determine whether a shared key can be accepted or shall be rejected.
5 The V-D-TX and V-D-BT finally used in transactions between the friend device and vehicle may
6 have different values than the V-D-TX and V-D-BT used in transactions between the owner
7 device and vehicle.
8 Owner and friend device exchange sharing data to create friend keys. This data is partially
9 generated and consumed by the framework and partially by the applet. Explicit applet domain
10 version agreement is not required as the frameworks of both devices represent the applet and
11 framework version in the key sharing domain version (OD-FD-KS).
12 Vehicle OEMs provide endpoints URLs to device OEMs to enable routing of device information
13 to the region and environment in which the vehicle is registered based on the
14 ROUTING_INFORMATION obtained during owner pairing and key sharing by the devices.
15 The vehicle OEM can define a D-VS and a DS-VS version per endpoint URL which allows
16 vehicle servers to run on different SW releases per endpoint. See examples in Section 2.10.4.
18 2.10.3.1 V-OD-FW
19 The framework version is agreed between vehicle and owner device during owner pairing based
20 on tags 5Ah and 5Bh in Table 5-3 and Table 5-4 respectively.
21 V-OD-FW-agreedVersion is provided during key tracking to the vehicle server (see Section
22 17.7.1.2).
23 When the device or vehicle SW is updated to support a new V-OD-FW version, then the updated
24 version list is provided via the versionUpdate API (see Section 17.7.6.4) to the other side.
25 2.10.3.2 V-D-TX
26 The transaction version is agreed between vehicle and owner device during owner pairing based
27 on tags 5Ch (both sides) in Table 5-4.
28 The vehicle list V-D-TX-vehicleList is provided during key sharing in Tag 5Ch
29 (DIGITAL_KEY_APPLET_PROTOCOL_VERSIONS) in Table 11-6. This allows the friend
30 device to verify version compatibility with the vehicle before accepting a shared key.
31 Independent of the V-D-TX version agreed during owner pairing or key acceptance, all devices
32 agree on a version during every fast and standard transaction. This allows updating vehicle or
33 device SW to support higher versions without the need to transfer this knowledge via servers to
34 the other side. See tags 5Ch in Table 15-29: AUTH0 Command Payload and Table 15-12:
35 SELECT Response
36
37 2.10.3.3 V-D-BT
38 The Bluetooth version is agreed between vehicle and owner device during owner pairing based
39 on tags 5Eh and 5Fh in Table 5-4 and Table 5-5 respectively.
1 The vehicle list V-D-BT-vehicleList is provided during key sharing in tag 5Fh in Table 11-6.
2 This allows the friend device to verify version compatibility with the vehicle before accepting or
3 rejecting a shared key.
4 Independent of the V-D-BT version agreed during owner pairing or key acceptance, all devices
5 agree on a version during every BT connection. This allows updating vehicle or device SW to
6 support higher versions without the need to transfer this knowledge via servers to the other side.
7 The negotiation of versions under the V-D-BT domain during owner pairing and passive entry is
8 described in detail in Section 19.2.1 and Section 19.2.3.
9 2.10.3.4 OD-FD-KS
10 The key sharing version is agreed between the owner device and the friend device during key
11 sharing based on tags 54h and 55h in Table 11-6 and Table 11-7.
12 The key creation request (Table 11-2) cannot be versioned and must be managed by adding new
13 payloads with new tags if backwards-incompatible changes need to be done in the future.
14 Backwards-compatible changes can be done by adding new tags, as they shall be ignored by
15 earlier versions. It is strongly recommended that devices plan for enough buffer space to receive
16 larger key creation request messages than defined in this version of the specification.
17 2.10.3.5 D-VS
18 The vehicle server list D-VS-serverList is provided to the devices via a proprietary configuration
19 method of the device OEM.
20 The device list D-VS-deviceList is provided during key tracking to the vehicle server (see
21 Section 17.7.1.2). The versionUpdate API is not required for this domain version.
22 One D-VS-serverList can be provided per endpoint URL by the Vehicle OEM to the Device
23 OEM, which corresponds to a specific value of the ROUTING_INFORMATION (RI) provided
24 by the vehicle at owner paring and by the owner device at key sharing.
25
2
3
4
5 [1 – 2] VS deploys new SW version for some regions. When deployed, the VS provides
6 the new supported versions to connected DS in a proprietary way (based on the
7 working terms agreed between VS and DS) for each server endpoint identified by
8 the routing information (RI) as per above example (e.g., OEM1.USP.BRD1).
9 [3 – 4] DS provides the updated version lists in a proprietary way to all devices.
1
Out-of-band in this figure refers to mechanisms that are outside the scope of the Digital Key Specification. E-mail
or other mechanisms may be used for OEM-to-OEM communication compliant with pre-established agreements
between device and vehicle OEMs; or Device OEMs may use proprietary APIs to communicate with devices similar
to the telematics links deployed by Vehicle OEMs to communicate with Vehicles.
18 2.10.3.6 DS-VS
19 The device server to vehicle server version is agreed between device OEM and vehicle OEM via
20 a proprietary configuration method. The versionUpdate API is not required for this domain
21 version.
22
23 Software Updates
24 A modification of the list of supported domain version values due to a SW update of one or more
25 entities shall lead to a version agreement update between all entities impacted by the version
26 change.
27 If required, each party needs to be able to handle temporarily different server versions on the
28 other side on a per region basis. Therefore, the version information may need to be connected to
29 a region-specific endpoint or server instance of the other OEM.
30 It is recommended that each OEM should always try rather to implement changes in a backwards
31 compatible way, especially for server-side updates. Non-backwards compatible changes in server
32 APIs should be avoided. The mechanism to inform OEM server or device counterparts is
33 described in Sections 2.10.3.5 and 2.10.3.6.
34
1 vehicle side version information and since the vehicle side version has not changed in this case it
2 does not need to be provided.
3 Figure 2-5: Version Agreement after Device Software Update
4
5 [1–- 2] Device provides updated device version lists to device OEM server. The link
6 between device and device OEM server is proprietary to the device OEM.
7 [3 – 5] Device OEM server calls versionUpdate API on vehicle OEM server, which
8 determines new agreed version for D-VS. This could result in a new agreed
9 version for V-OD-FW
10 [6 – 7] Vehicle OEM server provides new V-OD-FW device list to vehicle which
11 determines the new agreed version. The initiation of Step [6] is asynchronous
12 with and not contingent on the completion of Step [5]. The link between vehicle
13 and vehicle OEM server is proprietary to the vehicle OEM.
2
3 Data elements exchanged between the server and the device, such as the server remote
4 termination request (sRTR, see Section 14.2) and terminationAttestation are versioned based on
5 the D-VS versions as shown in the example in Figure 2-6. In the example above, sRTR* and
6 terminationAttestation* are versions of the sRTR and the terminationAttestation that are
7 accepted by the device and the server in the agreed D-VS version.
8 Relationships between device and device OEM server as well as vehicle and vehicle OEM server
9 are proprietary, and their version management is out of scope.
1 Note: Updates that impact V-D-TX and V-D-BT are agreed during a Fast Transaction or
2 Standard Transaction with the vehicle.
3 Figure 2-7: V-OD-FW Agreement after Vehicle SW Update
4
5 [1] Vehicle SW update is confirmed to the server.
6 [2] Vehicle server updates agreed V-OD-FW version.
7 [3 – 4] Vehicle SW versions are sent to device server
8 [5 – 6] Device server provides new vehicle SW version lists to device using a proprietary
9 message.
10
11 Note that an update to a server version that impacts D-VS-serverList is configured in the devices
12 using a proprietary method, as described in Section 2.10.4.4.
8 Version Numbers
9 Versions consist of a major and a minor version number (e.g., v2.3 with 2 = major and 3 =
10 minor).
11 Major versions are used for non-compatible versions of a data structure or API, or to add or
12 remove features, data structures and APIs.
13 Minor versions (with same major version) are compatible but limit the available feature set to the
14 one defined by the lower minor version.
15 To achieve forward compatibility, data elements in structures/commands/APDUs/API
16 parameters that have been added in higher versions should be ignored by the entity with the
17 lower version for TLV and JSON structures. (e.g., the key creation request data structure (Tag
18 7F31h)).
19 Entities shall agree on an exact version that is mutually supported. Communication based on
20 different versions used by each entity (e.g., vehicle supporting versions 2.1 and 2.2, device
21 supporting 1.0, 2.0 and 2.3) shall not occur.
22 Introduction of anchor versions (in Section 2.10.6) allow both entities to find a commonly
23 supported version.
24 Version Introduction
25 With the introduction of the versioning scheme all domain versions unless explicitly stated in
26 Table 2-2 shall be set to 2.0.
27 The following plan describes the smooth introduction of versioning into the system without
28 breaking compatibility with existing deployments of vehicles, servers and devices.
29 • All commands, responses, tags or data elements shall be transmitted as described in
30 Digital Key Specification v1.0.0 or v1.1.0 between devices and vehicles if one entity only
31 supports Domain Version 1.0 of V-OD-FW (referred to as SPAKE2+ Protocol version
32 1.0 in Digital Key Specification v1.0.0 or v1.1.0).
33 • For all other cases, any attempts to negotiate versions by an entity as defined in this
34 specification shall be gracefully rejected by the other entity.
35 • All senders should start implementing and using the new data structures and API versions
36 for each relevant domain version 2.0.
37 • All receivers that gracefully fail attempts to negotiate versions are considered to support
38 the CCC Digital Key Release 3 specifications v1.0.0 and v1.1.0.
1 • Therefore, in the event that a versioning capable device or vehicle determines that it is
2 interoperating with a non-versioning capable vehicle or device, the sender shall revert to
3 using features defined in CCC Digital Key Release 3 specifications v1.0.0 and v1.1.0.
4 Version Support
5 Not all entities may be able to support all versions immediately. Therefore, anchor versions that
6 must be supported by all entities, as a coordinated fallback version, shall be used in order to
7 ensure interoperability. Anchor versions are not dedicated parameters, they are regular version
8 values in the domain version lists, which are determined to be mandatory for all entities. An
9 entity shall support all anchor versions prior to its currently supported version. E.g., if the device
10 supports domain version 8.2, it shall support all anchor versions less than and equal to 8.2.
11
12 Anchor versions shall be agreed upon in the CCC Technical Working Group and updated in
13 Table 2-2.
14 The definition of a grace period to support new versions in all entities after a CCC specification
15 release is outside of this specification. Deprecation of specific data structures/versions/APIs shall
16 be documented in this specification
17 Support period and deprecation rules for older versions are defined outside of this specification.
2 Version Table
3 Table 2-2 provides a list of domain versions along with active current and past values for each
4 domain version. The table lists the following properties for each domain version value:
5 • Anchor Version (Y/N): whether the domain version value is an anchor version or not
6 • Specification Version: The version of the Digital Key Specification in which that
7 particular Domain Version value was first introduced
8 • Data Structure API: New data structures that were introduced in that specification version
9 • Notes: Informative Description of the Changes introduced in that version of the
10 specification
11 Table 2-2: Active Version Table
Domain Domain Anchor Specification Notes
Version Version? Version
Value (Y/N)
2.0 N 1.2.0 - Reuse of SPAKE2+ version Tags for Owner pairing
Domain Version (Table 5-4)
- Defined Standard and Proprietary access profiles
(Table 11-4)
- Changed Certificate Version (Tag 41h) from 01h to
02h (Table 11-19)
V-OD- - Converted Key configuration from ASN.1 to BER-
FW TLV
- Changed Tag 58h (Entitlement Data) to Tag 78h due
to change to BER-TLV format (Table 11-19)
- Removed variable updateCounter as part of BER-
TLV conversion
1.0 Y 1.1.0/1.0.0
2.0 N 1.2.0 - Introduced new Tags 5Eh (Table 5-4, Table 11-5) and
5Fh (Table 5-5) to track BLE/UWB versioning
- Designed new SPSM Version characteristics and
GATT based message exchange to communicate
V-D-BT version information (Section 19.2.1.7 and Section
19.2.1.8)
- Modified Ranging Capability RQ/RS scheme to
include versioning information (Section 19.3.1.1 and
Section 19.3.1.2)
1.0 Y 1.1.0/1.0.0
1.0 Y 1.2.0/1.1.0/1.0.0 - Defined protocol to support existing and new Applet
versions. Applet version was not incremented in
V-D-TX
version 1.2.0 of the specification. (Table 15-12, Table
15-29)
2.0 N 1.2.0 - Introduced Tag 5F22h to include Subject Key
Identifier of certificate used for Signature Verification
(Table 14-4)
- Created new parameters in trackKey API (Section
17.7.1.2) and trackKeyResponse (Section 17.7.1.3)
D-VS
- Introduced new API–- versionUpdate (Section 17.7.6)
- Modified Unencrypted Event Notification Data
(Section 17.8.10)
- Added new Server Sub Status Code 50117 (Section
17.10)
2.0 N 1.2.0 - Negotiation of this domain version is out of scope of
DS-VS this specification
1.0 N 1.1.0
2.0 N 1.2.0 - Introduced Tags 54h (Table 11-6) and 55h (Table 11-7)
to version friend key sharing
- Introduced Tags 7F2Dh and 7F11h for Sharing Method
OD-FD- Attestation (Table 11-16)
KS - Modified Entitlement Data Schema to Match BER-
TLV format (Table 11-18)
1.0 Y 1.1.0
1 Version Deprecation
2 Version lists in every entity should be modifiable anytime, even without a SW update. This
3 allows to deprecate any deployed version and prevent it from being used. The mechanism to
4 modify version lists in vehicles, servers and devices is proprietary to device and vehicle OEMs
5 and is out of scope.
6 Example: Possible handling of flaw in a newer version:
7 • sRTR has been modified in specification between D-VS versions 2.0 and 2.2.
8 • sRTR processing with D-VS = 2.2 is flawed in a specific device OS version, but devices
9 with this flaw have already been deployed. All devices also support the anchor version
10 2.0.
11 • Version lists in devices supporting this flawed version are updated to not offer version
12 2.2 anymore, but still support version 2.0.
13 • The SW update agreement process is executed (as per Section 2.10.4) to inform all
14 entities about the version update.
15 • Servers will now send the sRTR based on anchor version 2.0 to the device, which is able
16 to process it correctly.
17 • Devices that are fixed (e.g., device OS update installed) will add back D-VS version 2.2
18 to their version lists so that servers can send sRTR in version 2.2 again.
19
2 This section defines the NFC features that shall be implemented by the devices and how these
3 features shall be operated for the Digital Key use case. This specification requires vehicle and
4 device to support NFC-A technology. Support for NFC-B technology and NFC-F technology is
5 optional on either side; corresponding requirements are only applicable if the device or vehicle is
6 intended to support those technologies.
10 Vehicle
11 The vehicle NFC readers shall be compliant with the poller requirements of the NFC Analog
12 Technical Specification [16] for:
13 • Radio Frequency Power and Signal Interface
14 • Modulation Poller to Listener – NFC-A
15 • Load Modulation Listener to Poller (only for NFC-A)
16 If the vehicle NFC readers are intended to support NFC-B technology, they shall be compliant
17 with the poller requirements for NFC-B as defined in NFC Analog [16]. If the vehicle NFC
18 readers are intended to support NFC-F technology, they shall be compliant with the poller
19 requirements for NFC-F technologies as defined in NFC Analog [16].
20 The vehicle NFC readers shall be compliant with the Poll Mode requirements relevant for the
21 Type 4A Tag Platform as defined in the NFC Digital Protocol Technical Specification [17]. If
22 the vehicle NFC readers are intended to support NFC-B technology, they shall be compliant with
23 the Poll Mode requirements relevant for the Type 4B Tag Platform Subset as defined in NFC
24 Digital Protocol [17]. If the vehicle NFC readers are intended to support NFC-F technology, they
25 shall be compliant to the Poll Mode requirements relevant for the Type 3 Tag Platform
26 Technology Subset as defined in NFC Digital Protocol [17].
27 The vehicle NFC readers shall be compliant with the Poll Mode requirements for the ISO-DEP
28 protocol as defined in [17].
29 Device
30 The device NFC implementation shall be compliant with the listener requirements of the NFC
31 Analog Technical Specification [16] for:
32 • The Radio Frequency Power and Signal Interface
33 • Modulation Poller to Listener – NFC-A
34 • Load Modulation Generic (only for NFC-A)
35 • Subcarrier Load Modulation NFC-A
36 The device NFC implementation may be compliant with the listener requirements for NFC-B
37 and/or NFC-F technologies as defined in NFC Analog [16].
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 62/542
CCC-TS-101
1 The device NFC implementation shall be compliant with the Listen Mode requirements relevant
2 for the Type 4A Tag Platform defined in NFC Digital Protocol [17]. The device NFC
3 implementation may be compliant with the Listen Mode requirements for the Type 4B Tag
4 Platform and/or the Type 3 Tag Platform as defined in NFC Digital Protocol [17].
5 The device NFC readers shall be compliant with the Listen Mode requirements for the ISO-DEP
6 protocol as defined in [17].
7 The device NFC implementation shall be compliant with the generic requirements for Listen
8 Mode as defined in the NFC Activity Technical Specification [18]. The implementation also
9 shall be compliant with the states and transitions of the Listen-Mode State Machine as defined in
10 NFC Activity [18], which are relevant for the Type 4A Tag Platform. The device may implement
11 additional parts of the Listen Mode State Machine, namely the states and transitions relevant for
12 the Type 4B Tag Platform and/or Type 3 Tag Platform.
13 The device shall configure the Listen-Mode State Machine using the following settings:
14 • CON_LISTEN_T4ATP shall be enabled.
15 Other configuration parameter values are implementation specific. If the device is intended to
16 listen for NFC-B technology, it shall enable CON_LISTEN_T4BTP. If the device is alternatively
17 or additionally intended to listen for NFC-F technology, it shall enable CON_LISTEN_T3T.
18 The device NFC implementation shall support the following power modes:
19 • Battery Operational Mode: The battery of the device has sufficient power to support all
20 its functions.
21 • Battery Low Mode: The battery of the device has reached a threshold at which many
22 functions (e.g. display) are automatically disabled, but the NFC Controller function will
23 still be powered.
24 The device NFC implementation shall implement means to correctly route traffic addressed to
25 the Digital Key applet or to the Digital Key framework. Routing can be based on the application
26 identifiers contained in the SELECT command defined in [1]. One example of such means is the
27 routing mechanism as defined in the NFC Controller Interface Technical Specification [19],
28 specifically the AID-based Route Selection Process.
29 If the device is configured to work as a Digital Key, routing to the Digital Key applet shall be
30 enabled in Battery Operational Mode and Battery Low Mode. Additionally, routing to the Digital
31 Key framework shall be enabled during Owner Pairing in Battery Operational Mode.
1 Other configuration parameter values are implementation-specific. If the vehicle intends to poll
2 for NFC-B, it shall enable CON_POLL_B. If the vehicle intends to poll for NFC-F, it shall
3 enable CON_POLL_F.
4 If the Technology Detection procedure has identified one of these technologies, the vehicle NFC
5 readers shall perform the Collision Resolution activity as defined in NFC Activity [18].
6 After the Collision Resolution activity, and if an NFC-A or NFC-B device indicating support for
7 the ISO-DEP protocol as defined in NFC Digital Protocol [17], has been identified, the vehicle
8 shall perform the Device Activation activity with the following configuration:
9 • INT_TECH_SEL shall be set to 000b for NFC-A or 001b for NFC-B
10 • INT_PROTOCOL shall be set to 001b to activate the ISO-DEP protocol
11 Other configuration parameter values are implementation-specific. If the vehicle intends to
12 activate a device using NFC-F technology, the vehicle NFC readers shall set INT_TECH_SEL to
13 010b and INT_PROTOCOL to 100b (Type 3 Tag Platform).
14 Note: The above requirements do not cover the case of multiple identified devices. If multiple
15 devices are identified by the vehicle, the handling is implementation-specific.
1 4 DATA STRUCTURE
11
12
10
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 67/542
CCC-TS-101
1 All relevant data elements of the Digital Key shall be verified by the vehicle during the owner
2 pairing procedure (see Section 6) before accepting the device public key, and by the owner
3 device during key sharing (see Section 11) before signing the friend device public key.
4 Before signing the friend’s public key, the owner verifies that the friend’s public key pair has
5 been created on an eligible SE. The verification chain starts with an authorized public key in the
6 owner Digital Key structure, which has been provided and is trusted by the vehicle, e.g., the
7 Vehicle OEM CA public key (see Section 16.8).
8 The elements provided in the attestation package (for friend keys only) are:
9 • Friend Public Key: The public key created by the friend device together with the private
10 key. During key sharing, this public key shall be signed by the owner device together
11 with the other fields in the attestation package.
12 • Profile: Selected by the sender of a Shared Key. It needs to comply with the Vehicle
13 OEM policy and is verified by the vehicle. Digital Keys that do not comply with the
14 Vehicle OEM policy settings are rejected by the vehicle (i.e., their public key is not
15 accepted). The Vehicle OEM policy is out of scope of this specification.
16 • Sharing password information: Contains the seed for the vehicle to generate a sharing
17 password from the shared secret established at owner pairing. It also contains the
18 information regarding whether the owner device policy requires (or not) that the vehicle
19 requests a sharing password to the friend before activating the shared Digital Key.
20 • Validity start date: The earliest date and time the key can be used. The Digital Key may
21 be accepted when presented to a vehicle earlier, but it shall not have effect before the date
22 and time is reached. This field requires an internal time to be available in the vehicle.
23 Accuracy, reliability and security of this internal time are dependent on Vehicle OEM
24 policy and vehicle capabilities.
25 • Validity end date: The latest date and time the key can be used. This field requires an
26 internal time to be available in the vehicle. Accuracy, reliability and security of this
27 internal time are dependent on Vehicle OEM policy and vehicle capabilities.
28 • Key friendly name: A field conveying a user-friendly name for the Digital Key that
29 should be assigned at key sharing (see Section 11). It may be the same name as in the
30 owner’s contacts when sharing a Digital Key. The owner should be allowed to edit the
31 name for identification and personalization. For privacy reasons, friendly name should
32 not contain private information such as full name of the friend.
33 Digital Key elements except private and confidential mailboxes are not changeable during the
34 lifetime of a Digital Key. A Digital Key can be created, terminated, and deleted. In “terminated”
35 state, it is not usable but still able to provide the termination attestation until it is finally deleted
36 from memory. The Digital Key states are managed internally by the applet.
37 4.3 Mailboxes
38 The mailbox mechanism allows the SE to store small data buffers accessible by the Digital Key
39 framework and by the vehicle. These data buffers are stored in the SE’s non-volatile memory and
40 are read from/written to during transaction, key sharing, and pairing. Each Digital Key (referred
41 to as an Endpoint) created in the applet instance of a device can have two mailbox types (private
42 and confidential) with different security properties and targeted at different usages. The
1 mailboxes support random access, whereby content can be read from/written to using
2 offset/length parameters to access them.
3 Confidential mailboxes are not shared between Endpoints, and consequently only a vehicle
4 paired to an Endpoint can access the confidential mailbox of such Endpoint. Private mailboxes
5 are not shared among Endpoints, either; however, the Digital Key framework and the vehicle can
6 freely read from and write to their contents.
7 The confidential mailbox is meant for storage of secret data that is never available in plaintext to
8 the Digital Key framework. In addition, only the associated vehicle has read/write access
9 privileges to the contents of this mailbox. The Digital Key framework can only extract or push
10 portions of the confidential mailbox in an encrypted format. The confidential mailbox is used for
11 storage of immobilizer tokens.
12 The private mailbox is meant for storage of data accessible in plaintext to the Digital Key
13 framework, the vehicle, and the SE. The use of the private mailbox guarantees that this data is
14 never transferred in plaintext -, and the mailbox access is only possible using the EXCHANGE
15 command. The private mailbox is used for transfer of the attestation package and to indicate
16 which mailbox fields are present/absent (signaling) as described in the following sections.
17 Figure 4-3: Mailboxes Read/Write Permissions
18
19 Private Mailbox
20 The private mailbox can be read from and written to by the Digital Key framework using the
21 device internal wired link as described in Section 15. It can also be read from and written to by
22 the vehicle once the secure channel described in Section 15 is established between a vehicle and
23 device using the Digital Key. Data exchanged with vehicle is always protected by the established
24 secure channel.
25 The mapping of the private mailbox defines data structures required by the Digital Key
26 framework and provides a bi-directional signaling mechanism to indicate to the receiver that new
27 data is available as described in Figure 4-4.
28 The private mailbox enables the Vehicle OEM to define its data structures by the signaling
29 mechanism. These data structures are opaque to the Digital Key framework and are only known
30 to the vehicle and a Vehicle OEM app or the Vehicle OEM Server. Arbitrary data that can be
31 stored in and retrieved from the private mailbox associated with each Digital Key includes the
32 signaling bitmap, the slot identifier bitmap, the slot identifiers, the Vehicle OEM proprietary
33 data, and the attestation package, in case a key is presented to a vehicle. The private mailbox
1 format is determined at owner pairing. It shall be the same for owner and friend mailboxes,
2 though certain fields may not be used in friend mailboxes.
3 The signaling bitmap is required for owner and friend mailboxes. The slot identifier bitmap is
4 used by the owner device to keep track of available slot identifiers and, if applicable,
5 immobilizer tokens for Digital Key sharing. Slot identifiers are only used in the owner mailbox.
6 The slot identifiers and, if applicable, the immobilizer tokens are provided to the owner device
7 either by the vehicle or by the Vehicle OEM Server. This is controlled by the vehicle in the
8 SHARING_CONFIGURATION field in Table 5-14 (Tag 7F60h and Tag DAh).
9 The slot identifiers and, if applicable, the immobilizer tokens for the friend device are provided
10 by the owner device or by the Vehicle OEM Server. This is controlled by the owner device in the
11 SHARING_CONFIGURATION field in Table 11-6 (Tag 7F60h and Tag DAh) which derives
12 from the SHARING_CONFIGURATION field in Table 5-14 (Tag 7F60h) the owner device
13 received during owner pairing.
14 Vehicle proprietary data may be used in owner and friend mailboxes. The maximum number
15 usable keys in a vehicle is implementation-specific. The limit of seven slot identifiers for friend
16 keys in the private mailbox refers to the maximum number of shareable friend keys after which
17 the owner is required to obtain new slot identifiers from the vehicle.
18 Key attestation packages are used with owner and friend mailboxes. Note that these mailboxes
19 have different purposes and structures.
20 Figure 4-4: Owner Device Private Mailbox Signaling
21
22 The Signaling Bitmap as contained in the SigBmp field allows the vehicle and the device to
23 inform the other party of changes occurring or actions to be taken on some mailbox field by the
24 other party. It is the responsibility of the vehicle or the device that consumes the bit to reset the
25 bit and delete the data if needed. The signaling relationship and the offsets of the data elements
26 are configured by the vehicle at owner pairing (See Section 6).
27 The length of this field is 1 byte. This field is big-endian ordered, meaning that bit 0 is the
28 rightmost bit of the field.
29 The following constants are defined for the rest of this document:
30 SLOT_IDENTIFIER_BITMAP_BIT = 00h
31 SLOT_IDENTIFIERS_BIT = 01h
32 VEHICLE_OEM_PROPRIETARY_DATA_BIT = 02h
33 ATTESTATION_PACKAGE_BIT = 03h
34 SLOT_IDENTIFIER_LENGTH = (VEHICLE_OEM_PROPRIETARY_DATA_OFFSET –
1 SLOT_IDENTIFIERS_OFFSET) / 8
2 Table 4-1 shows the purpose for each bit in the SigBmp field. The signaling bits may be read
3 and/or written by the vehicle and/or the device.
4 Table 4-1: Signaling Bitmap Decoding
Bit Name Value Description Set by
Bit0 SlotIdentBmp 0 All slot identifiers valid Vehicle
Bit0 SlotIdentBmp 1 Not all slot identifiers valid Device (when sharing)
Vehicle (initial refill at owner
pairing)
Bit1 RFU 0 RFU RFU
Bit1 RFU 1 RFU RFU
Bit2 VehiclePropDat 0 Device has read vehicle proprietary Device
data
Bit2 VehiclePropDat 1 Vehicle has updated vehicle Vehicle
proprietary data
Bit3 KeyAtt 0 No key attestation package present Vehicle/Device (attestation package
retrieved successfully or is not
required any more)
5 The Slot Identifier Bitmap as contained in the SlotIdentBmp field signals the validity of a slot
6 identifier in the corresponding entry of the slot identifier, as shown in Figure 4-5.
7 Figure 4-5: Slot Identifier Bitmap Assignment
1 The length of this field is 1 byte. The most significant bit represents the state of entry 7; the least
2 significant bit represents the state of entry 0.
3 If a bit is set to 0, the slot identifier is invalid. If immobilizer tokens are retrieved from the
4 vehicle (see Table 5-14), in the next standard transaction, the vehicle shall write a new slot
5 identifier value and set the bit to 1 and also fill up a new immobilizer token, if applicable.
6 Note: The invalid slot identifier value is still present in the entry. The rules for managing the slot
7 identifier values are described in Section 13.7.
8 If a bit is set to 1, a valid slot identifier is present in the corresponding entry in the SlotIdentLst
9 field, and the corresponding immobilizer token is also present in the corresponding entry in the
10 confidential mailbox.
11 Each bit in the SlotIdentBmp shall also indicate the presence of an immobilizer token in the
12 corresponding entry and memory offset of the confidential mailbox (see Table 4-3 and Figure
13 4-6). This bitmap allows the device and the vehicle to synchronize on the confidential mailbox
14 content, if immobilizer tokens are retrieved from the vehicle.
15 The active owner immobilizer token (ImTok A) shall always be located in entry 0
16 (corresponding to memory offset 0). Its presence shall be signaled by setting bit 0 to value 1 in
17 the SlotIdentBmp. Other immobilizer tokens (e.g., entry 1 to 3 in Figure 4-6) are used for friend
18 sharing.
19 Figure 4-6: Owner Device Immobilizer Token Signaling
20
21 The slot identifiers as contained in the SlotIdentLst field help the vehicle keep track of which
22 slot identifiers and immobilizer tokens (if slot identifiers and immobilizer tokens are retrieved
23 from the vehicle) have been distributed or are in use. SlotIdentLst field is comprised of eight
24 SlotEntry subfields, and each of the SlotEntry subfields contains a slot identifier value, as shown
25 in Figure 4-7. The length of the SlotIdentLst field shall be eight times the size of a slot identifier.
26 Each slot identifier is mapped to an immobilizer token at the same position index in the
27 confidential mailbox. The length of this data field is defined by
28 (VEHICLE_OEM_PROPRIETARY_DATA_OFFSET – SLOT_IDENTIFIERS_OFFSET).
2
3 Slot identifiers are issued by the vehicle or by the Vehicle OEM Server. They are provisioned by
4 the vehicle to the owner device along with associated immobilizer tokens, if immobilizer tokens
5 are retrieved by the vehicle. Alternatively, they are provisioned by the Vehicle OEM Server after
6 owner pairing or key sharing. The vehicle guarantees that slot identifiers are unique over the
7 lifetime of a vehicle.
8 Slot identifiers and immobilizer tokens are included in the data provided to the friend device
9 when sharing a key (See Section 11).
10 The Vehicle OEM proprietary data as contained in the VehiclePropDat field is arbitrary data
11 specific to each Vehicle OEM.
12 The length of this data field is defined by (ATTESTATION_PACKAGE_OFFSET –
13 VEHICLE_OEM_PROPRIETARY_DATA_OFFSET). The Vehicle OEM proprietary data is
14 present in the private mailbox until consumed and cleared by the device or by the vehicle.
15 If the length of this data field is greater than 0, the Vehicle OEM proprietary data should be read by the
16 Digital Key framework within the Digital Key termination process and sent along with the termination
17 attestation to the KTS. The Vehicle OEM proprietary data may not be sent in all cases due to technical
18 constraints.
19 The attestation package as contained in the KeyAtt field can be used for i) providing the Opaque
20 Attestation (see Section 6.3.4.1) to the device, ii) providing the kts-signature, indicating that the owner
21 key was successfully registered at the KTS, to the vehicle (see Section 6.3.4.4) , iii) for supporting
22 friend sharing (providing the key Attestation Package to the vehicle; see Section 11.8.4), as well as for
23 iv) resuming a suspended key using a Resume Attestation provided by the device (see Section 13.4.3).
24 The attestation package is present in the private mailbox until consumed and cleared by the vehicle or
25 the device (depending on the attestation type). The length of this data field is defined by
26 (MAILBOX_CONTENT_END_OFFSET – ATTESTATION_PACKAGE_OFFSET).
27 Table 4-2 describes the relationship among data elements (“fields”), memory offsets, and
28 signaling bit. The sizes of the data elements in the private mailbox are defined by offsets, which
29 are provided by the vehicle during owner pairing. Data structure sizes are calculated by
30 subtracting the offset values.
31 Table 4-2: Private Mailbox Content
Field Memory Offset Description Sig-Bit
SigBmp SIGNALING_BITMAP_OFFSET Signaling bitmap n/a
25 Confidential Mailbox
26 The confidential mailbox can be read from and written to by the vehicle once the secure channel
27 described in Section 7 or 8 is established between a vehicle and device using the Digital Key.
28 Data exchanged with vehicle is always protected by the established secure channel. The
1 confidential mailbox can also be written to by the Digital Key framework via the internal wired
2 link when data is encrypted with the Endpoint encryption public key. The content of the
3 confidential mailbox may be exported in encrypted form with the encryption public key of
4 another trusted SE if allowed by Endpoint configuration and with user consent.
5 If required by the Vehicle OEM, the immobilizer token may be stored and retrieved in the
6 confidential mailbox and may be associated with each Digital Key.
7 The friend confidential mailbox typically contains only one entry corresponding to its active
8 immobilizer token. The active immobilizer token is a secret piece of data to be presented to the
9 vehicle during a Digital Key transaction.
10 The owner confidential mailbox typically contains eight entries. The first entry (index 0) is
11 dedicated to the active immobilizer token, whereas the other seven entries contain immobilizer
12 tokens to be distributed to friends during sharing operations.
13 Table 4-3 describes the confidential mailbox memory mapping when immobilizer tokens are
14 required.
15 Table 4-3: Confidential Mailbox Content
Memory Offset Description
0 active immobilizer token, 0
IMMOBILIZER_TOKEN_LENGTH immobilizer token 1
2 × IMMOBILIZER_TOKEN_LENGTH immobilizer token 2
3 × IMMOBILIZER_TOKEN_LENGTH immobilizer token 3
4 × IMMOBILIZER_TOKEN_LENGTH immobilizer token 4
5 × IMMOBILIZER_TOKEN_LENGTH immobilizer token 5
6 × IMMOBILIZER_TOKEN_LENGTH immobilizer token 6
7 × IMMOBILIZER_TOKEN_LENGTH immobilizer token 7
16 The active immobilizer token shall be present at offset 0 (see Figure 4-6) and is required by the
17 vehicle during a Digital Key transaction. This token shall be present on owner and friend devices
18 if immobilizer tokens are required by the Vehicle OEM.
19 The immobilizer tokens present in entries 1 to 7 shall be used for distribution during key sharing
20 (see Section 11).
21 The IMMOBILIZER_TOKEN_LENGTH is provided by the Digital Key framework. It is
22 transmitted in the mailbox configuration table in the first NFC session (see Table 5-13).
23 Immobilizer Token
24 An optional Vehicle OEM requirement for the device is to store and release an immobilizer
25 token, which is a confidential data element provided to the vehicle when it is requested (e.g., at
26 engine start). The format and content of the immobilizer token are out of scope of this
27 specification.
28 If implemented, either the vehicle or the Vehicle OEM Server provides the immobilizer tokens to
29 the owner device during or after owner pairing. The immobilizer tokens for the friend devices are
30 provided either by the owner device or the Vehicle OEM Server. The Immobilizer tokens are
1 stored in pre-allocated entries in the confidential mailbox. The confidential mailbox size shall be
2 configured to eight times the size of the immobilizer token.
3 Immobilizer tokens shall be associated with a slot identifier, as shown in Figure 4-7.
2 This section defines the commands and data elements used for the owner pairing procedure.
3 The owner device (framework) – vehicle version (V-OD-FW), which is exchanged in the
4 SELECT (5.1.1) and SPAKE2+ REQUEST (5.1.2) commands covers all commands defined in
5 Section 5.
6 The digital key applet protocol versions cover the applet transactions with the vehicle for unlock,
7 engine start, etc., as described in Sections 7, 8 and 10. The applet APIs used for endpoint
8 creation, set confidential data, setup endpoint, etc. are managed based on the owner device
9 (framework) – vehicle version.
1 SELECT Command
2 5.1.1.1 Purpose
3 The vehicle sends the SELECT AID command to the device. The Digital Key framework AID is
4 A000000809434343444B467631h.
5 When the Digital Key framework is selected, the device shall respond with the data as described
6 in Table 5-3.
7 The device shall indicate its current pairing state to the vehicle. The possible states are:
8 • Not in pairing mode
9 • Pairing mode started and pairing password entered
10 The SELECT command used to select the Digital Key applet instance (using Instance AID) is
11 described in Section 15.3.2.1
12 5.1.1.2 Definition
13 command: 00 A4 04 00 Lc [Digital_Key_Framework_AID] 00
14 response: [Table 5-3]90 00
15 Table 5-3: Response to SELECT Command
Tag Length Description Field is
(bytes)
5Ah 2 × n n supported vehicle – owner device framework versions (V-OD-FW- mandatory
deviceList). (ver.high | ver.low).
5Ch 2 × m m supported Digital Key applet protocol versions (ver.high | ver.low) mandatory
D4h 1 00h = not in pairing mode mandatory
02h = pairing mode started, and pairing password entered
16 5.1.1.3 Usage
17 The device shall return all supported owner device framework – vehicle (V-OD-FW) and Digital
18 Key applet protocol versions using two bytes per version in big-endian coding.
19 The reception of at least 16 versions shall be supported by all entities. An entity may transmit up
20 to 16 versions.
21 Version h.l is represented as ver.high= ‘h’ (one byte) and ver.low= ‘l’ (one byte).
22 The versions shall be ordered from the highest to the lowest. At least one version shall be
23 provided; otherwise the service is considered as not available.
24 Domain version V-OD-FW 1.0 maps to SPAKE2+ protocol version 1.0 and Domain version V-
25 D-TX 1.0 maps to Digital Key Applet protocol version 1.0 (coded 0100h). Domain versions and
26 their status as Anchor versions are listed in Table 2-2. The vehicle shall match the versions with
27 its supported versions as described in Section 6.3.3.8.
28 The device signals if it is in pairing mode or not. If the device is “not in pairing mode,” the
29 vehicle should continue only if the vehicle is in pairing mode itself.
30 This command shall return a general status word as listed in Table 5-2.
2 5.1.2.1 Purpose
3 In this command, the vehicle shall send the agreed vehicle – owner device framework version list
4 with agreed vehicle – owner device framework (V-OD-FW-agreedVersion) first, all supported
5 Digital Key applet protocol versions, and the Scrypt parameters of the SPAKE2+ protocol. The
6 vehicle shall retrieve the curve point X of the SPAKE2+ protocol in the response. The
7 parameters used in the SPAKE2+ REQUEST command are described in Section 18.
8 5.1.2.2 Definition
9 command: 80 30 00 00 Lc [Table 5-4] 00
10 response: [Table 5-5] 90 00
11 Table 5-4: SPAKE2+ REQUEST Command Fields
Tag Length Description Field is
(bytes)
5Bh 2xn Vehicle–- owner device framework version list (V-OD-FW- mandatory
vehicleList) (ver.high | ver.low), agreed version first
5Ch 2×m m supported Digital Key applet transaction (V-D-TX) protocol mandatory
versions (ver.high | ver.low), agreed version first.
5Eh 2×w w supported BLE (V-D-BT) Supported_DK_Protocol_Version Conditional. For
versions (ver.high | ver.low) WCC2/WCC3 capable
vehicles.
Shall be included if
and only if agreed
version in tag 5Bh is
greater than 1.02
7F50h 32 Scrypt configuration parameters mandatory
C0h 16 Cryptographic salt, s mandatory
C1h 4 Scrypt cost parameter, Nscrypt mandatory
C2h 2 Block size parameter, r mandatory
C3h 2 Parallelization parameter, p mandatory
D6h 2 Vehicle Brand (see Table 2-1 in [35]), include this tag for all mandatory3
vehicles including vehicle that supports NFC only.
12
13 Table 5-5: SPAKE2+ REQUEST Response Fields
Tag Length Description Field is
(bytes)
50h 65 Curve point X of the SPAKE2+ protocol, prepended with 04 h as per mandatory
Listing 18-3
2
The introduction of versioning for Bluetooth subsystem (WCC2) is gated by V-OD-FW version 1.0
3
Vehicle models launched before 01-01-2021 may not support this. Vehicle models launched after 01-01-2021,
including vehicle models only supporting NFC shall support this.
1 5.1.2.3 Usage
2 Before sending the SPAKE2+ REQUEST command, the vehicle shall check the counter for
3 SPAKE2+ pairing attempts. If the counter indicates 7 pairing attempts have been made, the
4 vehicle shall not send the SPAKE2+ REQUEST command. Instead, the vehicle shall send an OP
5 CONTROL FLOW to abort (error counter limit for wrong pairing password is exceeded, new
6 pairing password needed (0Dh) or no specific reason(00h)). When a new pairing password is
7 generated, the counter shall be reset.
8 As described in Section 2.10.6, the vehicle shall send the V-OD-FW version list with agreed
9 V‑OD-FW version, to be used by the owner device.
10 The vehicle shall also send the list of supported Digital Key applet protocol versions, whereby
11 the first listed version shall be used by the vehicle as the agreed version with the owner device.
12 The whole list of Digital Key applet protocol versions (Tag 5Ch) shall be included in the Key
13 Creation Request (See Section 11.8.1, DIGITAL_KEY_APPLET_PROTOCOL_VERSION).
14 This allows the determination of the best version to be used for key sharing with friend device.
15 Further, this allows the friend device to determine the best transaction (fast transaction, standard
16 transaction) version with the vehicle (V-D-TX).
17 The WCC2/WCC3 capable vehicle shall send the version list (tag 5Eh) to the device in the
18 SPAKE2+ Request. The device sends the selected version, to the vehicle in tag 5Fh. The set of
19 V-D-BT version lists (tag 5Eh) obtained from the vehicle shall also be included in the Key
20 Creation Request (see Section 11.8.1). This is done because owner pairing may be first done over
21 the NFC link and Bluetooth activation happens later. If a commonly supported BT protocol
22 version is not found, then the device shall return empty Tag 5Fh with length 0. If the owner
23 device does not support Bluetooth, but a friend device does, the domain version V-D-BT
24 becomes applicable. The process of selection of V-D-BT at the time of Bluetooth activation is
25 shown in Figure 19-2. The version selection is described in detail in Section 19.2.1.7.
26 Reception of at least 16 versions shall be supported by all entities. Transmitters may transmit up
27 to 16 versions.
28 Version h.l is represented as ver.high=’h’ (one byte) and ver.low=’l’ (one byte).
29 The first version in the list shall be the agreed version value, the following version values shall
30 be ordered from the highest to the lowest. At least one version shall be provided; otherwise the
31 service is considered as not available.
32 The vehicle choice for the Digital Key applet protocol version is provided as part of the Digital
33 Key applet transaction (see Section 15).
1 All curve points of the SPAKE2+ protocol are defined following x9.63 standard [22] as the byte
2 stream 0x04 || <x> || <y> where <x> and <y> are 32-byte integers in big-endian representation
3 (see Section 18.1).
4 If the returned X value is at infinity or is not a valid point on the defined ECC curve, the vehicle
5 shall abort the flow and shall send an OP CONTROL FLOW command with P2 value set to 0Ch
6 as described in Section 5.1.7.
7 The number of Scrypt iterations (cost parameters) is a positive 4-byte unsigned integer value that
8 configures the Scrypt function (see Section 18.4) to derive the verifier values in the Vehicle
9 OEM Server and on the device. Other transmitted Scrypt parameters are the block size and the
10 parallelization parameters (see Section 18.1.2). The value part of the Scrypt cost parameter TLV,
11 Block size parameter TLV, and Parallelization TLV is encoded in big-endian format.
12 If the vehicle does not find any version supported by both sides for either SPAKE2+ or the
13 Digital Key applet protocol or both, the vehicle shall send an OP_FLOW_CONTROL (“Owner
14 Pairing Flow Control”) command with an appropriate reason code as defined in Table 5-24,
15 instead of the SPAKE2+ REQUEST command.
16 If the SPAKE2+ REQUEST command is successfully processed, the vehicle and device shall
17 calculate the shared secret K as per Listing 18-4 and Listing 18-5, respectively.
18 This SPAKE2+ REQUEST command may return either a general error condition as listed in
19 Table 5-2 or one of the error conditions listed in Table 5-6. No response data shall be returned
20 with an error status word.
21 Table 5-6: SPAKE2+_REQUEST Response Error Status Words
Status Comment
Word
6985h Command used out of sequence
6A88h Received data invalid or zero
9484h Device not ready for pairing
22
24 5.1.3.1 Purpose
25 This command mutually exchanges evidence to prove that the calculated shared secret is equal
26 on both sides.
27 5.1.3.2 Definition
28 command: 80 32 00 00 Lc [Table 5-7] 00
29 response: [Table 5-8] 90 00
30 Table 5-7: SPAKE2+ VERIFY Command Fields
Tag Length Description Field is
(bytes)
52h 65 Curve point Y of the SPAKE2+ protocol, prepended with 04h as mandatory
per Listing 18-2
2 5.1.3.3 Usage
3 Before sending the SPAKE2+ VERIFY command, the vehicle shall increase the counter for
4 SPAKE2+ pairing attempts.
5 The vehicle shall calculate evidence M[1] as described in Listing 18-7 and send it, together with
6 curve point Y, to the device.
7 The device shall verify the following:
8 1. if the received curve point Y is a valid point on the defined ECC curve
9 2. the received M[1]
10 If both verifications are successful, the device shall calculate evidence M[2] as described in
11 Listing 18-8 and shall send M[2] back to the vehicle in SPAKE2+ Verify Response.
12 Only if the vehicle successfully verifies the received M[2], the vehicle shall continue the owner
13 pairing flow.
14 If any of the above verification fails, i.e., an error occurs, the device shall not calculate M[2] and
15 shall not return M[2] or any other response data except the status word. In this case, the vehicle
16 shall send an OP CONTROL FLOW command to abort the owner pairing with P2 value set to
17 09h as described in Section 5.1.7, instead of the next regular command.
18 The SPAKE2+ VERIFY command may return either a general error condition as listed in Table
19 5-2 or one of the error conditions listed in Table 5-9.
20 Table 5-9: SPAKE2+ VERIFY Response Error Status Words
Status Word Comment
21 The SPAKE2+ VERIFY step leads to secure channel keys used to establish a SCP03 channel
22 between the Framework and the vehicle for the subsequent command exchanges. The used
23 SCP03 channel is established following Listing 18-10 and Listing 18-11. The created secure
24 channel keys shall be reset under the following conditions:
25 • After successful owner pairing
26 • When device returns a response other than 9000h or 61XXh (see Table 5-15)
27 • A SPAKE2+ REQUEST is sent
28 • When a tearing of communication occurs
29 • When the maximum allowed time has expired without successfully terminating owner
30 pairing
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 83/542
CCC-TS-101
1 The vehicle needs to start with SPAKE2+ again to establish new keys. Note that the pairing
2 password shall remain the same in those cases. The vehicle shall rotate the pairing password after
3 seven failed attempts.
5 5.1.4.1 Purpose
6 This command sends all data needed to generate the Digital Key to the device. It is also used to
7 provide an attestation from the vehicle of the device public key (PK) for key tracking purposes.
8 5.1.4.2 Definition
9 The following WRITE DATA command structure shall be used:
10 command: 84 D4 P1 00 Lc [command_data] [command_mac] 00
11 response: [response_mac] 90 00
12 Parameters P1 and P2 are always set to 00, except for the last WRITE DATA command, in
13 which P1 shall be set to 80h.
14 The command shall only be allowed to be sent in a secure channel.
15 The command may return either a general error condition as listed in Table 5-2 or one of the
16 error conditions listed in Table 5-10.
17 Table 5-10: WRITE DATA Response Error Status Words
Status Comment
Word
6985h Command used out of sequence
6A84h Not enough memory
18 5.1.4.3 Usage
19 One or more WRITE DATA commands may be used to write the requested data objects into a
20 buffer in the device.
21 Table 5-11: Objects for Digital Key Creation
Tag Length Data Content Field is
(bytes)
7F4Ah variable Endpoint creation data, elements from Table 15-13, except mandatory
the fields listed in the text below
7F4Bh variable DER-encoded X.509 Vehicle Public Key Certificate [K], mandatory
Listing 5-3
7F4Ch variable DER-encoded X.509 Intermediate Certificate optional
7F4Dh variable Mailbox Mapping Table 5-13 mandatory
7F4Eh variable Device Configuration Table 5-14 mandatory
5F5Fh 0 Completion of Digital Key Data Sending mandatory
2 All required objects of Table 5-11 shall be written to the device in the order given in the table.
3 One or several TLVs are allowed to be written per (sequence of) WRITE DATA command(s).
4 The TLV 5F5Fh shall be written at last to mark the end of the transmitted data sequence. The last
5 WRITE DATA command of this sequence, which contains TLV 5F5Fh, shall be indicated by
6 setting P1=80h.
7 All required objects of Table 5-12 shall be written to the device when the vehicle has accepted
8 the device PK. The last WRITE DATA command of this sequence shall be indicated by setting
9 P1=80h.
10 5F5Fh shall be the last TLV written to mark the end of the transmitted data sequence.
11 Tag 7F4Ah shall contain all data elements from Table 15-13 (not including the outer tag
12 7F27h, only the inner tag value 4Dh, 46h, etc.), except for the following elements:
13 • Endpoint identifier (defined by device)
14 • Instance CA identifier (defined by device)
15 • Counter limit (deprecated, shall not be used)
16 If the vehicle_identifier is provided as part of Tag 7F4Ah, the device shall compare it to the value
17 provided in the Vehicle Public Leaf Certificate [K] and abort the owner pairing if the check fails.
18 In this version of the specification, the vehicle shall include only one single authorized_PK
19 (inner Tag 49h). This authorized_PK shall correspond to the Vehicle intermediate CA or the
20 Vehicle OEM CA PK (root).
21
22 The maximum command data length shall be 239 bytes: len = [command_data] + [padding] +
23 [command_mac]
24 len = 239 + 1 + 8 ≦ 255 (ok)
25 len = 240 + 16 + 8 > 255 (not ok)
26 [command_data] + [padding] shall be a multiple of the AES block size (16 bytes). The
27 padding scheme is described in [9]. At least one byte padding (80h) shall be required. The
28 maximum response data length shall be 239 bytes.
29 The vehicle public key shall be provided as a X.509 certificate signed by the Vehicle OEM CA
30 as described in Listing 5-3.
31 The X.509 [3] definition of the basic constraints extension is described in Listing A-5.
32 The X.509 [3] definition of the key usage extension is described in Listing A-4.
33 Listing 5-1: Vehicle Certificate Extension Schema
1 VehicleCertificateExtensionSchema ::= SEQUENCE
2 {
3 extension_version INTEGER (1..255)
4 }
2 The Vehicle Public Key Certificate data is described in Listing 5-3. See [3] for details on X.509
3 v3 certificate format.
4 Listing 5-3: Vehicle Public Key Certificate Data
1 vehicle-key-cert-data Certificate ::=
2 {
3 tbsCertificate
4 {
5 version v3, --shall be v3--
6 serialNumber ..., --a random integer chosen by the certificate issuer,
7 Signature
8 {
9 algorithm {1 2 840 10045 4 3 2}–-OID for ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA-256)
10 },
11 issuer rdnSequence:
12 {
13 {
14 {
15 type {2 5 4 3}, --OID for CommonName
16 value“"..”"–-shall match the subject of the issuing certificate, shall use PrintableString or UTF8String format
17
18 }
19 }
20 },
21 validity
22 {
23 notBefore Time:“"..”"–-shall use UTCTime or GeneralizedTime as defined in [3]
24 notAfter Time:“"..”"–-shall use UTCTime or GeneralizedTime as defined in [3]
25 },
26 subject rdnSequence:
27 {
28 {
29 {
30 type {2 5 4 3}, --OID for CommonName
31 value“"Vehicle OEM Identifie”"–-contains the subject of the certificate, as per Appendix B.2.6
32 shall use PrintableString or UTF8String format
33 }
34 }
35 },
36 subjectPublicKeyInfo
37 {
38 algorithm
39 {
40 algorithm {1 2 840 10045 2 1}–-OID for ecPublicKey (ANSI X9.62 public key type)
41 parameters {1 2 840 10045 3 1 7}–-OID for prime256v1(ANSI X9.62 named elliptic curve)
42 },
43 subjectPublicKey‘'04..’'H–-the public key pre-pended with 04h to indicate uncompressed format
44 },
45 extensions
46 {
47 {
48 extnID {1.3.6.1.4.1.41577.5.1}, --OID for Vehicle Public Key Certificate (see Appendix B.2.2)
49 critical TRUE,
50 extnValue ‘…’H --DER encoding for VehicleCertificateExtensionSchema extension as per Listing 5-1
51 },
52 {
53 extnID {2 5 29 15}, --KeyUsage standard extension
54 critical TRUE,
55 extnValue ‘'0302078’'H–-DER encoding for KeyUsage, digitalSignature only
56 },
57 {
58 extnID {2 5 29 19}, --BasicConstraints standard extension
59 critical TRUE,
60 extnValue ‘'300’'H–- DER encoding for cA=FALSE
61 },
62 {
63 extnID {2 5 29 35}, --OID for AuthorityKeyIdentifier standard extension
64 critical FALSE,
65 extnValue ‘'..’'H- DER encoding of an AuthorityKeyIdentifier sequence, containing only a KeyIdentifier element.
66 -- The KeyIdentifier is an OCTET STRING containing the 160-bit SHA-1 hash of the value of the BIT STRING
subjectPublicKey
67 --from the issuer certificate (excluding the tag, length, and number of unused bits)
68 },
69 {
70 extnID {2 5 29 14}, -- OID for SubjectKeyIdentifier standard extension
71 critical FALSE,
72 extnValue ‘…’H–-160-bit SHA1 hash of the value of the BIT STRING subjectPublicKey
--(excluding the tag, length, and number of unused bits)
}
73 }
74 },
75 signatureAlgorithm
76 {
77 algorithm {1 2 840 10045 4 3 2}
78 },
79 signatureValue‘'..’'H–-the certificate signature computed as per [3]
80 --ECDSA signature
81 }
1 Conditional fields shall be present when the data element designated by the corresponding Sig-
2 Bit is used.
3 Table 5-14 provides all supplementary configuration information to the device.
4 Table 5-14: Device Configuration Data
Tag Length Description Field is
(bytes)
7F4Eh variable Device configuration mandatory
7F49h variable 7F49 template is used to provide wireless capability optional
(NFC/UWB) and related data; this template shall be included
by vehicle.
If this tag is not present, only NFC is supported. (equivalent to
only 5F50 tag present)
See Table 19-86 for details
7F60h variable SHARING_CONFIGURATION (for key sharing, see Section optional
11)
DAh 1 If this tag is not present, the immobilizer token and slot optional
identifier are retrieved from vehicle. If this tag is present, the
following values are assigned:
00h immobilizer token and slot identifiers are retrieved from
vehicle
01h immobilizer token and slot identifiers are retrieved online
02h no immobilizer token, and slot identifiers are retrieved
from vehicle
03h no immobilizer token, and slot identifiers are retrieved
online
04h immobilizer token and slot identifiers for owner are
retrieved from vehicle and friend immobilizer token and slot
identifiers are retrieved online. If this setting is used during
owner pairing, the owner device shall use 01h for friend
sharing.
05h no immobilizer token but with slot ID retrieved from
vehicle for owner device; no immobilizer token but with slot ID
retrieved online for friend device. If this setting is used during
owner pairing the owner device shall use 03h for friend sharing.
2 5.1.5.1 Purpose
3 This command shall continue to use the established session keys to retrieve all data needed to
4 verify the Digital Key created by the Digital Key framework in the Digital Key applet instance.
5 5.1.5.2 Definition
6 command: 84 CA 00 00 Lc [encrypted_tag] [command_mac] 00
7 response: [response_payload] [response_mac] 90 00 or 61XX
8 Only one tag shall be requested per GET DATA command. The tags may be requested in
9 arbitrary order. Elements may be omitted if they are not required.
10 X.509 certificates shall not be wrapped into additional TLV structures, but tags shall be used to
11 refer to the certificates in the command tag list, as indicated below.
12 Le shall be set to 00h as the exact length of data depends on the variable certificate field sizes.
13 GET RESPONSE shall be used if the response status word indicates that more data is to be
14 retrieved.
15 This command may return either a general error condition as listed in Table 5-2 or one of the
16 error conditions listed in Table 5-15.
17 Table 5-15: GET DATA Response Error Status Words
Status Comment
Word
61XXh XX indicates the number of response bytes still available (use GET RESPONSE)
6985h Command used out of sequence
6A88h Reference data not found
6400h Digital Key could not be created
6402h Requested elements not available
18 5.1.5.3 Usage
19 The command requests the transfer of the required data element by providing the corresponding
20 tag. The response data length shall not exceed 239 bytes, as the maximum length of an APDU
21 response shall not exceed 258 bytes (including status word):
22 len = [response_data] + [padding] + [response_mac] + [status_word]
23 len = 239 + 1 + 8 + 2 ≦ 258 (ok)
24 len = 240 + 16 + 8 + 2 > 258 (not ok)
25 [response_data] + [padding] equals a multiple of the AES block size (16 bytes). At least one byte
26 padding (80h) is required. The maximum response data length is then 239 bytes.
27 See Section 18.4.12 for calculation of [command_mac] and [response_mac].
28 Each element shall be requested in a separate GET DATA command. GET RESPONSE shall be
29 used if the returned data exceeds the GET DATA response data maximum length.
30 When the response is a TLV structure (e.g., certificate) then the response shall not be wrapped
31 in the requested tag. Otherwise (e.g., string), the response shall be wrapped in the requested tag.
1 If all the remaining bytes cannot be sent in the current response, the status word 61XXh shall be
2 used instead of 9000h.
3 If XX is between 01h and EFh, XX number of bytes (1..239) are still available and shall be sent in
4 the next response (which shall be the last one). Note that XX does not include padding length.
5 If XX equals 00h , not all remaining bytes can be sent in the next response.
6 Values between F0h and FFh are not allowed for XX.
7 Table 5-16: GET DATA Response Decrypted Payload for tag 7F20h
Description
Vehicle OEM signed Device OEM CA Certificate (DeviceOEM.PK.VehicleOEMCert), [F] as per
Listing 15-12
8 Table 5-17: GET DATA Response Decrypted Payload for tag 7F22 h
Description
Device OEM signed Instance CA Certificate, [E] as per Listing 15-15
9 Table 5-18: GET DATA Response Decrypted Payload for tag 7F24h
Description
Digital Key Certificate signed by Instance CA (DigitalKey.DKCert) as per Listing 15-5
10 Table 5-19: GET DATA Response Decrypted Payload for Tag D3h
Tag Length Description
(bytes)
D3h 1–30 Friendly name of the owner key (UTF-8) with length of 1 to 30 bytes
11 The friendly name of the owner Digital Key should be assigned during owner pairing. The
12 friendly name shall be a UTF-8 encoded string. The owner should be allowed to edit the name
13 for identification and personalization. For privacy reasons, the friendly name should not contain
14 private information, such as the full name of the owner.
16 5.1.6.1 Purpose
17 This command shall only be used to retrieve remaining data that could not be fully transmitted in
18 the GET DATA response. This command shall only be accepted if the GET DATA response
19 received previously was with a status word
20 61XXh
21 5.1.6.2 Definition
22 command: 84 C0 00 00 Lc [command_mac] 00
23 response: [response_payload] [response_mac] 90 00 or 61XX
24 When the response data is not fully transmitted in the response payload of GET RESPONSE, a
25 status word 61XXh shall be returned. XXh indicates the number of response bytes still available.
26 When a response data is completely transmitted in the response payload of GET RESPONSE and
27 no more remaining data is to be returned, a status word 9000h is returned.
1 This command may return either a general error condition as listed in Table 5-2 or one of the
2 error conditions listed in Table 5-20.
3 Table 5-20: GET RESPONSE Response Error Status Words
Status Comment
Word
6985h Command used out of sequence
4 5.1.6.3 Usage
5 One or more GET RESPONSE commands shall only be used to retrieve all response data that
6 could not be fully transmitted in the GET DATA response.
7 The command shall only be accepted when sent immediately after a GET DATA or GET
8 RESPONSE response with the status word 61XXh.
9 The vehicle shall send the last GET RESPONSE command when a GET RESPONSE response
10 with XX of 1..239 is received. Values between F0h and FFh are not allowed for XX. When XX is
11 00h, at least one more GET RESPONSE command shall follow.
13 5.1.7.1 Purpose
14 With this command, the vehicle may control the flow at predefined points and abort the flow at
15 any time while giving a status to the device.
16 “Continue” and “End” shall be used where specified in the flow diagrams. Status information
17 about the state, successful or unsuccessful end, etc. shall be provided.
18 5.1.7.2 Definition
19 This command is always sent outside of the secure channel.
20 command: 80 3C [Table 5-21][Table 5-22 or Table 5-23 or Table 5-24]
21 response: 90 00
22 This command may return a general error condition, as listed in Table 5-2.
23 5.1.7.3 Usage
24 The vehicle shall not consider the session as terminated before it has received the response to the
25 OP CONTROL FLOW command (applicable for P1=11h or P1=12h).
26 The OP CONTROL FLOW response should be kept as short as possible to minimize the risk of
27 false positives when a tearing happens on the response.
28 When aborted, the vehicle shall perform the NFC link teardown procedure, followed by the NFC
29 reset procedure, before it restarts owner pairing or any other transaction.
30 P1 indicates the main action triggered by the command; P2 provides the reason code.
31 The Digital Key Framework shall ignore unknown P1/P2 values, if a P1 value is not known it
32 shall be treated as P1=10h (continue flow) and ignored.
3 Table 5-23: OP CONTROL FLOW P2 Parameters for P1=11 (end with success)
P2 Value Description
11h successful end of key creation and verification, key not tracked by vehicle
4 Table 5-24: OP CONTROL FLOW P2 Parameters for P1=12 (end with failure)
P2 Value Description
00 h no specific reason
01h no matching SPAKE2+ version found between vehicle and device
02h no matching Digital Key applet protocol version found between vehicle and device
03h pairing failed due to timeout of timer 1
04h pairing failed due to timeout of timer 2
05h pairing failed due to timeout of timer 3
06h pairing failed due to timeout of timer 4
07h pairing failed due to timeout of timer x (spare, not used)
08h preconditions for owner pairing not fulfilled
09h evidence verification on vehicle side failed
0Ah wrong Digital Key configuration
0Bh certificate verification failed
0Ch curve point X zero or invalid
0Dh error counter limit for wrong pairing password is exceeded, new pairing password
needed
7Fh pairing failed due to response data or format error of previous command
5 The option to end the flow refers to the regular end of the transaction and the possible outcomes
6 (successful, not successful) and the UI actions.
7 The option to abort the flow refers to the vehicle aborting the flow before its regular end due to
8 unexpected or erroneous behavior.
2 Certificates
3 Table 5-25: Certificates
Tag Certificate Reference
4 The Vehicle OEM intermediate certificate may be required by the Vehicle OEM if the Vehicle
5 OEM CA is not able to sign the Vehicle Public Key Certificate directly.
1 6 OWNER PAIRING
2 6.1 Overview
3 The owner pairing flow is operated by the Digital Key framework running on the device. As
4 shown in Figure 2-2, the Digital Key framework uses the APDU commands described in Section
5 5 to manage the configuration of the Digital Key, protected by the SE.
6 The SE operating system provides the root of trust, which is the starting point in the trust chain
7 as defined in Section 16.1.
8 The vehicle is able to select the Digital Key applet over NFC using its AID and to select the
9 Digital Key framework using the corresponding AID. The NFC controller may be reconfigured
10 for changing the routing of the communication from the SE to the Digital Key framework and
11 vice versa, based on the selected AID.
12 A new owner device pairing flow or owner device change does not imply an implicit unpairing,
13 i.e., a new device owner pairing flow only changes the owner’s key. Existing shared/friend keys
14 that are already paired and vehicle public keys are not necessarily impacted.
15 The Digital Key applet instance shall be available on the SE before the time of owner pairing
16 execution.
17
18
1 Phase 0: Preparation
22
1 The vehicle is either set into pairing mode by the user or tries to select the framework AID on the
2 console NFC reader in the vehicle as long as no owner device is successfully paired.
3 To start owner pairing mode (Step 3 of Figure 6-2), the device receives the password, either
4 through user input, a URL (see Section 6.3.7), or through an API directly from the Vehicle OEM
5 app, if installed.
6 The device shall turn off the NFC interface after the pairing procedure has been started in the
7 device (Step 3 of Figure 6-2). The NFC link shall be started again after the user has entered the
8 pairing password, or the user interface is dismissed.
9 NOTE: The deactivation of the NFC interface is introduced to stop additional polling due to
10 external influence on the device or vehicle. For example, with activated NFC interface, while
11 waiting for the input of the User (Step 3 of Figure 6-2), due to movements of the device the
12 vehicle could restart the polling again. This could lead to a restart of the owner pairing while the
13 first one is still running.
Vehicle Device
1. SELECT(Device_OS_Framework_AID)
2. SELECT_Response(response_data, versions)
<Optional>
a. Generate vehicle.PK and vehicle.SK
b. msg(1..n) = all information necessary to create the
Digital Key in the applet instance
3. n x WRITE_DATA(msg(i))
4. n x WRITE_DATA_Response(ok)
5. OP_CONTROL_FLOW(P1=continue, P2='01)
6. OP_CONTROL_FLOW Response()
7. SELECT(Device_OS_Framework_AID)
8. SELECT_Response(response_data, versions)
9. GET_DATA(tag)
10. GET_DATA_Response(data)
11. m x GET_RESPONSE()
12. m x GET_RESPONSE_Response(data)
1 The SPAKE2+ creates a symmetric session key pair used to establish a secure channel between
2 vehicle and device.
3 Before the second NFC transaction starts, the device creates the Device Key.
4 In the second NFC transaction, the vehicle reads the key creation data from the device, verifies it
5 and, if successful, stores the device public key. The NFC reset procedure is performed at the end
6 of each transaction.
7 The following steps or sequence of events takes place in the first NFC session:
Vehicle Device
SPAKE2+ Flow
2
3 The SPAKE2+ transaction is shown in Figure 6-4. The SPAKE2+ transaction establishes a
4 secure channel for the data exchange between vehicle and device. The secure channel shall
5 remain active across the RF resets.
6 The secure channel is terminated when the OP CONTROL FLOW command indicating success
7 is sent (Step 17 of Figure 6-3), when an OP CONTROL FLOW command indicates an error, or
8 after any other abortion of the flow. An incorrect decryption or MAC value on APDU commands
9 also terminates the secure channel.
10 When the vehicle is not ready for owner pairing, it shall use the OP CONTROL FLOW to abort
11 and indicate the condition to the user, such as “preconditions for owner pairing not fulfilled.”
12 Note: Only commands with the appropriate class byte indication (bit 2 = 1) are part of the secure
13 channel.
1 In case of SE-centric applet model implementation, the Digital Key framework may omit the
2 verification since it is conducted by the Digital Key applet during Endpoint creation as described
3 in Section 15.3.2.4.
4 Figure 6-5: Key Creation Data Transfer to Device
2
3 Certificate details are specified in Section 16.
2
3 Certificate details are specified in Section 16.
1 been presented to the vehicle. This attestation shall be sent to the KTS when registering the key.
2 The device shall respond with a WRITE DATA response.
3 If any verification failed, no attestation is written by the vehicle. The vehicle shall send a OP
4 CONTROL FLOW command to the device to abort, with an appropriate error indication as
5 defined in Table 15-27.
1 The SELECT RESPONSE APDU would have a TLV with Tag 5Ch: 5C 08 0103010201010100.
2 The SPAKE2+ REQUEST command would have a TLV with Tag 5Ch: 5C 0A
3 01030104010201010100.
36 When a unlisted error SW is sent, the error counter shall be increased, and the flow shall be
37 retried if the counter has not yet reached the maximum.
1 When an error is indicated in an OP CONTROL FLOW command after the Digital Key is
2 created and the vehicle rejects the pairing due to failing verification of the Digital Key
3 Certificate data, the Digital Key framework shall delete the Digital Key that has been created.
4 On receipt of an OP CONTROL FLOW command indicating a timeout error, if the maximum
5 number of cumulated failures is reached, vehicle or device shall end the pairing mode. The user
6 shall request a restart of the owner pairing procedure for which the Vehicle OEM Server has to
7 re-provision a new SPAKE2+ verifier and password.
8 When the device detects a link loss or receives an unexpected command without receiving an OP
9 CONTROL FLOW command immediately beforehand, the transaction shall be considered as
10 failed and should be allowed to be repeated a limited number of times (e.g., 5).
11 When the Digital Key has been created but the Digital Key Certificate [H] has not been
12 requested by the vehicle, the Digital Key shall not be usable.
13 A policy on the vehicle side shall limit the number of unsuccessful owner pairing attempts per
14 set of pairing password/vehicle verifier to seven as outlined in Section 5.1.2. When a successful
15 pairing is completed or when the maximum number of failed pairing attempts is reached, the
16 vehicle shall delete the verifier immediately. In case of a successful owner pairing, the verifier
17 shall not be updated before the vehicle has verified the key tracking signature unless it was
18 invalidated for a different reason.
19 When the owner pairing flow is permanently aborted (e.g., via timeout on device, maximum
20 number of retries reached, etc.), the created Digital Key shall be deleted by the device.
21 During owner pairing Phase 2, the device shall prevent selection of the Digital Key applet by the
22 vehicle and shall respond to SELECT Digital Key applet AID with Status Word (SW) = 6A82.
23
1 • Write the opaque attestation with the tag 5F5Ah tag and length into the KeyAtt field in
2 the private mailbox, if the opaque attestation has yet to be written
3 • Write the owner immobilizer token into the confidential mailbox (if immobilizer tokens
4 are retrieved from the vehicle)
5 • Write the slot identifier bitmap into the private mailbox (conditional)
6 • Write the owner slot identifier into the slot identifier list in the private mailbox
7 (conditional)
8 • Write the Vehicle OEM proprietary data structure into the private mailbox
9 • Write the signaling bitmap to indicate the update of the above data structures into the
10 private mailbox
11 • Write immobilizer tokens for sharing into the confidential mailbox (if immobilizer tokens
12 are retrieved from the vehicle and if KTS is not implemented by the Vehicle OEM)
13 (optional)
14 The owner slot identifier is not required as it is included in the endpoint certificate. The vehicle
15 OEM decides whether it needs to be written or not.
16 It is assumed that no owner access rights need to be provisioned into the Digital Key applet. The
17 vehicle shall grant full access to the owner.
18 The Digital Key applet shall notify the framework at the end of the transaction, which then shall
19 configure the contactless transaction as described in Section 6.3.4.4.
1. SELECT_Command(Instance_AID)
2. SELECT_Response(response_data)
3. AUTH0_Command(type='07')
4. AUTH0_Response
5. AUTH1_Command
6. AUTH1_Response
7. <conditional> EXCHANGE_Command(opaque attestation)
8. <conditional> EXCHANGE_Response
9. EXCHANGE_Command(owner_immobilizer_token)
10. EXCHANGE_Response
11. <optional> EXCHANGE_Command(write friend_immobilizer_token_1
with friend_slot_identifier_1)
12. <optional> EXCHANGE_Response
2
3 6.3.4.2 Step 11 and 12: <optional> Provision Disabled Friend Immobilizer Tokens
4 If the vehicle can provide appropriate security measures and if immobilizer tokens/slot identifiers
5 are provided by the vehicle, the vehicle may write the friend immobilizer tokens and slot
6 identifiers as part of Phase 3 (see Figure 6-8). If key tracking is required, the vehicle shall keep
7 them disabled until the key tracking signature has been successfully verified.
1 P2= 81h to indicate to the Digital Key applet that vehicle has completed owner pairing
2 phase 3.
3 At the end of Phase 3, the owner immobilizer token shall be provisioned in the owner device if
4 immobilizer token is retrieved from the vehicle, and the key may or may not yet be tracked by
5 the vehicle.
15
16 All parameters of the Key Tracking Response from the KTS shall not be provided in TLV
17 format. The server API parameters shall be provided as a hex string within the JSON structure
18 defined in the relevant sections referenced in Table 6-3.
If TOVeh_kts >= max, jump to step [**] with P1=end and P2='91'
If vehicle has received the KTS Response, jump to step 2.
If key is inactive,
activate key on NFC
2. CONTROL_FLOW_Command(P1='40', P2='88')
3. CONTROL_FLOW_Response
4. EXCHANGE_Command()
5. EXCHANGE_Response(key_tracking_receipt)
6. CONTROL_FLOW_Command(P1='40', P2='81')
7. CONTROL_FLOW_Response
8. <optional> EXCHANGE_Command(write friend_immobilizer_token_1
with friend_slot_identifier_1)
9. <optional> EXCHANGE_Response
2
3 6.3.5.1 Before Step 2: Reader Polls for KTS Response
4 The owner device and (optionally) the vehicle have reached out to the KTS by sending a key
5 tracking request, as defined in Table 6-1 in Phase 2.
1 If the device receives a Key Tracking Response from the KTS (see Table 6-3), the device shall
2 store the kts-Signature which is stored in the KeyAtt field in the private mailbox (see Figure
3 4-4), the corresponding bit in the signaling bitmap (SigBmp) shall be set by the device to
4 indicate to the vehicle the presence of the kts-Signature.
5 The reader executes standard transactions to check the signaling bitmap in the device. If the kts-
6 Signature is not present or the device does not respond4, the reader shall try again after a time
7 (Tveh-loop) defined in Section 6.3.6). The reader shall perform the NFC Reset procedure after each
8 standard transaction.
9 If the reader experiences a loss of connection, it shall perform the NFC Reset procedure and shall
10 restart the NFC Polling and Link Setup procedures.
11 If the vehicle receives the Key Tracking Response, the vehicle shall first skip the verification of
12 the kts-Signature in the device and then continue by writing the friend immobilizer tokens into
13 the mailbox if immobilizer tokens are retrieved from the vehicle.
14 If neither vehicle nor device receives a response before tOveh-kts has expired, the vehicle shall not
15 provision friend immobilizer tokens and shall signal the failure to get a KTS signature through a
16 CONTROL FLOW command (see Section 6.3.5.5).
17 Note: The device may not respond to NFC polling until it has received the key tracking response.
18 The vehicle shall time out (by tOveh-kts) even if the device never responds.
4
A device may choose not to enable the key on the NFC interface or BLE/UWB interface until the kts-Signature is
present in the private mailbox.
1 If the vehicle requires offline provisioning of immobilizer token, the vehicle shall indicate the
2 start of the procedure by sending a CONTROL FLOW command (Step 6):
3 P1=40h and P2=81h: continue, optional friend immobilizer token refill.
4
5 The immobilizer tokens required for key sharing shall be provisioned into the confidential
6 mailbox. Signaling bits and slot identifiers shall be written accordingly using the EXCHANGE
7 command.
24 Timers
25 The owner pairing flow is limited by retry counters and by timers on vehicle and device sides.
26 The vehicle limits the overall time of a pairing attempt, from the first detection of the device
27 responding successfully to the selection of the framework AID until the successful provisioning
28 of the immobilizer token in the Digital Key.
29 Phases and sessions are limited by shorter timer values, to be able to detect failures more
30 quickly.
31 Vehicle overall timer tOveh-1 is used to control the owner pairing procedure. This timer is not
32 linked to the device timer tOdev-1.
33 The device should at least have a timer (tOdev-1) to limit the overall time of the owner pairing
34 procedure until the key and immobilizer token are provisioned. On timeout, the previously
35 created key shall be deleted, and a new entry of the pairing password shall be required.
36 A timer should not be restarted if it is already running, and the flow passes again through the
37 “Start Timer” state (which is unlikely).
38 The following scheme provides more details about the timer start and end conditions. It shows
39 the specific timeouts from vehicle and device perspective.
2
3 Table 6-4 defines the timer values. The timer numbers refer to Figure 6-11 with a split into
4 vehicle and device side.
5 Table 6-4: Recommended Minimum Vehicle and Device Timeout Values
Timer Description Value
tOveh-1 Overall OP transaction timer (detection of device until final UI) 30 sec
tOdev-1 Overall OP transaction timer (first response to polling until KTS 30 sec
signature not received)
tOveh-2 not required
tOdev-2 Start of pairing mode until detection of polling Device
OEM
specific
tOveh-3 Last WRITE DATA command until first response to polling for 10 sec
GET DATA
tOdev-3 Endpoint created until detection of polling 5 sec
tOveh-4 Endpoint data processed until first successful response to 5 sec
SELECT for first standard transaction
tOdev-4 Endpoint data sent to vehicle until detection of polling 10 sec
Tveh-loop Time of repeated standard transaction to retrieve KTS receipt 1 sec
(Note 1) - this is not a timeout, but a loop timer
tOveh-kts Time until KTS receipt should be received 20 sec
Tveh-SelectRetry Time between each retry of SELECT command at NFC OP phase 500 ms
3, until expiration of TOveh-4
6 Note 1: The device might not respond to polling until the KTS receipt is received.
1 pairing. The URL is not intended to be reached out to. It is used to transport the parameters to be
2 interpreted by the framework.
3 The URL formatting rules are specified in RFC 3986 [27]. The URL syntax shall take the
4 following form:
5 scheme://authority/version/redirect?query#fragment
6 For example:
7 https://digitalkeypairing.org/v1/0001?technology=NFC,BLE&graphics=0001A0A1A2A3
8 #pwd=12345678
9 Table 6-5: Pairing Password URL Syntax
Component Length Description Field is
(character)
scheme 5 “https”: HTTP protocol operating over TLS mandatory
authority 21 Domain name defined and registered by CCC mandatory
Domain: digitalkeypairing.org
version 2 “v1”: Version number to identify the fields in the mandatory
URL
redirect 4 Vehicle Brand Identifier [35]. This is used for mandatory
server redirection in owner pairing.
query Non-sensitive URL parameters mandatory
technology variable Communication interfaces supported for pairing optional
by the vehicle. This parameter may be “NFC” or
“NFC,BLE”
If this query is not present, the communication
interface is expected to be “NFC”
graphics 12 The NFC reader position graphics identifier of optional
the vehicle which is provided by vehicle OEM.
This identifier is given as [Vehicle Brand
Identifier || 4-byte vehicle defined graphics
identifier], represented as string. The Vehicle
Brand Identifier is defined in [35].
fragment Sensitive URL parameter mandatory
Device strips the fragment from the URL when
using the URL to contact the authority to
preserve the confidentiality.
pwd 8 pairing password mandatory
10
11
1 7 STANDARD TRANSACTION
1 8 FAST TRANSACTION
vehicle endpoint
1. SELECT
2. SELECT response
3. AUTH0 command: vehicle ephemeral public key | identifiers
4. AUTH0 response: cryptogram | endpoint ephemeral public key
15
1 9 USER AUTHENTICATION
2 Devices shall provide the functionality to enforce user authentication according to their user
3 authentication (UA) policies. The device shall provide at minimum one of the UA policies ([A],
4 [AL], [E], [T]) (see Table 9-2). The user authentication policy is set by the user on the device.
5 UA is enforced by the device only. The conditions for enforcing UA are determined by the
6 selected UA policy, based on the transaction type (see Table 9-2).
7 The transaction type is set as a domain specific transaction_code value in P2 parameter of the
8 AUTH0 command. Transaction type assignments are specified in Table 9-1.
9 User authentication may be enabled or disabled individually for each Digital Key. The UA
10 policy is stored as a list of transaction types that require user authentication. For every new
11 Digital Key, the user authentication should be set to Off [O] by default (see Table 9-2). Device
12 should inform Vehicle about the currently used UA policy at BLE connection setup, and also
13 when UA policy is changed on the device (Communication of User Authentication Policy is
14 described in Section 19.3.8.1).
15 Table 9-1: AUTH0 Command Transaction Type Coding
P2
Transaction Type
(transaction_code)
00h RFU
01h Door unlock
02h Door lock
First engine start authentication, first contact of a device with engine start rights in
03h a vehicle session (e.g. door is in unlock state before the vehicle session starts and
then first engine start in a new vehicle session)
First engine start authentication, subsequent contact of a device with engine start
04h rights in a vehicle session (e.g. door is in lock state before the vehicle session
starts, and door is unlocked before first engine start)
05h Other authentication request by vehicle
06h User authentication request by vehicle
07h First standard transaction at owner pairing (owner immobilizer token provisioning)
08h Second standard transaction at owner pairing (read KTS receipt, provision friend
immobilizer tokens)
09h–- 0Fh RFU
10h Derive ranging key (standard transaction only)
11h First approach (standard transaction only), i.e. first standard transaction after
Bluetooth LE pairing between vehicle and device outside of owner pairing
12h–- FFh RFU
1 A vehicle session starts with the first usage of the Digital Key after the end of a preceding
2 vehicle session and ends when the vehicle is locked or after an appropriate timeout of non-usage
3 of the vehicle.
4 Table 9-2 shows the assignment of policies to the transaction types and the associated resulting
5 user experience.
6
7 Table 9-2: User Authentication Policies
Device UA Policy
1 This may be coupled to a UA used for device unlock. If the user device implements such a grace
2 period, it should not exceed 5 minutes. If supported by the device, additional successful UA
3 events should cause this grace period timer to start/restart. The grace period shall expire
4 immediately when the UA becomes invalid, such as when the device is locked. Device should
5 inform Vehicle if UA is not required because the grace period has been entered or if UA is
6 required because the grace period has been left (Communication of User Authentication Policy is
7 described in Section 19.3.8.1).
8 This implicit UA shall not be used for critical actions, such as endpoint authorization, key
9 sharing, or when a device’s UA policy explicitly forbids implicit UA to be used for a transaction
10 type or remote feature execution.
11 The user should be able to enable or disable usage of this implicit UA. The user may also be able
12 to configure the length of the grace period between zero minutes (disabled) and the maximum
13 time defined above.
14
2 The check presence transaction protocol is intended to provide the following properties:
3 • Vehicle authentication
4 • Device identification
5 • Integrity and confidentiality
6 • Tracking resilience
7 The mechanism is similar to the standard transaction mechanism described in Section 7, except
8 that the device signature is not sent to the vehicle, and user authentication is disabled. The goal is
9 to allow verification of device presence near the vehicle without requiring user authentication,
10 while preventing tracking.
11 Figure 10-1: Check Presence Transaction
12
2 11.1 Encoding
3 All messages exchanged over the communication channels described in Section 11.2 are
4 compliant with Basic Encoding Rules-TLV(BER-TLV) as outlined in [40]. Certificates are
5 compliant with X.509 format, as per document [3].
6 The TLV fields shall be ordered as described in this specification. A different field order is
7 considered invalid unless specified otherwise. The nesting level is represented by indentation of
8 tag values in the tag column.
10 Definitions
10 Principles
11 The Digital Key system is based on signature verification using asymmetric cryptography. The
12 vehicle unlocks the doors or starts the engine only if a challenge has been signed with a private
13 key corresponding to a public key registered in the vehicle.
14 After the owner device and the vehicle have been paired as described in Section 6, the owner
15 possesses a private key for which the corresponding public key is stored in the vehicle.
16 To allow friends to access the vehicle, the owner uses his/her private key to sign friend public
17 keys. On presentation of the owner’s signature over the friend’s public key, the vehicle will in
18 turn accept the friend as a new vehicle user and store the friend’s public key.
19 Digital key sharing consists of the owner sending an invitation URL to the friend device and a
20 stateful exchange of key creation, key signing, and data import requests. When a secure sharing
21 channel, such as a device OEM-controlled proprietary messaging channel, is used, then
22 invitation and stateful sharing messages can all be sent across this channel. No additional second
23 factor verification (i.e., activation options and device PIN) of the destination device should be
24 required. These secure sharing methods are named approved sharing methods throughout this
25 specification, which means that they are approved by the vehicle OEM for use without additional
26 activation options. The approval process is out of scope of this specification. The list of approved
27 sharing methods can be pre-agreed between vehicle OEM and device OEM, or it can be sent
28 using key tracking and event notifications.
29 Digital Key Sharing between devices of different device brands (known as cross-platform
30 sharing), consists of:
31 1. Sending an invitation over a messaging channel that the owner uses regularly with the friend.
32 This provides good insurance that the invitation is received by the intended person. The
33 channel to exchange the stateful sharing messages is defined by [38].
34 a. One or more Vehicle OEM-defined activation options, such as the sharing password
35 along with more options (E.g., presence of a key fob during the first usage of the friend
36 key), shall be applied if required by the vehicle OEM. Vehicle OEM provides these in the
37 trackKey response or eventNotification sent to owner device. Available activation
38 options are listed in Section 17.8.18. The list of activation options for a given vehicle is
39 communicated to owner and friend device during key tracking. In addition, the owner
40 device provides the list of activation options to the friend device during key sharing. The
41 activation options shall be shown in the owner and friend device uIs. Friend can select
42 and use one option from the list of activation options.
1 i. If the sharing password is one of the supported activation options, then the owner
2 device shall make the password available in the device UI along with necessary
3 guidance for usage. In case of a vehicle software update that adds or changes
4 activation options, owner device can be updated using event notifications.
5 2. If a vehicle OEM decides to not support additional activation options, the owner device
6 should propose the use of a device PIN (and potentially other “silent” verification methods in
7 the future) to owners that want to add additional verification to their shares. The policy for
8 device OEM-proprietary sharing methods is defined by the owner device OEM.
9 In some cases, (e.g., when list of approved sharing methods has been modified by the vehicle
10 OEM) the owner device shall send a sharing method attestation for shares using an approved
11 sharing method to confirm that the owner device uses the updated list of approved sharing
12 methods.
13 The conditions of change of the sharing policy (i.e., adding or removing approved sharing
14 methods from the list) by the vehicle OEM are out of scope of this specification.
15 The vehicle OEM shall notify the device OEM of a change to the activation policy using either
16 an event notification “SHARING_POLICY_CHANGED” or another device OEM proprietary
17 method.
1 Figure 11-1: Detail of Key Sharing Flow Between Owner and Friend Device After Channel is Established
2
3 Figure 11-1 does not show all steps or parameters, such as the full payload coding or the device
4 OEM server. It is meant to clarify the flow in principle and pointing to the relevant elements.
5 The exchanges between owner and friend device are described by the stateful workflow method
6 using the following HTTP access methods as defined in [38]. An application running on a device
7 may invoke the following APIs on Relay Server (see Section 11.3.4.1 to 11.3.4.6)
8 • CreateMailbox
9 • UpdateMailbox
10 • DeleteMailbox
11 • ReadDisplayInformationFromMailbox
12 • ReadSecureContentFromMailbox
13 • Relinquish Mailbox
14 The secure element is not involved in generating key material used for the sharing channel as
15 described in this section.
16 The key sharing flow and data is described in Section 11.8.
17
1 Notifications
2 The push notification feature shall be implemented by the Relay Server.
3 Notification tokens as described in [38] should be used by every device OEM.
4 If the notification tokens are not used, the devices shall implement a polling strategy for Relay
5 Server data. Devices may implement a (backup) polling strategy even if push notifications are
6 used.
7 The polling strategy should follow these recommendations:
8 • After sending the invitation, the owner device should poll every 10 seconds for a duration
9 of 3 minutes for the Signing Request (or other messages to be received as per Table
10 11-3), thereafter it should poll every 30 seconds for the next 10 minutes, thereafter it
11 should poll every 3 minutes for the next hour, thereafter every hour until the mailbox is
12 expired or deleted.
13 • After accepting the invitation and uploading the signing request to the mailbox, the friend
14 device should poll every 5 seconds for a duration of 1 minute for the Import Request (or
15 other messages to be received as per Table 11-3), thereafter it should poll every 30
16 seconds for the next 10 minutes, thereafter it should poll every 3 minutes for the next
17 hour, thereafter every hour until the mailbox is expired or deleted.
1 Digital Keys the format identifier is digitalwallet.carkey.ccc. The content data structure is
2 described in Table 11-1.
3 Table 11-1: content in JSON Format
Max
Key Type Length Description Required
(Bytes)
This is data shared
between devices on
genericSharingData Dictionary 4096 Yes
different device OEM
platforms.
Device OEM proprietary
provisioning information
<Device OEM> Dictionary 4096 for the designated device Optional
OEM. Ignored by all
other device OEMs.
4
5 <Device OEM> is defined in [35].
6 The owner device can add proprietary data (e.g., “apple”) that a friend device from the same
7 device OEM is able to use, e.g., to improve the user experience. If the friend device is from
8 another device OEM, then the friend device shall ignore the proprietary data. It shall be possible
9 for the owner device to add multiple <Device OEM> fields, each one for a different device
10 OEM, if required.
11 Note that all fields can be “seen” by friend devices of all platforms.
12 The genericSharingData is defined as the following JSON structure:
13 Table 11-2: JSON formatted genericSharingData data structure
Key Type Max Description Required
Length
(bytes)
sharingData String 4096 Sharing data structure (TLV string) as Yes
listed in Table 11-3 based on the value
of sharingDataType
sharingDataType Integer 4 Enum for type of message. See Yes
sharingDataType in Table 11-3.
sharingId String 64 ID of sharing invitation Yes
friendKeyId String 64 Identifier of key on friend device (this Conditional. Required for
is used on owner side to track shared sharingDataType
keys) sharingKeySigningRequest.
authType Array variable “VehicleActivation” = activation Conditional. Required for
of options sharingDataType
strings “DevicePIN” = PIN entered on friend sharingKeyCreationRequest
device and if an additional
Other friend verification options can verification method is
be added in the future.
1 • DevicePIN usage shall only be indicated if both of the following conditions are true:
2 o No vehicle activation is required
3 o The owner chooses to use the device PIN for a key sharing
4 It shall be possible to add other friend verification options, which are not part of the current list
5 of activationOptions, in the future.
6 activationOptions are provided by the vehicle OEM in the trackKey response or
7 eventNotification. Those options are specific to and implemented by the vehicle and may include
8 the sharing password and/or alternatives to key activation via sharing password. Owner and
9 friend device shall indicate them in the UI. If the field is absent, then no additional verification is
10 required by the vehicle OEM. In this case, where no activationOptions are provided by Vehicle
11 OEM, owner or device OEM can still require other verification methods not involving the
12 vehicle OEM, as described in authType.
13 pinLength shall be a value between 4 and 8 (including 4 and 8), chosen by the owner device. A
14 suitable combination of PIN length and allowed number of attempts to enter the device PIN in
15 the friend device UI shall be chosen by the owner device, following the recommendations in
16 [38].
17 brand is the string describing the vehicle brand as received by the owner device in
18 trackKeyResponse (as per Section 17.7.1.3).
19 model is the string describing the vehicle model as received by the owner device in
20 trackKeyResponse (as per Section 17.7.1.3).
21 vehicle_identifier is the value as provided in the endpoint configuration (as per Section 15.3.2.4
22 tag 7F27h, subtag 4Dh).
23
24 Table 11-3: sharingDataType enum Definition
Key Value
1 The sharing type sharingPinReEntryRequest signals the friend that the entered device PIN was
2 wrong. It contains the number of remaining attempts in the field sharingData in TLV format.
3 The sharing type sharingPinReEntryValue contains the key signing request with the new friend
4 device PIN.
5 Sample Provisioning Information in CreateMailbox Message is shown in Listing 11-1.
6 Listing 11-1: Sample Provisioning Information in JSON Format
1 {
2 „"forma“":„"digitalwallet.carkey.cc“",
3 „"conten“": {
4 „"genericSharingDat“": {
5 „"sharingDat“":„"7F31xxx“",
6 // key creation request, this field changes depending on the sharingDataType value
7 „"sharingDataTyp“": 1,
8 „"sharingI“":„"123456789..“",
9 „"friendKeyI“":„"A2B686DFC..“"
10 „"authTyp“": „"DevicePI“"]
11 „"pinLengt“": 6
12 },
13 „"appl“": {
14 // ...
15 }
16 }
17 }
7
1 isPushNotificationSupported shall be set to “true” by all CCC relay servers, i.e., they shall be
2 supported by servers. Devices may choose to not use them although their use is strongly
3 recommended.
6 Security Considerations
7 The security considerations in [38] are generic. Some considerations how to apply them in the
8 context of Digital Key:
9 • The slot identifier ensures that a key creation request can lead to the creation and
10 acceptance of only one key based on this request
11 • If not using an approved sharing method, sharing should be protected by a second factor,
12 which can be either a vehicle OEM-defined second factor (i.e., activation option)
13 described in Section 11.2.1.4 and later, if supported by the vehicle, or a device OEM-
14 defined second factor (e.g., the device PIN) as described in Section 11.3.6.
15 • Sharing shall require explicit user authentication (as described in Section 9.1 for RKE).
16 Explicit user authentication is the combination of user intent and user authentication.
17 Device PIN
18 11.3.6.1 Concept
19 All devices shall support Device PIN that is generated on the owner device and entered on the
20 friend device. Device PIN could be activated by the owner during the sharing workflow if no
21 other vehicle OEM-defined activation option is used, or if the sharing password is not part of the
22 activation options. Device uIs shall guide users to transfer the device PIN over a second channel
23 and guard against the user unintentionally re-using the same channel used to communicate the
24 sharing invitation. The friend then types the PIN into the friend device UI to continue the sharing
25 workflow. The owner device then verifies that the correct PIN was entered into the friend device
26 UI.
27 The owner device policy determine” whe’her a sharing method requires the device PIN. The
28 owner device policy is determined by the owner device OEM and is out of scope. To ensure a
29 good user experience, it is recommended that multiple activation options that require user
30 interface interaction should not be activated at the same time. For example, sharing password
31 (controlled by vehicle OEM) and device PIN (controlled by device OEM)
32 Please see Section 11.2 entitled “Principles” about vehicle OEM-defined activation option and
33 device PIN policies.
1 The owner device sends the initial number of attempts in the key creation request via tag 9F17h.
2 The presence of this tag indicates that the owner has requested the entry of device PIN to the
3 friend device.
4 Table 11-4: Key Configuration
Tag Length Description Field is Domain
(bytes) Version
7F30h variable Key Configuration Mandatory V-OD-FW
D0h 1 Standard access profiles as defined in Table 11-5 Conditional, V-OD-FW
present if no
proprietary profile
is present. Either
Tag D0h or D1h
shall be present
D1h variable Proprietary access profile Conditional, V-OD-FW
present if no
standard profile is
present. Either Tag
D0h or D1h shall be
present
51h 15 or 13 not_before, DER encoded GeneralizedTime (15 mandatory V-OD-FW
bytes in length) or UTCTime (13 bytes in length)
as per RFC 5280 [2]
52h 15 or 13 not_after, DER encoded GeneralizedTime (15 mandatory V-OD-FW
bytes in length) or UTCTime (13 bytes in length)
as per RFC 5280 [3]
D3h variable Friendly name of the friend key. Limited to 30 mandatory V-OD-FW
characters
5
6 Table 11-5: Standard Access Profiles
Profile Type Description
2
3 For a more focused view, Figure 11-2 does not show the device OEM server.
4 The friend extracts the O_PIN value from the second channel or receives it over a voice call.
5 This value is now named F_PIN. The friend enters the F_PIN into the friend device UI and the
6 friend device adds the F_PIN to the key signing request.
1
2 If the friend device does not send back tag 5F3Fh (F_PIN) in the signing request, then the friend
3 device does not support the device PIN feature. The owner device policy for this case is defined
4 by the device OEM. Options could be to reject sharing to this device or propose to the owner to
5 share without device PIN, providing some security education.
6
27 11.5 Prerequisites
28 1. The Digital Key applet helper methods described in Section 15.4 or equivalent
29 implementation are available on friend and owner device.
30 2. Owner and friend devices contain the necessary key material to authenticate remote
31 servers. This key material is stored on the Digital Key framework.
32 3. Owner and friend Digital Key applet or equivalent implementation possess an Instance CA
33 dedicated to the Vehicle OEM brand involved in sharing. The issuance of Instance CA is
34 described in Section 16.
35 4. Owner and friend devices have retrieved an External CA certificate as defined in Section
36 16.2.6. This certificate is stored in the Digital Key framework of both devices.
37 5. The owner pairing has been successfully executed on the owner device, as per Section 6.
38 6. If applicable, immobilizer tokens and slot identifiers are available on the owner device’s
39 confidential and private mailboxes, as per Section 6.
1 7. The following values have been obtained by the owner, as per Section 6 or equivalent
2 preliminary operations. These values are stored on the Digital Key framework:
3 (a) IMMOBILIZER_TOKEN_LENGTH
4 (b) SIGNALING_BITMAP_OFFSET
5 (c) SLOT_IDENTIFIER _BITMAP_OFFSET
6 (d) SLOT_IDENTIFIERS_OFFSET
7 (e) VEHICLE_OEM_PROPRIETARY_DATA_OFFSET
8 (f) ATTESTATION_PACKAGE_OFFSET
9 (g) MAILBOX_CONTENT_END_OFFSET
10 (h) LONG_TERM_SHARED_SECRET
11 (i) SHARING_PASSWORD_LENGTH
12 (j) ROUTING_INFORMATION
13 (k) DIGITAL_KEY_APPLET_PROTOCOL_VERSIONS
14 (l) SHARING_CONFIGURATION
15 8. Owner and friend OEM Server have implemented the Key Life Cycle Management
16 functions especially key termination and deletion as described in Section 13.
2
3 Listing 11-2: Sharing Invitation
1 input: user action
2 output: key_creation_request
3 begin
4 generate a key_configuration field as per Table 11-4, owner might be prompted with a specific UI for this action.
5 key_configuration.updateCounter ⟵ 0
6
7 if immobilizer token to be retrieved from the owner device (i.e. Tag DAh in Table 5-14 is not present, or if Tag DAh is present
and the corresponding value is empty or is set to 00h)
8 slot_identifier ⟵ select the immobilizer token to be shared and save its corresponding slot identifier
9 else if no immobilizer tokens are used, and slot identifier is retrieved from the owner device (i.e., Tag DAh in Table 11-5 is
present and its value is set to 02h)
10 slot_identifier ⟵ save slot identifier
11 generate an endpoint_configuration field as described in Table 15-13 with
12 endpoint_configuration ⟵ copy owne’'s endpoint_configuration
13 endpoint_configuration ⟵ remove endpoint_identifier and instance_CA_identifier fields
14 endpoint_configuration.option_group_1.bit4 ⟵ 0
15 endpoint_configuration.option_group_1.bit5 ⟵ 0
16 endpoint_configuration.endpoint_identifier ⟵ see naming rules for friend key (see Section 4.2)
17
18 if confidential_mailbox_size field present in owne’'s endpoint configuration
19 endpoint_configuration.confidential_mailbox_size ⟵ 1 × IMMOBILIZER_TOKEN_LENGTH
20 if slot_identifier to be retrieved from the owner device
21 endpoint_configuration.key_slot ⟵ slot_identifier
22
23 generate key_creation_request as per Table 11-6 using key_configuration, endpoint_configuration,
24 ROUTING_INFORMATION (, friend sharing configuration)
25
26 if sharing password required by vehicle OEM policy or device policy (see Section 11.11)
27 sharing_password_seed ⟵ generate random bytes
28 generate sharing_password as per Listing 11-12 using
29 LONG_TERM_SHARED_SECRET
30 SHARING_PASSWORD_LENGTH
31 sharing_password_seed
32 store the sharing_password and sharing_password_seed on owner device
33 the owner device can display the sharing_password with specific distribution instructions
34
35 send key_creation_request to friend over owner-friend-com
36 end
1 11.8.1.1 Versioning
2 If non-backward compatible changes in the key creation request (Table 11-6) are necessary, then
3 a new tag (e.g., 7F33h) shall be defined and both data structures shall be sent to the friend device,
4 which can then pick the tag it is able to process.
5 Related applet commands:
6 - CREATE ENDPOINT (friend)
7 For forward compatibility, the friend device shall accept other tags from the owner device under
8 7F31h in the Key Creation Request. If not known, these tags shall be ignored by the friend
9 device. In future versions, the owner device may send other tags.
10 If Tag 54h in Table 11-6 is recognized, then the friend device shall determine a commonly
11 supported key sharing version (OD-FD-KS), send its supported version numbers back in the Key
12 Signing Request (see Section 11.8.1.1) and continue the key sharing process according to the
13 determined version number. If the tag is not recognized, the friend device shall behave as prior to
14 version introduction.
15 The endpoint configuration data shall contain all data elements from older versions to be
16 backward compatible. New tag shall be used if format change or extension is needed.
17 The friend device shall reject the sharing if the ROUTING_INFORMATION format cannot be
18 handled by the device OEM server, which processes the data. This data format is determined
19 before the sharing starts, so its version or format cannot be changed.
20 The friend device shall reject the sharing or ask the user to update if
21 DIGITAL_KEY_APPLET_PROTOCOL_VERSIONS are not compatible with the friend applet
22 protocol version. This version list is determined by the vehicle, the device needs to find a
23 matching version from that list.
24 The friend device shall reject the sharing or ask the user to update if any version of the set of
25 vehicle version lists in tag 5Eh is not compatible with the supported friend BT versions.
26 Note that tags 4Ah, 4Bh and D8h are not likely to change their format. If this becomes necessary,
27 new tags shall be defined and sent in addition.
7F24h variable
endpoint certificate as Listing 15-5 signed by instance CA private key mandatory
35 instance_ca_certificate,
36 endpoint_certificate,
37 (encryption_key_attestation)
38
39 else
40 generate friend_key_signing_request as per Table 11-7
41 using external_ca_certificate,
42 instance_ca_certificate,
43 endpoint_certificate
44
45 send friend_key_signing_request to owner over the friend device to owner device link
46 end
1 11.8.2.1 Versioning
2 Related applet commands:
3 • AUTHORIZE ENDPOINT (owner)
4 The friend device generates the certificates and attestations in the key signing request (Table
5 11-7) using the highest version that is compliant with the agreed key sharing version
6 (OD‑FD‑KS).
7 It then sends the key signing request with the added list of supported friend versions. The
8 selected, commonly supported version is first in the list.
7 endpointCertificate,
8 (encryptionKeyAttestation)
9
10 retrieve key_configuration sent in Step1
11 verify endpointCertificate has been created as per Step1 and Step2 rules, otherwise abort procedure
12
13 generate an entitlement_data field as per Table 11-18
If key_slot present in key_creation_request sent in Step1
14 entitlement_data.slotIdentifier ⟵ key_slot
entitlement_data.vehicleIdentifier ⟵ vehicle_identifier
15 entitlement_data.keyConfiguration ⟵ key_configuration
16
17 if second_factor_authentication_required by Vehicle OEM policy or device policy (see Section 11.12)
18 entitlement_data.sharingPasswordSeed ⟵ sharing_password_seed
19 entitlement_data.second_factor_authentication_required ⟵ true
20 else
21 Entitlement_data.second_factor_authentication_required ⟵ false
22
23 execute framework.getInstance as per Section 15.4.1.3
24 output: instance
25
26 execute instance.getEndpoint as per Section 15.4.1.9
27 output: endpoint
28
30 I ⟵ index of the slot identifier selected in Step 1
31 clearPrivateMailboxBit(endpoint, i, SLOT_IDENTIFIER_BITMAP) as per Listing 11-9
32 setPrivateMailboxBit(endpoint, SLOT_IDENTIFIER_BITMAP_BIT, SIGNALING_BITMAP_OFFSET) as per Listing 11-8
33
37 if immobilizer token required
38 immo_token_extraction_offset = i × IMMOBILIZER_TOKEN_LENGTH
39 immo_token_extraction_length = IMMOBILIZER_TOKEN_LENGTH
40 else
41 immo_token_extraction_offset = 0
42 immo_token_extraction_length = 0
43
44 execute endpoint.authorize as per Section 15.4.1.14
45 input:
46 u16_offset = immo_token_extraction_offset
47 u16_length = immo_token_extraction_length
48 bytes_arbitraryData = entitlement_data
49 bytes_externalCACertificate = externalCACertificate
50 bytes_instanceCACertificate = instanceCACertificate
51 (bytes_encryptionKeyAttestation = encryptionKeyAttestation)
52 bytes_endpointCreationCertificate = endpointCertificate
53 output: bytes_attestation(, bytes_encryptedData, bytes_encSenderePK)
54
55 prepare import_request buffer as per Table 11-16 using
56 bytes_attestation,
57 (bytes_encryptedData),
58 (bytes_encSenderePK)
59
60 send import_request to friend over the owner device to friend device link
61 end
1 11.8.3.1 Versioning
2 Related applet commands:
7 (encrypted_confidential_mailbox_data),
8 (encryption_public_key),
9
10 extract friend private mailbox mapping offsets from mailbox_mapping
11
12 execute framework.getInstance as per Section 15.4.1.3
13 output: instance
14
15 execute instance.getEndpoint as per Section 15.4.1.9
16 output: endpoint
17
18 if key tracking required as per tag DBh from Table 11-6 or
19 online attestation delivery is supported as per tag DCh from Table 11-6
20 Execute Listing 11-7 from Section 11.10to retrieve response
21
22 prepare attestationPackage buffer as per Table 11-19 using contents of:
23 key_attestation,
24 (key_tracking_receipt)
25
26 execute endpoint.setPrivateData as per Section 15.4.1.18
27 input: offset = ATTESTATION_PACKAGE_OFFSET, data = attestationPackage
28
29 setPrivateMailboxBit(endpoint, ATTESTATION_PACKAGE_BIT, SIGNALING_BITMAP) as per Listing 11-8
30
31 from that point a notification indicating success of the online attestation delivery can be received from server
32 on reception of such notification the following cleanup procedure is executed:
33 clearPrivateMailboxBit(endpoint, ATTESTATION_PACKAGE_BIT, SIGNALING_BITMAP) as per Listing 11-9
34 execute endpoint.setPrivateData as per Section 15.4.1.18
35 input: offset = ATTESTATION_PACKAGE_OFFSET, data = zeroes
36
37 if tag 4Bh was received in Step 1
38 execute endpoint.setParameters with the following parameters:
39 input: offset_private = offset extracted from tag 4Bh,
40 length_private = length extracted from tag 4Bh
41
42 if tag DAh from Table 11-6 was present in Step 1, and is empty or equal to 00h or 01h
43 execute endpoint.setConfidentialData as per Section 15.4.1.16
44 input:
45 bytes_encsenderepk = encryption_public_key
46 bytes_encdata = encrypted_confidential_mailbox_data
47 u16_offset = 0
48 u16_length = IMMOBILIZER_TOKEN_LENGTH
49
50 if tag 4Ah was received in Step 1
51 execute endpoint.setParameters with the following parameters:
52 input: offset_confidential = offset extracted from tag 4Ah,
53 length_confidential = length extracted from tag 4Ah
54 setPrivateMailboxBit(endpoint, 0, SLOT_IDENTIFIER_BITMAP) as per Listing 11-8
55
56 end
1 If slot identifier is retrieved online, the friend device shall keep the key disabled on the NFC and
2 BLE interfaces until a valid slot identifier is available. The key shall be usable on the NFC and
3 BLE interfaces only after a successful trackKeyResponse(see Section 17.7.1.3) containing the
4 slot identifier.
5 The Vehicle OEM server shall verify the freshness and validity of the Owner Instance Certificate
6 during key tracking if tag DBh was present with a non-zero value in the owner trackKey request
7 (see Section 6.3.4.4). In the case of failure, the Vehicle OEM Server shall respond in
8 trackKeyResponse with Sub Status Code equal to 50118, i.e., Invalid or expired Owner Instance
9 CA Certificate, as described in Section 17.10. The Vehicle OEM Server shall also send an event-
10 Notification SHARED_KEY_REJECTED to the owner Device OEM Server.
11
1 Before the key tracking has taken place, a termination request may be received by the vehicle
2 OEM server. In such a case, a key tracking receipt shall not be sent in response
3 The Vehicle OEM Server may store the friend’s endpoint public key and the Instance CA public
4 key. The Device OEM may store an immutable unique device identifier for a given Instance CA
5 public key, such that if the two parties cooperate, it is possible to link an endpoint public key
6 with an immutable unique device identifier for legal and investigational purposes.
7 Table 11-20: Key Tracking and Online Attestation Delivery Request
Tag Length Description Field is Domain
(bytes) Version
7F38h variable Friend Key Tracking and Online Attestation Delivery Request V-OD-FW
attestation package as described in Table 11-19 without tag 45h mandatory V-OD-FW
(key tracking receipt)
friend endpoint certificate container as per Table 11-14 signed by mandatory V-OD-FW
instance CA
friend Instance CA Certificate container as per Table 11-13 mandatory V-OD-FW
signed by external CA
endpoint encryption key attestation as per Table 15-47 signed by conditional D-VS
endpoint private key (present only if immobilizer token is
required)
5F49h 65 Device privacy encryption key (Device.Enc.PK) mandatory D-VS
DAh variable Device privacy encryption version, Default mandatory D-VS
“ECIES_v1” (ASCII)
7F2Dh variable SharingMethodAttestation Conditional. Friend D-VS
Arbitrary data attestation (as per table 15-61) device shall provide
with owner key using arbitrary data = SHA-256 the attestation if it
hash value of Table 11-15 has been received
from owner device
7F11h variable Content of Table 11-15 without tag 51h. Conditional: present D-VS
when 7F2Dh is
present.
7F23h variable Newly issued owner Instance CA Certificate [E] Conditional: D-VS
in encrypted data container per as per Table Required only if Tag
11-12 and Table 11-17. The intended recipient 7F22h were present
should be the Vehicle OEM Server in Table 11-16
1 Endpoint encryption key attestation (Tag 7F26h) shall be included in Table 11-20 when Tag DAh
2 in tag 7F60h in Table 11-6 is set to 01h.
3 Friend slot identifier (Tag 4Eh) shall be included in Table 11-21 when tag DAh in Tag 7F60h in
4 Table 11-6 is set to 01h or 03h.
5 Friend immobilizer token (Tags 4Ah and 97h) shall be included in Table 11-21 when Tag DAh in
6 Tag 7F60h in Table 11-6 is set to 01h.
7 Listing 11-7: Key Tracking Receipt
1 begin
2 device creates friend device to Device OEM Server link
3 device prepares message as per Table 11-20
4 device sends message over the Device OEM Server link to Vehicle OEM Server link as per Section 17 (API – trackKey)
5 Vehicle OEM Server conditionally (as described in 6.3.4.4) the owner instance CA certificate contained in the Key Tracking
Request
6 Vehicle OEM Server verifies owner signature contained in attestation package
7 Vehicle OEM Server optionally tries to push the attestation package via vehicle telematic link
8 Vehicle OEM Server optionally computes key tracking receipt as
9 per vehicle OEM proprietary specification
10 device includes tag 45h and, if slot identifier is retrieved online 4Eh from Table 11-21 received from server into Table 11-19
11 response may be empty if vehicle OEM does not require key tracking receipt
12 device updates slot identifier as per Section 15.3.2.21 SETUP ENDPOINT command (if slot identifier is retrieved online)
13 device writes confidential mailbox using encrypted confidential mailbox data as per Section 15.3.2.20 SET CONFIDENTIAL
DATA command (if immobilizer token is retrieved online)
14 end
1 Vehicle OEM policies allow it. Vehicle OEM should consider the consistency for sharing
2 password required in Digital Key creation and key tracking response.
3 The vehicle transmits the attestation to the Vehicle OEM Server via the telematic link. The
4 attestation is then transmitted to the owner device via the implemented communication channel.
5 Table 11-22: Vehicle Attestation Data Fields
Tag Length (bytes) Description Field is
41h 1 version = 01h, version of the Vehicle Attestation Data Fields mandatory
92h 8 random mandatory
5Ah 65 friend public key mandatory
44h 8 sharing_password_seed mandatory
93h 4 usage = E670F31Bh mandatory
7 11.12 Algorithms
8 Listing 11-8: setPrivateMailboxBit
1 input: endpoint, bit_index, offset
2 output: n/a
3 begin
4 execute endpoint.getPrivateData as per Section 15.4.1.17
5 input: offset, length = 1
6 output: one_byte
7
8 mask = 1
9 mask = mask << bit_index
10 one_byte = one_byte | mask
11
12 execute endpoint.setPrivateData as per Section 15.4.1.18
13 input: offset, data = one_byte
14 end
10 mask = ~mask
11 one_byte = one_byte & mask
12
13 execute endpoint.setPrivateData as per Section 15.4.1.18
14 input: offset, data = one_byte
15 end
4 11.13 Versioning
5 Key sharing data is exchanged via framework APIs and is mostly consumed by the applet. The
6 version information shall combine framework and applet version into OD-FD-KS.
7 Version agreement does not add another roundtrip to the sharing flow. Instead, the version
8 information is sent by the owner device as part of the key creation request. This implies that the
1 provided key creation data can be consumed by the friend device independently of the supported
2 friend versions. To achieve this, the key creation data must contain all data required by all
3 possibly supported friend device versions.
4 If, for example, the format of the endpoint identifier changes in a future version, the new
5 endpoint identifier must be identified by a new tag and the owner device must sent old and new
6 identifiers. The friend device can then pick the required format.
7 Mandatory tags shall not be removed from the key creation request, as the friend device might
8 only support a version where this tag is required to proceed.
9 The friend device determines the highest commonly supported version from the owner version
10 list and its own version list. It then sends the key signing request in a format supported by the
11 owner device.
12 The friend device uses the list of vehicle-supported owner pairing versions (V-OD-FW) to
13 determine the format of the key tracking request (Table 11-20). Note that content and format of
14 some fields of the key tracking request are determined by other domain versions.
15 If no common version can be determined, then both sides shall fall back to the sharing data
16 formats defined before versioning was introduced
2 Key termination may be triggered in the vehicle, in the Vehicle OEM Server (e.g., account), on
3 the device, and in the Device OEM Server (e.g., remote device wipe, if supported).
4 A termination attestation should be sent from the device to the KTS whenever the device
5 terminates the Digital Key. Along with the termination attestation, the device should send the
6 Vehicle OEM proprietary data subsection of the private mailbox. The termination attestation and
7 the Vehicle OEM proprietary data may not be sent in all cases due to technical constraints.
8 If the termination attestation is provided in the manageKey call from the Device OEM server to
9 the Vehicle OEM Server, then the vehicle OEM server should consider the key as “terminated in
10 the device” before attempting to terminate the key in the vehicle.
11 If the termination attestation is not provided in the manageKey call from the Device OEM server
12 to the Vehicle OEM Server, then the vehicle OEM server shall continue to terminate the key in
13 the vehicle while respecting the vehicle key termination conditions.
14 The Device OEM shall not terminate an active Digital Key unless one of the following
15 conditions are met:
16 • The terminate action is initiated by an authenticated user and user intent on the device is
17 confirmed, or
18 • After the vehicle OEM has signaled to the device OEM that the Digital Key has been
19 deleted in the vehicle
20 In the case of remote device wipe (REV_170/REV_420), the action shall only be initiated by an
21 authenticated user and Device OEM shall inform user that any keys on the device will not be
22 useable.
23 To address user safety, a fade-out period may be established by the Vehicle OEM server. The
24 fade out period is defined as the time between the IN_TERMINATION message and the actual
25 termination of the key on the vehicle. The Vehicle OEM server notifies the owner or friend
26 Device OEM server about the start of this period by sending an IN_TERMINATION
27 notification. Further requirements associated with the fade-out period (e.g. use, purpose and
28 duration of the period) are Vehicle OEM specific. A sample implementation of
29 IN_TERMINATION notification is shown in Section 17.7.7.6. After receiving the
30 IN_TERMINATION message, Device OEM server should notify the user. Further behaviors
31 after reception of the IN_TERMINATION message by the Device OEM server are specific to
32 the Device OEM.
33 If a fade-out period is required, the Vehicle OEM should notify the device about the start of this
34 period.
35 If the fade-out period has ended and/or the conditions for a successful termination of the key in
36 the vehicle are met, the key is tracked as terminated in the KTS.
37 If online, owner and friend devices shall be notified about the successful termination. The device
38 should delete the associated Digital Keys prior to deletion of the instance CA triggered by
39 DELETE CA command.
40 The detailed termination and deletion flows in the vehicle and device are described in Sections
41 13.2, 13.3, 13.4, 13.5, and 13.6.
2 The use cases in Table 13-1 through Table 13-4 are grouped into more detailed flow diagrams.
3 Table 13-6 provides the mapping. In all the flow diagrams described in Sections 13.2 through
4 13.6, the exchanges between vehicle and Vehicle OEM Server, device and Device OEM Server,
5 and Vehicle OEM Server and KTS are out of scope of this specification. These exchanges are
6 shown for illustration purposes only. The exchanges between Vehicle OEM Server and Device
7 OEM Server are described by the relevant server APIs (see Section 17). The following APIs are
8 used in key termination procedures:
9 • manageKey() and manageKeyResponse: See Section 17.7.2
10 • eventNotification() and eventNotificationResponse: See Section 17.7.3
11 Note: Only relevant parameter(s) in the API that are specific to the particular step in the flow
12 diagram are shown.
13 All keys are identified by their Digital Key identifier (key id) in the Vehicle OEM Server and
14 Device OEM Server. Digital Key identifiers are not shown explicitly in the flow diagrams unless
15 required for comprehension. Along with the terminationAttestation parameter, the
16 vehicleOEMProprietaryData is also transferred if not explicitly shown in the flow diagrams.
17 Interpretations166ft hee keyID parameter inside166ft hee manageKey() call for
18 action=TERMINATE (as defined in Section 17.7.2.2), are described in Table 13-5 below
19
3 For full parameters of each API call, please refer to the corresponding sections.
4 Note: Friend key ID is used in all the figures in this section and that the term is synonymous
5 with Digital Key identifier of a friend.
6 Data elements requiring privacy encryption (See Section 14) are identified by “*” in the flow
7 diagrams. The exact data elements to be encrypted are defined in Section 17.
8 Messages requiring authentication (See Section 14) are identified by “+” in the flow diagrams.
9 The exact messages and API calls to be signed are defined in Section 17.
10 Table 13-6:Detailed Key Termination Use Cases
Flow ID Description Use Case ID
Friend Key Remote Termination
REV_100 Friend key termination in vehicle R-VT-2
REV_110 Friend key termination in owner Vehicle OEM account R-VOT-2
REV_120 Friend key termination in friend Vehicle OEM account R-VOT-3
REV_130 Friend key termination on owner device natively R-DT-4
REV_140 Friend key termination on owner device in Vehicle OEM app R-DT-2
REV_150 Friend key termination based on expiry date of the key R-VOT-5
REV_160 Friend key termination by Device OEM (device security issue) R-DOT-5b
REV_170 Friend key termination due to remote wipe of device R-DOT-4b
REV_180 Friend key termination due to deletion of personal data in R-VOT-10
friend Vehicle OEM account
Friend Key Local Deletion
REV_200 Friend key termination on friend device natively R-DT-6
REV_210 Friend key termination on friend device in Vehicle OEM app R-DT-5
REV_220 Friend key termination due to local wipe of device R-DOT-2
Friend Key Remote Suspension
REV_300 Friend key temporary suspension in device lost mode in Device R-DOT-4a
OEM account
REV_310 Friend key resume from device lost mode in Device OEM account R-DOT-4a
Owner Key Remote Termination
1 For remote termination, the key is considered as terminated when it is deleted in the vehicle.
6
7 Alternatively, it may be required for the vehicle to request online deletion. In this case, the flow
8 is similar to remote termination from the Vehicle OEM Server. Devices are informed about the
9 deletion request and the successful deletion (REV_100a)
1 Figure 13-2: REV_100a: Friend Key Termination in Vehicle (Vehicle Required to be Online)
2
3 The eventNotification (IN_TERMINATION) should be sent in all cases so that the device side
4 does not see any difference between both options.
1 Figure 13-3: REV_110/120: Friend Key Termination in Owner/Friend Vehicle OEM Account
4
5 In some cases, the owner may terminate a friend key using one of the following methods:
6 1. Natively through the device operating system (REV_130, see Figure 13-4)
7 2. Using vehicle OEM apps installed on the device which leverage one or more APIs
8 offered by the device operating system (REV_140, see Figure 13-4)
9 3. Using vehicle OEM apps installed on the device which contact the Vehicle OEM server
10 directly. (REV_110)
1 Figure 13-5: REV_150: Friend Key Termination Based on Expiry Date of the Key
2
3 The flow depicting Vehicle detection of an expired friend key is shown in Figure 13-6 and is
4 similar to REV_100: Friend Key Termination in Vehicle (Figure 13-1).
1 Figure 13-7: REV_160: Friend Key Termination by Device OEM (Device Security Issue)
2
3 When the device cannot be reached, the Vehicle OEM Server shall still be notified immediately,
4 as shown in Figure 13-8.
1 Figure 13-8: REV_160a: Friend Key termination by Device OEM and Friend Device is Offline
2
3 The termination attestation and the Vehicle OEM proprietary data from the device may be
4 provided to the KTS if the device is online.
1 Figure 13-9: REV_170: Friend Key Termination Due to Remote Wipe of Device
2
3 In some cases, the friend may terminate the friend key using one of the following methods:
4 1. Natively through the device operating system (REV_200, see Figure 13-10)
5 2. Using vehicle OEM apps installed on the device which leverage one or more APIs
6 offered by the device operating system (REV_210, see Figure 13-10)
7 3. Using vehicle OEM apps installed on the device which contact the vehicle OEM server
8 directly (REV_120)
19
20 The Vehicle OEM indicates to the vehicle that the key can be terminated immediately when the
21 device key is registered in the KTS as “terminated on device.”
5
6 The Vehicle OEM indicates to the vehicle that the key can be terminated immediately when the
7 device key is registered in the KTS as “terminated on device.”
8 For each friend key present on the device, the flow shown in Figure 13-11 shall be executed.
9 The owner key termination due to device wipe is described in Section 13.5.6.
2
3 The suspension on the device is not tracked in the KTS. The suspension of the key in the vehicle
4 may be tracked by the KTS.
5 manageKey SUSPEND command communicates the intent of the user to suspend the key to the
6 KTS, but not the suspension status in the device.
7 The Vehicle OEM notifies the owner and friend when the key is successfully suspended in the
8 vehicle.
9 Regardless of vehicle OEM server support of remote suspend/resume or not, the Vehicle OEM
10 server shall response with manageKeyReponse (statusCode 200) if it receives the
11 manageKeyRequest successfully.
1 Figure 13-13: REV_310: Friend Key Resume in Device OEM Account or on Device
2
3 The device shall be online to resume the key and notify the Vehicle OEM.
4 If the key is previously tracked as “suspended in vehicle,” the key shall be tracked as “resumed
5 in vehicle” before the vehicle resumes the key to avoid a state in which the key is resumed but
6 still tracked as suspended.
7 Figure 13-14: REV_310a: Friend Key Resume Using ResumeAttestation
1 When the vehicle is moved into an offline area between suspend and resume, the friend shall be
2 able to provide a resume attestation via NFC transaction to the vehicle, as shown in Figure
3 13-14.
4 Resume attestation
5 When a Digital Key has been suspended in a vehicle, it shall be possible to bring a Resume
6 Attestation using the private mailbox of an owner’s or friend phone in a similar way as it is done
7 for the first friend transaction.
8 The Resume Attestation may be used when the vehicle is offline and the owner Digital Key (see
9 Section 13.5.7) or the friend Digital Key (see Section 13.4.1) is in a suspended state.
10 The device shall add the tag 7F61h and length fields to the resume-Attestation (see Table 13-7)
11 and store the TLV structure in the KeyAtt field of the private mailbox (see Table 4-2).The
12 Resume Attestation shall be written by the Digital Key framework in the private mailbox at
13 offset ATTESTATION_PACKAGE_OFFSET and the ATTESTATION_PACKAGE_BIT
14 signaling bit shall be set.
15 During a transaction, the vehicle detects the ATTESTATION_PACKAGE_BIT and consumes
16 the attestation. The vehicle then clears the ATTESTATION_PACKAGE_BIT and clears the
17 mailbox area at offset ATTESTATION_PACKAGE_OFFSET.
18 On reception of a valid Resume Attestation, the vehicle resumes the designated key or does
19 nothing if the Digital Key is already resumed.
20 Implementation Notes:
21 If the suspend/resume feature is supported by the Vehicle OEM, the Vehicle OEM must ensure
22 that the Resume Attestation cannot be replayed using a proprietary method.
23 Table 13-7: Resume Attestation
Tag Length Description Field is Domain
Version
7F61h variable resumeAttestation (see Section 17.8.9) V-OD-FW
vehicle OEM proprietary mandatory N/A
1 Alternatively, it may be required for the vehicle to request online deletion. In that case, devices
2 are informed about the termination request and the successful termination (See Figure 13-16).
3 Figure 13-16: REV_400a: Owner Key Deletion in Vehicle UI (Change of Device)
4
5 Note: REV_400 and REV_400a are similar to flow REV_100 and REV_100a, respectively, but
6 without involvement of the friend device.
7 13.5.1.1 Transmission of the shared key information to the new owner device
8 After the owner device change, information related to the shared keys associated with the owner
9 Digital Key is sent to the new owner device in Step 22 of Figure 13-15 using trackKeyResponse
10 (see Section 17.7.1).
16 REV_500: Owner key termination on owner device natively (delete pass for
17 Digital Key)
18 This flow corresponds to REV_200 with the owner device instead of the friend device.
12
13
1 Figure 13-18: REV_610: Owner key resumption after device reported lost/stolen
2
3 Alternatively, it may be required for the vehicle to request online unpairing. In that case, devices
4 are informed about the termination request and the successful termination (See Figure 13-20).
5 Note: Inability to reach owner or friend device in Steps 3 through 6 does not stop the process
12 Rules
13 Digital Key termination on the vehicle side requires protection against replaying all or a part of
14 an earlier key sharing process. The following preconditions shall apply:
15 • C1: The initial slot identifier (SlotID in the example below) values in the private mailbox
16 shall be set to all bytes FFh.
17 • C2: The initial Slot Identifier Bitmap (SlotID Bitmap in the example below) value is 00h.
18 The vehicle shall implement the following rules if Tag DAh (as defined in Table 5-14) is set to
19 00h (slot identifiers and immobilizer tokens) or 02h (slot identifiers only) are provided by the
20 vehicle:
21 • Rule V1: Accept a key addition only if the friend slot identifier (as described in Section
22 4.3.1) is verified to be valid for an available key storage in the vehicle.
23 • Rule V2: When a key is deleted in the vehicle (from any interface), delete the data
24 (device PK, etc.) in the corresponding key storage and assign a new slot identifier. The
25 vehicle OEM shall implement appropriate means to ensure replay protection. This new
26 slot identifier is available for future Digital Key sharing. When all bits in the Slot
27 Identifier Bitmap are set to 1, the vehicle shall set the corresponding bit in the signaling
28 bitmap to 0 to indicate that all slot identifiers are written. To avoid inconsistent states,
29 either all of the described operations shall be done in one atomic transaction, or the
30 vehicle shall verify the consistency of all bits and values after each console reader
31 transaction and update accordingly.
32 • Rule V3: On each console reader transaction, the vehicle refills slot identifiers in each
33 entry with bit=0 and sets the bit to 1 in an atomic transaction. The vehicle ensures the
34 uniqueness of the slot identifiers and memorizes the next slot identifier to be written to
35 the device.
36 All devices shall implement the following rules:
37 • Rule D1 (only applies to owner device): Provide a matching pair of slot identifier and, if
38 applicable, immobilizer token from the confidential mailbox to the friend when sharing a
1 Digital Key. Set the value in the corresponding bit of the Slot Identifier Bitmap in the
2 private mailbox to 0. Set the corresponding bit in the signaling bitmap to 1 if it was set to
3 0 before sharing. The device shall always use the lowest value of all slot identifiers for
4 key sharing.
5 • Rule D2: When a key is terminated in the device locally, send the termination attestation
6 and the Vehicle OEM proprietary data to the Vehicle OEM Server to trigger the deletion
7 of the Digital Key in the vehicle.
8 Example
9 The example below shows the principle of key termination and slot identifier refill as per the
10 above rules. In this example, the following notes apply:
11 1. Immobilizer tokens are not shown.
12 2. The vehicle has a number of key stores (Key Storage) in memory (0–10; see Figure
13 13-22).
14 3. Key storage 0 is reserved for the owner key.
15 4. The slot identifiers are refilled by the vehicle starting with “the highest slot identifier
16 value in the private mailbox of the device + 1.”
17 5. For all steps described in the example, the vehicle shall update the signaling bitmap after
18 writing the slot identifier bitmap and the slot identifiers to signal an update to the owner
19 device.
20 6. Slot identifiers and immobilizer tokens are provided by the vehicle.
21 Figure 13-22 shows the device and vehicle memory after owner pairing and before the vehicle
22 has identified the immobilizer tokens and the corresponding slot identifiers for friend sharing (if
23 the immobilizer tokens are retrieved from the vehicle).
24 Initially all device-side key storages are set to FFh FFh (Rule C1). The signaling bitmap shows
25 that slot identifiers need to be refilled.
26 Figure 13-22: Example Step 1: After Owner Pairing
27
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 192/542
CCC-TS-101
1 Figure 13-23 shows device and vehicle memory after the vehicle has provisioned the slot
2 identifiers. All entries on the device containing FFh FFh have been filled with slot identifier
3 values, and the signaling bitmap has been updated to show that no slot identifier entries are
4 missing in SlotIdentLst (Rule V3).
5 The vehicle memorizes the next slot identifier to be provisioned into the device (*).
6 Figure 13-23: Example Step 2: Device Fully Refilled
7
8 In Figure 13-24, the owner has shared one key with a friend, and the slot identifier bitmap and
9 signaling bitmap have been updated accordingly (Rule D1). The friend key is accepted by the
10 vehicle, either via server link or via a standard transaction (Rule V1). The slot identifier 00h 01h
11 has been used for the friend key (SlotID Bitmap bit= 0). The framework of the owner device
12 memorizes the assigned friend slot identifiers.
13 Figure 13-24: Example Step 3: Key Shared with Friend
14
1 In Figure 13-25, the vehicle has refilled the empty entry in the mailbox with the next available
2 slot identifier (00h 08h) and memorizes 00h 09h as the next available slot identifier. The
3 corresponding bit in the slot identifier bitmap has been set to 1 and the one in the signaling
4 bitmap has been set to 0 by the vehicle.
5 Figure 13-25: Example Step 4: Refill of Shared Slot Identifier
6
7 In Figure 13-26, the friend key has been deleted in the vehicle (Rule V2). The vehicle has
8 emptied the key storage and has assigned slot identifier value 00h 0Bh. When the device presents
9 the Digital Key (attestation package) of friend A to the vehicle again, the vehicle rejects the key
10 (Rule V1).
11 Figure 13-26: Example Step 5a: Key Termination in Vehicle
12
13 Key termination in the vehicle may be originated in the vehicle, from the Vehicle OEM Server,
14 from the Device OEM Server, or from the owner device. The key termination is propagated to
15 the friend device via the Vehicle OEM Server, which causes remote key deletion on the friend
16 device.
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 194/542
CCC-TS-101
1 In an alternative, Figure 13-27, the friend key has been deleted in the device (Rule D2). The
2 device deletes the key locally and sends the termination attestation and the Vehicle OEM
3 proprietary data to the Vehicle OEM Server to trigger the deletion of the Digital Key in the
4 vehicle. The vehicle removes the key as for a remote deletion (Rule V2).
5 Figure 13-27: Example Step 5b: Key Termination in Device
3 Usage
4 Sensitive data exchanged between the device and the Vehicle OEM shall be encrypted. The
5 currently identified data includes:
6 • Key tracking request data (content: attestation package, device encryption public key)
7 • Notification messages to the owner device that contain friend key information (e.g., the
8 Digital Key identifier of a friend)
9 • Remote key deletion requests from the owner device that contain friend key information
10 (e.g., the Digital Key identifier of a friend)
11 Remote key deletion requests that are sent from a device to the Vehicle OEM Server shall be
12 authenticated through a signature.
13 Key deletion commands that are sent from the Vehicle OEM Server to the target device shall be
14 authenticated through a signature.
15 Figure 14-1 shows the keys that are used for encryption/decryption and signature verification.
16 Figure 14-1: Message Authentication and Privacy Encryption
17
18 See Table 14-1 for a complete list of involved keys.
VehicleOEM.Sig.SK Vehicle Vehicle OEM Server signs the data Safely stored in Vehicle
OEM Server sent to the device OEM Server
VehicleOEM.Sig.PK Vehicle Device authenticates the data from the Certificate pre-stored in
OEM Server Vehicle OEM Server device OS
VehicleOEM.Enc.SK Vehicle Vehicle OEM Server decrypts the data Safely stored in Vehicle
OEM Server sent from the device OEM Server
VehicleOEM.Enc.PK Vehicle Device encrypts the data sent to the Certificate pre-stored in
OEM Server Vehicle OEM Server device OS
Devx.Enc.SK Device Device decrypts the data sent from the Created at owner
Vehicle OEM Server pairing/key sharing, safely
stored in the device OS if
not already existing
Devx.Enc.PK Device Vehicle OEM Server encrypts the data Created at owner
sent to the device pairing/key sharing, sent
in key tracking request
DigitalKeyx.SK Device Device signs the data sent to the This is the Digital Key
Vehicle OEM Server SK, safely stored in the SE
DigitalKeyx.PK Device Vehicle OEM Server authenticates the This is the Digital Key PK
data sent from the device
2 The privacy and authentication keys are used in the following cases, described in detail in
3 Section 17:
4 1. The key tracking request contains Devx.Enc.PK as part of the encrypted payload. The
5 payload is encrypted using VehicleOEM.Enc.PK with the encryption scheme described in
6 Section 14.3. The Vehicle OEM Server stores Devx.Enc.PK associated with the Digital
7 Key identifier provided in the attestation chain.
8 2. The remote (Digital Key) deletion request sent from the owner device to the Vehicle
9 OEM Server contains the Digital Key identifiers of owner and friend in a structure
10 described in Section 14.2. The request data is signed using the owner private key
11 (DigitalKeyx.SK) and encrypted using VehicleOEM.Enc.PK, as it contains the Digital
12 Key identifier of a friend. The signature scheme is described in Section 14.3.
13 3. The key deletion request sent from the Vehicle OEM Server to the target device is signed
14 by the Vehicle OEM Server using the VehicleOEM.Sig.SK. The signature is verified by
15 the target device using VehicleOEM.Sig.PK.
16 4. The notification which is sent from the Vehicle OEM Server to the owner device is
17 encrypted using Devx.Enc.PK, as it contains the Digital Key identifier of a friend.
18 Certificate Chains
19 All public keys used for authentication and privacy are embedded in X.509 certificates except
20 the Device Privacy Encryption Key, and are chained to the trusted root as shown in Figure 14-2.
21 The trust chain of all certificates shall be verified before using them.
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 197/542
CCC-TS-101
1 The usage of each certificate’s public key is described in Table 14-1 and in Section 14.1.1. All
2 private keys are assumed to be stored safely where they have been created.
3 Figure 14-2: Authentication and Privacy Encryption Certificate Chain
4
5 14.1.2.1 [H] – Digital Key Creation Attestation
6 See Section 16.2.8 for a description of this certificate.
1 When the key id of the target key is not known to the source device, the target key id tag shall be
2 absent.
3 If the key id of the target key is known to the source device but not to the server and vehicle, the
4 slot identifier tag shall be used to identify the key to terminate. The corresponding slot identifier
5 shall be deleted in the server and vehicle. When the target device attempts to track the key after
6 its deletion, the track key request shall be rejected.
7 In some cases, the slot identifier might not be known. In those cases, the key identifier shall be
8 used to identify the key to be deleted.
9 Table 14-2 describes the data fields of the Remote Termination Request.
10 Table 14-2: Remote Termination Request Data Fields
Tag Length (bytes) Description Field is Domain
Version
5F21h 20 subject key identifier (key id) of the source mandatory D-VS
Digital Key
7F23h variable list of key identifier and slot identifier pairs of the mandatory D-VS
target Digital Key(s)
61h variable pair of key identifier and slot identifier of 1st mandatory D-VS
Digital Key
50h 20 subject key identifier conditional D-VS
57h variable slot identifier conditional D-VS
nd
61h variable pair of key identifier and slot identifier of 2 conditional
Digital Key
20 subject key identifier conditional
50h
variable slot identifier conditional
57h
… … … …
11 The request shall contain either subject key identifier or slot identifier in element (tag 61h). It
12 should contain both if they are available.
13 The request may contain one or more pairs of target slot identifier and target key identifier. The
14 maximum number of keys in the request may be defined by the Vehicle OEM; otherwise it is
15 limited to 16.
16 The input data fields for signature creation for the remote termination request for the owner
17 device and the Vehicle OEM Server are described in Table 14-3 and Table 14-4, respectively.
18 The signature creation for the remote termination request is described in Table 14-3.
19 Table 14-3: Remote Termination Request Owner Device
Tag Length (bytes) Description Field is Domain
Version
7F40h variable Remote Termination Request owner device mandatory D-VS
content of Table 14-2 mandatory D-VS
1 Note: The counter_value field (deprecated) in Table 15-56 is not present for SIG-DAT
2 computation.
3 Table 14-4: Remote Termination Request from Vehicle OEM Server
Tag Length Description Field is Domain
(bytes) Version
7F39h variable Remote Termination Request from Vehicle OEM Server mandatory D-VS
content of Table 14-2 with: D-VS
source key id = <vehicle key id>, if originated in vehicle
source key id = <vehicle OEM key id>, if originated in Vehicle OEM Server
source key id = <owner key id>, if originated by owner device via Vehicle
OEM Server
5F22h 20 Subject key identifier of the certificate to be used for signature Mandatory D-VS
verification (VehicleOEM.Sig.Cert)
9Eh 64 signature with the private key of the Vehicle OEM Server mandatory D-VS
(VehicleOEM.Sig.SK) over fields from Table 14-2
4 The <vehicle OEM key id> is defined as 20 bytes of FFh. It is used when the key was deleted by
5 the Vehicle OEM (e.g., subscription ended).
6 The <vehicle key id> is defined as 20 bytes of EEh. It is used when the key was deleted in the
7 vehicle.
8 <owner key id> is provided in the remote termination request coming from the owner. It is used
9 when the key was deleted by the owner device.
10 The <device OEM key id> is defined as 20 bytes of DDh. It is used when the key was deleted by
11 the Device OEM (e.g. remote device wipe).
12 The signature covers tags 5F21h and 7F23h, inclusive of tags and lengths, as defined in Table
13 14-2.
14 When receiving a remote termination request from the owner device (Table 14-3), the Vehicle
15 OEM Server shall verify the following before executing the termination request:
16 • Value of the hash of Table 14-2 matches the arbitrary_data value provided in SIG-DAT
17 • Signature is correct
18 When receiving a remote termination request from the Vehicle OEM Server (Table 14-4), the
19 friend device shall verify the following before executing the termination request:
20 • Source key ID corresponds to the key ID of the originator
21 • Signature is correct
22 The Device OEM Server shall ensure the following security properties:
1 • Each termination request from a mobile device to the Device OEM Server shall contain a
2 signed terminationAttestation (owner or friend device deletes its own key) or
3 remoteTerminationRequest (owner deletes friend key).
4 • Each termination request and each termination response from a mobile device to the
5 Device OEM Server shall contain the Vehicle OEM proprietary data subsection of the
6 private mailbox.
7 • The user can delete only his/her own keys in the device portal, and not the shared keys.
8 • When keys are deleted in the Device OEM portal (see Table 13-4) and the device could
9 not be reached, the Device OEM Server is not required to provide a
10 remoteTerminationRequest to the Vehicle OEM Server.
17 SIG –
18 CD846C5BCFAB5141CE129A7C197129220EB5747B9A80C1726DEA200FFA42B217823545
19 2B60DD60AA8D7F9EB43EA486A87C91B9BC9886D83DAE9583F1112D183A
20 TBS –
21 5F2114FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F2320611E5014444DFCECAA
22 57A75B4C42D60A7EB1868B793BEDE05706000F00000001
23 PK -
24 043517d1a4043c6738a2fc0458fecd4ae94c833b7fac59fbf697ee65979bcd64cbc3ce7323a6c5f0c6
25 6e9500734e33f0bd93c280b7299fc85674bbc64766492e25
2 15.1 Introduction
3 The Digital Key applet is aimed at providing multi-purpose SE-based transaction mechanisms
4 combined with peer-to-peer key distribution and a data storage system with strong security and
5 privacy properties. Three types of contactless transaction may be used: standard transaction (see
6 Section 7), fast transaction (see Section 8), and check presence transaction (see Section 10).
7 In this specification, two applet implementation models are provided, depending on the Device
8 OEM’s implementation or the Digital Key service deployment model.
9 • SE-centric applet model: For this model, the Device OEM CA Certificate’s
10 corresponding public key is protected by the SE, and the non-SE endpoints (e.g., vehicle,
11 server, etc.) are verified by the SE.
12 • Framework-centric applet model: For this model, the Device OEM CA Certificate’s
13 corresponding public key is protected by the device OS native key store, and the non-SE
14 endpoints (e.g., vehicle, server, etc.) are verified by the framework.
2 Introduction
3 The following subsections describe internal data structures and APDU commands for the applet.
4 This specification supports only one Digital Key applet protocol version. The Digital Key applet
5 protocol version is set to 0100h.
1 Implementations may require the use of a SCP such as SCP03 [7] or SCP11 [28] between the
2 Digital Key applet and the Digital Key framework. In these cases, the Digital Key applet shall
3 support usage of a SCP for the following commands: CREATE ENDPOINT, TERMINATE
4 ENDPOINT, DELETE ENDPOINT, GET PRIVATE DATA, SET PRIVATE DATA, VIEW,
5 SETUP ENDPOINT, SETUP INSTANCE, READ BUFFER, WRITE BUFFER, SIGN,
6 AUTHORIZED ENDPOINT, SET CONFIDENTIAL DATA, CREATE ENCRYPTION KEY
7 and MANAGE UA-. This option of the Digital Key applet implementation is called Option A
8 (i.e., DK applet that supports SCP) in this section. The provisioning of secure channel keys is out
9 of scope of this specification. In case the response data does not fit in the response APDU due to
10 secure channel overhead (e.g., due to the addition of padding or response_mac), the applet shall
11 respond with an error status word.
12 The commands set over the contact”ess ’nterface are standardized commands. SELECT,
13 AUTH0, AUTH1, PRESENCE0, PRESENCE1, EXCHANGE, and CONTROL FLOW
14 commands are mandatory to be supported; all other commands are optional.
15 Over the wired interface, implementations may require the support of supplementary logical
16 channels in addition to support for the basic logical channel. This option of the Digital Key
17 applet implementation is called Option B (i.e., DK applet that supports supplementary logical
18 channels) in this section.
2
3 Figure 15-2 describes the allowed command flows over the wired interface. The CONTROL
4 FLOW command (which can be used anywhere after the SELECT command) is not represented
5 in this figure.
6 Figure 15-2: Authentication Command Flows Over Wired Interface
7
1
2 15.3.1.6 Generic Error Handling
3 This section applies to all listed commands. It describes the generic status words to be retrieved
4 in case of error during basic input command checking.
5 The basic input command checking includes checking that an INS is allowed on a given
6 interface, that the CLA is consistent, that P1/P2 bytes have valid values, that Lc is in valid range,
7 and checking the format of the payload.
8 The basic input command checking is executed before the steps described in the Listings below
9 and can result in the error status words described in Table 15-2.
10 This specification does not describe all other possible errors that can occur during a command
11 processing when not specified in the command listing. In such cases, the choice of the status
12 word is left to the implementer. However, usage of status word 6400h is highly recommended to
13 ensure interoperability.
14 Digital Key applet should return an error if an APDU command includes unexpected or unknown
15 parameters or tags
1 Table 15-3 lists the four different ranges of class byte values to be supported for the different
2 commands, depending on the options implemented by the Digital Key applet. The determination
3 of whether a command shall use CLA1, CLA2, CLA3, or CLA4 range is defined in the
4 command description provided in Section 15.3.2.
5 Table 15-3: Coding of the Different Ranges of Class Byte Values
Range of Over the Over the wired interface (hex)
values of contactless
the class interface
byte (CLA) (hex)
DK applet DK applet DK applet DK applet
implementati implementation implementation implementation
on does not supports Option supports Option supports
support A but does not B but does not Options A and
Options A or support Option support Option B.
B. B. A.
CLA1 00 00 00 00 – 03 or 00 – 03 or
40 – 4F 40 – 4F
CLA2 N/A 80 80 or 84 80 – 83 or 80 – 87 or
C0 – CF C0 – CF or
E0 – EF
CLA3 80 80 80 or 84 80 – 83 or 80 – 83 or
C0 – CF C0 – CF
CLA4 84 84 84 84 – 87 or 84 – 87 or
E0 – EF E0 – EF
1 Install_param_endpoint_count
2 The maximum number of endpoints that can be created on an instance of the applet.
3 Install_param_instance_CA_count
4 The maximum number of Instance CA that can be created on an instance of the applet.
5 Install_param_internal_buffer_size
6 The size in bytes of the internal buffer described in Section 15.3.2.13. This value is set by the
7 Device OEM according to Device OEM service policy, which is out of scope of this
8 specification.
9 Install_param_max_allocatable_private_mailbox_size
10 The maximum size for private mailbox per endpoint. This value is set by the Device OEM
11 according to its service policy, which is out of scope of this specification.
12 Install_param_max_allocatable_confidential_mailbox_size
13 The maximum size for confidential mailbox per endpoint. This value is set by the Device OEM
14 according to its service policy, which is out of scope of this specification.
15 Applet_implementation_options
16 The applet_implementation_options is encoded as defined in Table 15-5.
17 If this field is not present, the applet implementation model is the framework-centric applet
18 model, and the SE root of trust certificate chain model is Variant 1, as depicted in Figure 16-1,
19 and the MANAGE UA command is not implemented or disabled.
20 Note: Tag A6h, A7h and A8h have fixed values as defined in Appendix B.2, however they are
21 included here to allow for potential evolutions in the future.
22 Table 15-5: Applet Implementation Options
b8 b7 b6 b5 b4 b3 b2 b1 Description
applet_implementation_model is framework-centric applet
- - - - - - - 0
model
- - - - - - - 1 applet_implementation_model is SE-centric applet model
- - - - - - 0 - SE Root of Trust certificate chain models is Variant 1
- - - - - - 1 - SE Root of Trust certificate chain models is Variant 2
- - - - - 0 - - MANAGE UA command is not available
- - - - - 1 - - MANAGE UA command is available
b8 b7 b6 b5 b4 b3 b2 b1 Description
0 0 0 0 0 - - - RFU (0)
2 The following values define the Protocol Data Type A (Card Emulation Mode) tag (86h) and the
3 Protocol Data Type B (Card Emulation Mode) tag (87h), which are provided in tag A0h (Contact-
4 less Protocol Parameters tag) of tag EFh (System Specific Parameters tag) during the INSTALL
5 for INSTALL command. Refer to GlobalPlatform Card Specification Amendment C [20] for
6 formatting of these parameters.
7 Table 15-6: Values for Protocol Data Type A (tag ‘86’)
Tag Length Value Description Value in Protocol Value in Protocol
(bytes) Parameter Data Parameter Mandatory
(Tag ‘A0’) Mask (Tag ‘A1’)
80h 1 Unique Identifier LV structure 00h 00h
81h 1 SAK 20h 24h
82h 2 ATQA 0400h 39F0h
83h 1 ATS LV structure 00h 00h
84h 1 FWI, SFGI 72h FFh
85h 1 CID Support 00h 00h
86h 3 DATA_RATE_MAX 000000h FFFF00h
8 For Type A SFGI value, coexistence issues with legacy NFC services may appear. In such cases,
9 increasing SFGI value could be allowed, with impact only on transaction performance. In any
10 case, this value shall not exceed 8.
11 Note: LSB byte of the two-byte ATQA value is transmitted first.
2 NOTE: For some areas, certain contactless services require fixed parameter values. In such
3 cases, corresponding mask values as defined in Table 15-6 and Table 15-7 may be adapted to
4 allow availability of these services concurrently with the DK service.
SW as defined in the SW sent by the Digital Key applet to Behavior of Digital Key framework
listing in Section the Digital Key framework
15.3.2
Issue a GET NOTIFICATION command
to retrieve the notification(s)
All other SWs SW as defined in the listing Forward the received SW to the vehicle
(notification pending or not) Issue a GET NOTIFICATION command
to retrieve potentially generated
notification(s)
1
10 The presence of the key_identifier and of the vehicle_identifier depends on the notification code
11 (see Table 15-11).
12 Table 15-11: Value and Presence of the Different Fields in the HCI Notification Event
Notification Code Field Field Field
key_identifier vehicle_identifier additional
is is data is
notify_start_of_transaction 00h NA NA NA
notify_endpoint_not_found_fast 01h NA mandatory Length: 2
1 Commands
5Ch variable A list of supported Digital Key applet transaction (V-D-TX) mandatory V-D-TX
protocol versions (ver.high | ver.low) ordered from highest
to lowest. Each version number is concatenated and
encoded on 2 bytes in big-endian notation.
1 Not_before: The issued certificate start of validity date. The validity date is not required to be
2 verified by the applet.
3 Not_after: The issued certificate end of validity date. The validity date is not required to be
4 verified by the applet.
5 Authorized_PK[]: The public keys used by the device to verify other SE’s endpoint creation
6 certificates.
7 Confidential_mailbox_size: If field not present, or if present with confidential_mailbox_size
8 equal to 0000h, confidential mailbox is not available.
9 Private_mailbox_size: If field not present, or if present with private_mailbox_size equal to
10 0000h, private mailbox is not available.
11 Key_slot: A field in the endpoint configuration that is populated in the friend endpoint
12 configuration during Step 1 of the key sharing (see Section 11.8.1) if slot identifiers are retrieved
13 from the vehicle via the owner device. The value of this field is set to one of the slot identifiers
14 from the SlotIdentLst field. The key_slot can be manually set when a fast search among a large
15 number of public keys is required on the vehicle side. The fast search can be facilitated by
16 attributing key slot numbers instead of relying on the automatic hash-based naming during
17 endpoint creation. If key_slot field is not provided, an automatic slot number is generated as
18 described in Listing 15-6, since the key_slot is mandatory in the AUTH1-Response. In case of
19 slot identifiers provided online, the owner device during key sharing, assigns an automatically
20 generated random slot identifier. The slot identifier is used to derive the Kble_oob, see Sections
21 19.5.1 and 19.5.8.
22 Note: A device generated key_slot does not safeguard against attestation replay attacks during
23 key sharing.
24 This field does not need to be unique among endpoints created on an instance.
25 This field can be updated after key creation with the SETUP_ENDPOINT command. The value
26 “initial_key_slot” in the endpoint certificate will always remain the one initially assigned during
27 endpoint creation.
28 Counter_limit: This field is deprecated and shall not be used.
29 If the applet_implementation_model field is included (i.e., SE-centric applet model) in the
30 INSTALL for INSTALL command, the following additional tags shall appear after the tag
31 7F27h.
32 Table 15-16: Endpoint verification information
Tag Length (bytes) Description Field is
7F28h variable Vehicle OEM CA Certificate (signed by Device OEM) conditional
7F4Ch variable DER-encoded X.509 Intermediate Certificate optional
7F4Bh variable DER-encoded X.509 Vehicle Public Key Certificate conditional
33 Vehicle OEM CA Certificate (signed by Device OEM): this field is provided by the
34 framework and is verified by the SE. The SE also uses this data to verify the Vehicle Public Key
35 Certificate.
36 It is assumed that Device OEM CA root certificate is stored in the SE for this operation.
1 Vehicle Public Key Certificate: This field is provided by the vehicle during owner pairing. This
2 field is not present during Digital Key sharing. The SE shall verify the Vehicle Public Key
3 Certificate if this field is present.
4 Listing 15-3: Endpoint Certificate Extension Schema
1 Schema DEFINITIONS EXPLICIT TAGS
2 BEGIN
3 EndpointCertificateExtensionSchema ::= SEQUENCE
4 {
5 extension_version INTEGER (1..255),
6 vehicle_identifier OCTET STRING (SIZE (8)),
7 option_group_1 OCTET STRING (SIZE (1)),
8 option_group_2 OCTET STRING (SIZE (1)),
9 protocol_version OCTET STRING (SIZE (2)),
10 vehicle_PK PublicKey,
11 initial_key_slot OCTET STRING (SIZE (1..8)),
12 authorized_PK_list SEQUENCE(SIZE(1..5)) OF PublicKey OPTIONAL,
13 confidential_mailbox_size [0] INTEGER (1..65535) OPTIONAL,
14 private_mailbox_size [1] INTEGER (1..65535) OPTIONAL,
15 }
16
17 PublicKey ::= SEQUENCE
18 {
19 algorithm AlgorithmIdentifier,
20 public_key BIT STRING
21 }
22
23 AlgorithmIdentifier ::= SEQUENCE
24 {
25 algorithm OBJECT IDENTIFIER,
26 parameters ANY DEFINED BY algorithm OPTIONAL
27 }
28 END
22 {
23 algorithm {1 2 840 10045 3 1 7} --OID for prime256v1(ANSI X9.62 named elliptic curve)
24 },
25 public_key '04...'H --authorized_PK
26 },
27 ... --other authorized_PK
28 },
29 confidential_mailbox_size ..., --value as per endpoint configuration
30 private_mailbox_size ..., --value as per endpoint configuration
31 }
47 {
48 extnID {install_param_oid_endpoint}, --OID for Endpoint certificate
49 critical TRUE,
50 extnValue '...'H --DER encoding for endpoint-cert-extension-data as per Listing 15-4
51 },
52 {
53 extnID {2 5 29 15}, --OID for KeyUsage standard extension
54 critical TRUE,
55 extnValue '03020780'H --DER encoding for KeyUsage, digitalSignature
56 },
57 {
58 extnID {2 5 29 19}, --OID for BasicConstraints standard extension
59 critical TRUE,
60 extnValue '3000'H --DER encoding for cA=FALSE
61 },
62 {
63 extnID {2 5 29 35}, --OID for AuthorityKeyIdentifier standard extension
64 critical FALSE,
65 extnValue '...''H – DER encoding of an AuthorityKeyIdentifier sequence as defined in [3], containing only
66 – a KeyIdentifier element. The KeyIdentifier is an OCTET STRING containing the
67 – 160-bit SHA-1 hash of the value of the BIT STRING subjectPublicKey
68 – from the issuer certificate (excluding the tag, length, and number of unused bits)
69 },
70 …
71 }
72 },
73 signatureAlgorithm
74 {
75 algorithm {1 2 840 10045 4 3 2}
76 },
77 signatureValue '...'H --the certificate signature computed as per RFC 5280 [3].
78 }
24 generate key_slot as per Listing 15-41 using subjectPublicKey of the endpoint to be created as input (excluding the tag,
length, and number of unused bits)
25 generate certificate using Listing 15-5 as per RFC 5280 [3]
26 atomic start
27 nvmwrite nvm.endpoint.<...> configuration as per Table 15-13 and certificate parts (including certificate signature) needed to
re-generate the certificate when retrieved with VIEW command
28 nvmwrite nvm.endpoint.identifier ← endpoint_identifier
29 nvmwrite nvm.endpoint.key_slot ← key_slot
nvmwrite nvm.endpoint.initial_key_slot ← key_slot
30 nvmwrite nvm.endpoint.PK ← endpoint_PK
31 nvmwrite nvm.endpoint.SK ← endpoint_SK
32 nvmwrite nvm.endpoint.Kpersistent, fill with randoms
33 nvmwrite nvm.endpoint.kpersistent_established ← false
34 nvmwrite nvm.endpoint.terminated ← false
35 nvmwrite nvm.endpoint.transaction_code_list_cless ← []
36 nvmwrite nvm.endpoint.transaction_code_list_wired ← []
37 atomic commit
50h 20 key_identifier, SHA-1 hash of the value of the BIT mandatory V-OD-FW
STRING subjectPublicKey of the target endpoint
(excluding the tag, length, and number of unused bits)
91h 16 termination_requester_nonce, a random value chosen by mandatory N/A
the termination requester
58h 1–40 arbitrary_data, arbitrary data field chosen by the optional N/A
termination requester
41h 1 version = 01h, version of Endpoint Termination Attestation mandatory Informative only.
N/A
92h 8 random mandatory D-VS
5F20h 1–30 endpoint_identifier, identifier of the terminated endpoint mandatory V-OD-FW
5F49h 65 the public key of the terminated endpoint mandatory V-OD-FW
91h 16 termination_requester_nonce mandatory D-VS
58h 1–40 arbitrary_data optional D-VS
93h 4 usage = D6854CB9h mandatory D-VS
1 Input and output buffers are transferred using the internal buffer commands READ BUFFER and
2 WRITE BUFFER to avoid APDU length limitations.
3 The supported verification chains are described in Section 16.6. Chain verification starts from
4 one of the authorized public keys stored in the endpoint and continues from top to bottom with
5 the items in Table 15-22.
6 This command requires user authentication to be performed on device.
7 Note: The protocol_version value present in the receiver’s endpoint certificate shall not be
8 checked during processing of this command.
9 command: CLA2 32 00 00 Lc [Table 15-21] 00
10 response: [response_length] 90 00
11 Table 15-21: AUTHORIZE ENDPOINT Command Payload
Tag Length Description Field is Domain
(bytes) Version
50h 20 key_identifier, SHA-1 hash of the value of the BIT STRING mandatory V-OD-FW
subjectPublicKey of the target endpoint (excluding the tag,
length, and number of unused bits)
4Ah 4 offsetmsb || offsetlsb || lengthmsb || lengthlsb, portion of the optional V-OD-FW
confidential mailbox to be exported
58h variable arbitrary_data optional N/A
9 algorithm {1 2 840 10045 4 3 2} --OID for ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256)
10 },
11 issuer rdnSequence:
12 {
13 {
14 {
15 type {2 5 4 3}, --OID for CommonName
16 value "..." --shall match the subject of the issuer certificate
17 --(shall use PrintableString or UTF8String format)*
18 }
19 }
20 },
21 validity
22 {
23 notBefore Time: "...", -- shall use UTCTime or GeneralizedTime as defined in [3]
24 notAfter Time: "..." – shall use UTCTime or GeneralizedTime as defined in [3]
25 },
26 subject rdnSequence:
27 {
28 {
29 {
30 type {2 5 4 3}, --OID for CommonName
31 value "..." --contains the subject of the certificate
32 --(shall use PrintableString or UTF8String format)*
33 }
34 }
35 },
36 subjectPublicKeyInfo
37 {
38 algorithm
39 {
40 algorithm {1 2 840 10045 2 1}, --OID for ecPublicKey (ANSI X9.62 public key type)
41 parameters {1 2 840 10045 3 1 7} --OID for prime256v1(ANSI X9.62 named elliptic curve)
42 },
43 subjectPublicKey '04...'H --the public key pre-pended with 04 to indicate uncompressed format
44 },
45 extensions
46 {
47 {
48 extnID {1.3.6.1.4.1.41577.5.2}, --OID for external CA Certificate (see Appendix B.2.2)
49 critical TRUE,
50 extnValue '…'H –DER encoding for ExternalCACertificateExtensionSchema extension as per Listing 15-11
51 },
52 {
53 extnID {2 5 29 15}, --KeyUsage standard extension
54 critical TRUE,
55 extnValue '03020204'H --DER encoding for KeyUsage, CertSign only
56 },
57 {
58 extnID {2 5 29 19}, --BasicConstraints standard extension
59 critical TRUE,
60 extnValue '...'H --DER encoding for BasicConstraints extension as per Listing 15-12
61 },
62 {
63 extnID {2 5 29 35}, --OID for AuthorityKeyIdentifier standard extension
64 critical FALSE,
65 extnValue '...''H – DER encoding of an AuthorityKeyIdentifier sequence as defined in [3], containing only
66 – a KeyIdentifier element. The KeyIdentifier is an OCTET STRING containing the
8 {
9 algorithm {1 2 840 10045 4 3 2} --OID for ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256)
10 },
11 issuer rdnSequence:
12 {
13 {
14 {
15 type {2 5 4 3}, --OID for CommonName
16 value "..." --shall match the subject of the issuer certificate
17 --(shall use PrintableString or UTF8String format)*
18 }
19 }
20 },
21 validity
22 {
23 notBefore Time: "...", --shall use UTCTime or GeneralizedTime as defined in [3]
24 notAfter Time: "..." -- shall use UTCTime or GeneralizedTime as defined in [3]
25 },
26 subject rdnSequence:
27 {
28 {
29 {
30 type {2 5 4 3}, --OID for CommonName
31 value "..." --contains the subject of the certificate (instance_CA_identifier)
32 --(shall use PrintableString or UTF8String format)
33 }
34 }
35 },
36 subjectPublicKeyInfo
37 {
38 algorithm
39 {
40 algorithm {1 2 840 10045 2 1}, --OID for ecPublicKey (ANSI X9.62 public key type)
41 parameters {1 2 840 10045 3 1 7} --OID for prime256v1(ANSI X9.62 named elliptic curve)
42 },
43 subjectPublicKey '04...'H
44 --the public key pre-pended with 04 to indicate uncompressed format
45 },
46 extensions
47 {
48 {
49 extnID {install_param_oid_instance_ca}, --OID for Instance CA extension
50 critical TRUE,
51 extnValue '...'H --DER encoding for instance-ca-cert-extension-data as per Listing 15-15
52 },
53 {
54 extnID {2 5 29 15}, --KeyUsage standard extension
55 critical TRUE,
56 extnValue '03020204'H --DER encoding for KeyUsage, CertSign only
57 },
58 {
59 extnID {2 5 29 19}, --BasicConstraints standard extension
60 critical TRUE,
61 extnValue '30060101FF020100'H -- DER encoding for BasicConstraints cA=TRUE, pathLenConstraint=0
62 },
63 {
64 extnID {2 5 29 35}, --OID for AuthorityKeyIdentifier standard extension
65 critical FALSE,
66 extnValue '...''H – DER encoding of an AuthorityKeyIdentifier sequence as defined in [3], containing only
67 – a KeyIdentifier element. The KeyIdentifier is an OCTET STRING containing the
68 – 160-bit SHA-1 hash of the value of the BIT STRING subjectPublicKey
69 --from the issuer certificate (excluding the tag, length, and number of unused bits)
70 },
71 {
72 extnID {2 5 29 14}, --OID for SubjectKeyIdentifier standard extension
73 critical FALSE,
74 extnValue '...'H --DER encoding of the SubjectKeyIdentifier as defined in [3]. The SubjectKeyIdentifier is an
75 -- OCTET STRING containing the 160-bit SHA-1 hash of the value of the BIT STRING subjectPublicKey
76 -- (excluding the tag, length, and number of unused bits)
77 },
78 {
79 extnID {...}, --Optional extensions added by the issuer, content not verified by the applet
80 critical FALSE,
81 extnValue '...'H --DER encoding of the extension
82 },
83 ...
84 }
85 },
86 signatureAlgorithm
87 {
88 algorithm {1 2 840 10045 4 3 2}
89 },
90 signatureValue '...'H --the certificate signature by the issuer computed as per RFC 5280 [3]
91 }
* The selection of format between PrintableString and UTF8String is outlined in Section B.2.4 of Appendix B
1 Table 15-22: AUTHORIZE ENDPOINT Internal Buffer Content Before Processing (offset 0)
Tag Length Description Field is Domain Version
(bytes)
7F20h variable External CA certificate as per Listing 15-13 optional V-OD-FW
from the receiver endpoint
7F22h variable Instance CA Certificate as per Listing 15-16 optional V-OD-FW
from the receiver endpoint
7F24h variable Endpoint Creation certificate as per Listing mandatory V-OD-FW
15-5 from the receiver endpoint
Encryption Key attestation as per Table 15-47 from the optional D-VS
receiver endpoint
41h 1 version = 01h, the version of the data structure mandatory Informative
92h 8 random mandatory OD-FD-KS
5Ah 65 public key from the receiver endpoint creation certificate mandatory OD-FD-KS
present in internal buffer
58h variable arbitrary_data, field present in command payload optional N/A
93h 4 usage = 91712C44h mandatory OD-FD-KS
1 Table 15-24: AUTHORIZE ENDPOINT Internal Buffer Content After Processing (offset 0)
Tag Length (bytes) Description Field is Domain Version
9Eh 64 sender endpoint signature over fields from Table 15-23 mandatory OD-FD-KS
92h 8 random mandatory OD-FD-KS
97h 65 encsender_ePK optional OD-FD-KS
4Ah variable encrypted_mailbox || mac optional OD-FD-KS
5Ch 2 protocol_version, the Digital Key applet transaction (V-D- mandatory V-D-TX
TX) protocol version (ver.high | ver.low) selected by vehicle,
shall be one of the versions proposed by DK Applet in
SELECT response
87h 65 vehicle_ePK prepended by 04h mandatory V-D-TX
4Ch 16 transaction_identifier (randomly generated) mandatory V-D-TX
4Dh 8 vehicle_identifier (see Section 15.2) mandatory V-OD-FW
86h 65 endpoint_ePK, the applet generated ephemeral public key mandatory V-D-TX
prepended by 04h
9Dh 16 cryptogram, the authentication cryptogram returned by the conditional V-D-TX
endpoint
3 Cryptogram (Tag 9Dh) shall not be included in the response payload if a standard transaction is
4 requested by the vehicle (AUTH0 with P1 bit0 = 0), otherwise it shall be present.
5 Listing 15-19: AUTH0 Processing
1 input: protocol_version, P1, P2, vehicle_ePK, transaction_identifier, vehicle_identifier
2 output: endpoint_ePK, (cryptogram)
3 begin
4 if cod.transaction_state != select_done
5 return 6400h
6 if protocol_version is not supported (i.e., not part of the nvm.supported_protocol_versions_tlv)
7 return 6400h
8 cod.current_protocol_version ← protocol_version
9 generate an ephemeral key pair cod.endpoint_ePK, cod.endpoint_eSK according to Listing 15-40
10 endpoint_ePK ← 04h || cod.endpoint_ePK
11 cod.flag ← P1 || P2
12 begin constant time or unbiased random time section
13 find endpoint for corresponding vehicle_identifier excluding endpoints terminated or with visibility disabled
14 if no endpoint found
15 endpoint ← dummy_endpoint
16 if fast transaction requested
17 send to digital key framework notify_endpoint_not_found_fast with P1, P2
18 else
19 send to digital key framework notify_endpoint_not_found_standard with P1, P2
20 if fast transaction requested but not allowed on current interface as per Table 15-13
21 endpoint ← dummy_endpoint
22 end constant time or unbiased random time section
23 if interface is contactless
24 if transaction_code from P2 is present in nvm.endpoint.transaction_code_list_cless
25 if user authentication not performed
26 send to digital key framework notify_user_authentication_not_performed with P1, P2
27 endpoint ← dummy endpoint
28 else
29 if transaction_code from P2 is present in nvm.endpoint.transaction_code_list_wired
30 if user authentication is not performed
9Eh 64 vehicle_sig computed as per Listing 15-42 using fields from mandatory V-D-TX
Table 15-31 and vehicle_SK
86h 65 endpoint_ePK, the applet generated ephemeral public key mandatory V-D-TX
prepended by 04h
9Eh 64 vehicle_sig computed as per Listing 15-42 using fields from mandatory V-D-TX
Table 15-37 and vehicle_SK
3 begin
4 if cod.transaction_state != presence0_done
5 return 6400h
6 cod.transaction_state ⟵ cp_done
7 endpoint ⟵ cod.endpointh
8 verify vehicle_sig according to Listing 15-43 using nvm.endpoint.vehicle_PK and fields from Table 15-37
9 if vehicle_sig is not verified
10 send to digital key framework notify_vehicle_authentication_failed
11 return 6400h
12 send to digital key framework notify_vehicle_authentication_success
13 compute Kdh according to Listing 15-44 using cod.transaction_identifier, cod.vehicle_ePK, cod.endpoint_eSK
14 interface_byte ⟵ 5Eh for contactless interface
15 info ⟵ cod.vehicle_ePK.x || cod.endpoint_ePK.x || cod.transaction_identifier || interface_byte ||
16 cod.flag || "Volatile" || 5Ch || 02h || cod.current_protocol_version
17 keying_material_length ⟵ 48
18 compute derived_keys according to Listing 15-45 using Kdh, info, keying_material_length
19 cod.Kenc ⟵ subset of derived_keys at offset 0 with length 16
20 cod.Krmac ⟵ subset of derived_keys at offset 32 with length 16
21
22 append nvm.endpoint.key_slot to response payload as per Table 15-38
23 encrypt and mac response payload according to Listing 15-47 using cod.Kenc, cod.Krmac, cod.counter, cod.mac_chaining
24 return mac, encrypted_payload
25 end
10 Command format 1:
11 command: CLA2 B0 [offsetmsb] [offsetlsb] Le
12 response: [response] 90 00
13 The CLA2 is as defined in Table 15-3.
14 Command format 2:
15 command: CLA2 B0 [offsetmsb] [offsetlsb] Lc [Table 15-39] 00
16 response: [response] 90 00
17 The CLA2 is as defined in Table 15-3.
18 Table 15-39: READ BUFFER Command Payload for Format 2
Tag Length (bytes) Description Field is Domain Version
80h 1 1-byte unsigned size of the data that shall be read from the mandatory Internal. N/A
internal buffer
1 command, if more than one notify operation is sent in an EXCHANGE command the behavior is
2 undefined
3 All read operations contained in an EXCHANGE command are returned in the order they appear
4 in the request buffer. All write/set operations contained in an EXCHANGE command are written
5 atomically and in the order they appear in the request buffer if the Atomic Session indicator flag
6 is set to 0. Write/set operations are atomic per group of EXCHANGE commands processed as
7 part of an atomic session.
8 An atomic session spanned over multiple commands is executed by setting the Atomic Session
9 indicator flag to 1 on a series of consecutive EXCHANGE commands. The session is closed, and
10 all data written in NVM by setting the Atomic Session indicator flag to 0 on the last
11 EXCHANGE command of the series.
12 When multiple EXCHANGE commands are part of an atomic session, all written values are
13 effectively readable only after successful execution of a command with the Atomic Session
14 indicator flag set to 0. All read operations occurring before that point return the old value.
15 If the transaction has been started over the wired interface, as conditionally permitted depending
16 on endpoint configuration, the Digital Key framework shall avoid prematurely interrupting the
17 transaction, e.g., by reselecting the applet. However, if it hasn't been notified of transaction end
18 after some unusually long time period (i.e., timeout), the Digital Key framework may decide to
19 forcefully end the transaction, e.g., by reselecting the applet.
20 command: CLA4 C9 00 00 Lc [encrypted_command_payload] [command_mac] 00
21 response: [encrypted_response_payload] [response_mac] 90 00
22 The CLA4 is as defined in Table 15-3.
23 Table 15-40: Exchange Command Decrypted Payload
Tag Length (bytes) Description Field is Domain Version
option byte: bit0 Atomic Session indicator start(1)/stop(0), other bits RFU (left to 0) mandatory V-D-TX
88h 3 offsetmsb || offsetlsb || length, read request in private mailbox optional V-D-TX
89h 3 offsetmsb || offsetlsb || length, read request in confidential optional V-D-TX
mailbox
8Ah variable offsetmsb || offsetlsb || data, write request in private mailbox optional V-D-TX
8Bh variable offsetmsb || offsetlsb || data, write request in confidential optional V-D-TX
mailbox
8Ch 4 offsetmsb || offsetlsb || length || value, set request in private optional V-D-TX
mailbox
8Dh 4 offsetmsb || offsetlsb || length || value, set request in optional V-D-TX
confidential mailbox
95h 5 offsetmsb || offsetlsb || lengthmsb || lengthlsb || value, set optional V-D-TX
request in private mailbox
96h 5 offsetmsb || offsetlsb || lengthmsb || lengthlsb || value, set optional V-D-TX
request in confidential mailbox
8Eh variable notify Digital Key framework with data present in this field. optional V-D-TX
Data present in this field is stored in the Digital Key
framework to be transmitted to the Vehicle OEM app.
34 append read data to response payload for all read requests as per Table 15-41 from endpoint mailboxes
35 if Atomic Session indicator bit = 1
36 cod.atomic_session ⟵ started
37 if cod.atomic_session = started
38 if all write/set requests exceeds cod.commit_buffer size
39 cod.atomic_session ⟵ stopped
40 return 6A84h
41 store all write/set requests from Table 15-40 in cod.commit_buffer
42 if Atomic Session indicator bit = 0
43 atomic start
44 if cod.commit_buffer is not empty
45 execute all write/set requests pending in cod.commit_buffer on endpoint mailboxes
46 send to digital key framework notify_mailbox_written
47 atomic commit
48 cod.atomic_session ⟵ stopped
49 else
50 atomic start
51 if decrypted_command_payload contains write or set requests
52 execute all write/set requests from Table 15-40 on endpoint mailboxes
53 send to digital key framework notify_mailbox_written
54 atomic commit
55 compute and return encrypted_response_payload and response_mac according to
56 Listing 15-47 using cod.Kenc, cod.Krmac, cod.mac_chaining, cod.counter
57 end
P2 value Description
00h–7Fh Only with P1 = 00h, this range is used for the following vehicle error codes:
00h no information provided
01h public key not found
02h public key expired
03h public key not trusted
04h invalid signature
05h invalid channel
06h invalid data format
07h invalid data content
08h–7Fh RFU
80h–FFh With P1 = 00h, 01h, or 40h, this valid range is shown in Table 15-44
P1 P2 Description Reference
Note 3: When the vehicle executes operations that take longer than the usual UI-tolerated times, it
should send this indication to the device. The device can show an appropriate UI, which is out of
scope of this specification.
Note 4: Used to indicate unsuccessful completion of transaction or inability to perform intended action
due to a conflicting state on the vehicle.
Note 5: Typically, only relevant for NFC transactions.
50h 20 key_identifier, SHA-1 hash of the value of the BIT STRING mandatory V-OD-FW
subjectPublicKey of the target endpoint (excluding the tag,
length, and number of unused bits)
41h 1 version = 01h, version of Encryption Key Attestation mandatory N/A. Informative Only
92h 8 random mandatory N/A. Informative Only
5F49h 65 encreceiver_ePK, the encryption ephemeral public mandatory N/A. Informative Only
key prepended by 04h
5Dh 20 authority_key_identifier, 160-bit SHA-1 hash of the mandatory N/A. Informative Only
value of the BIT STRING subjectPublicKey from the
issuer (endpoint) certificate (as defined in Listing
15-5 excluding the tag, length, and number of
unused bits)
93h 4 usage = 49A8A741h mandatory N/A. Informative Only
1 Command Format 1:
2 command: CLA2 78 [offsetmsb] [offsetlsb] Lc [Table 15-48] Le
3 response: [response] 90 00
4 The CLA2 is as defined in Table 15-3.
5 Command Format 2:
6 command: CLA2 78 [offsetmsb] [offsetlsb] Lc [Table 15-48] 00
7 response: [response] 90 00
8 The CLA2 is as defined in Table 15-3.
9 Table 15-48: GET PRIVATE DATA Command Payload
Tag Length (bytes) Description Field is Domain
Version
50h 20 key_identifier, SHA-1 hash of the value of the BIT mandatory V-OD-FW
STRING subjectPublicKey of the target endpoint
(excluding the tag, length, and number of unused bits)
80h 1 1-byte unsigned size of the data that shall be read from mandatory for V-OD-FW
the internal buffer command format 2
not required for
command format 1
50h 20 key_identifier, SHA-1 hash of the value of the BIT mandatory V-OD-FW
STRING subjectPublicKey of the target endpoint
(excluding the tag, length, and number of unused bits)
4Bh variable data, field to be written in private mailbox mandatory V-OD-FW
50h 20 key_identifier, SHA-1 hash of the value of the BIT mandatory V-OD-FW
STRING subjectPublicKey of the target endpoint
(excluding the tag, length, and number of unused bits)
16 Table 15-51: SET CONFIDENTIAL DATA Internal Buffer Content Before Processing
Tag Length (bytes) Description Field is Domain Version
50h 20 key_identifier, SHA-1 hash of the value of the BIT STRING mandatory V-OD-FW
subjectPublicKey of the target endpoint (excluding the tag,
length, and number of unused bits)
4Ah 3 2 bytes offset (unsigned big-endian) || 1 byte length to be optional N/A. Informative
returned from confidential mailbox in AUTH1 response Only
(persistent)
4Bh 3 2 bytes offset (unsigned big-endian) || 1 byte length to be optional N/A. Informative
returned from private mailbox in AUTH1 response Only
(persistent)
82h 1 00h (disable) / 01h (enable) endpoint visibility contactless optional V-D-TX
interface (persistent)
83h 1 00h (disable) / 01h (enable) endpoint visibility on contactless optional V-D-TX
interface (volatile)
84h 0–16 List of 1-byte transaction codes triggering a user optional V-D-TX
authentication if present in AUTH0 P2 over contactless
interface (persistent), see Table 9-1, Table 9-2
85h 0–16 List of 1-byte transaction codes triggering a user optional V-D-TX
authentication if present in
AUTH0 P2 over wired interface (persistent), see Table 9-1,
Table 9-2
4Eh 0–8 key_slot to be used by friend endpoint (1–8 byte) optional V-OD-FW
If tag present but empty, key_slot will be restored to
initial_key_slot assigned during key creation.
9Bh 1 00h (disable) / 01h (enable) endpoint visibility on wired optional V-D-TX
interface (persistent)
9Ch 1 00h (disable) / 01h (enable) endpoint visibility on wired optional V-D-TX
interface (volatile)
82h 1 00h (disable) / 01h(enable) all endpoints visibility on contactless optional V-D-TX
interface (persistent)
83h 1 00h (disable) / 01h(enable) all endpoints visibility on contactless optional V-D-TX
interface (volatile)
9Bh 1 00h (disable) / 01h(enable) all endpoints visibility on wired optional V-D-TX
interface (persistent)
9Ch 1 00h (disable) / 01h(enable) all endpoints visibility on wired optional V-D-TX
interface (volatile)
90h 0 If this tag is present, all volatile configurations are cleared, and optional V-D-TX
the current persistent configurations are applied.
8 apply the volatile instance configuration for all endpoints in the instance
9 return
10 end
50h 20 key_identifier, SHA-1 hash of the value of the BIT STRING mandatory V-OD-FW
subjectPublicKey of the endpoint certificate that issues the
attestation (excluding the tag, length, and number of unused bits)
58h 32 Arbitrary data to be signed mandatory N/A. Informative
Only
2 The applet shall ignore tags 81h and A1h if it has no interpretation for them
14 keying_material_length ⟵ 80
15 compute derived_keys according to Listing 15-45 using cod.Kdh, info, keying_material_length
16 URSK ⟵ subset of derived_keys at offset 48 with length 32
17 else
18 URSK ⟵ cod.URSK
19
20 key_identifier ⟵ 160-bit SHA-1 hash of the value of the BIT STRING subjectPublicKey from the currently
21 selected endpoint certificate (excluding the tag, length, and number of unused bits)
22 Make URSK, cod.transaction_identifier, key_identifier, arbitrary_data available
23 if storing URSK fails because queue is full
24 return 6484h
25 if URSK is not available for other reason
26 return 6400 h
27 send to digital key framework notify_URSK_created
28 return 9000h
29 end
14 Security
12 Variationfromspec : MAC plaintext payload only includes command data field (CLA, INS, P1, P2, Lc, Le are omitted)
13 CommandDataField : encrypted_command_payload
14 MACChainingValue : mac_chaining_in (16 bytes)
15 NewMACChainingValue : mac_chaining_out (16 bytes)
16 S-MAC : Kmac
17 end
2 Optimization
3 This section provides a non-exhaustive list of optimizations that may improve the applet
4 performance. These optimizations depend on platform capabilities. The section is provided for
5 informational purposes only.
6 1. The ephemeral public key generated during the AUTH0 command could be pre-
7 generated at the end of each transaction (onDeselect). In order to avoid transaction delays
8 in case of communication errors, several pre-generated ephemeral keys could be used
9 until fallback to runtime generation. For transactions over wired interface, ephemeral key
10 pairs should be generated at runtime instead of from the pool of pre-generated keys
11 because of more relaxed timing constraints.
12 2. An ephemeral public key generated during the AUTH0 command could be re-used for a
13 limited amount of time (e.g., a few seconds) in order to avoid transaction-time key pair
14 generation on early failed transactions. However, an ephemeral key pair should be
15 deleted after being used in an ECDH operation.
16 3. The generation of the endpoint signature could be done in parallel with reader processing
17 in the vehicle after sending the AUTH0 response.
18 4. The next Kpersistent could be generated in parallel with reader processing in the vehicle
19 after sending the AUTH0 response.
20 5. The Kmac, Kenc, and Krmac could be generated in parallel with reader processing in the
21 vehicle after sending the AUTH0 response.
22 6. The AUTH1 response wrapped in the secure channel could be prepared in parallel with
23 reader processing in the vehicle after sending the AUTH0 response.
1 Hierarchy
2
3 15.4.1.1 Types
4 For the purpose of description, variable names are prefixed with the following types:
5 • bool_: A boolean
6 • bytes_: An array of 8-bit bytes
7 • uX_: An unsigned value of X bits
8 • obj: An object
9 • type[]: A list of objects of the defined type
10 15.4.1.2 framework.createInstance
11 Create a new instance of the Digital Key applet. The instance can contain several endpoints.
12 Inputs:
13 bytes_AID: The instance AID.
14 u32_endpointCountMax: The maximum number of endpoints.
15 u32_instanceCACountMax: The maximum number of Instance CAs.
16 u32_internalBufferSize: The size of internal buffer.
17 u32_maxAllocatablePrivateMailboxSize: The maximum private mailbox size of an endpoint.
18 u32_maxAllocatableConfidentialMailboxSize: The maximum confidential mailbox size of an
19 endpoint.
20 Outputs:
21 obj_instance: An object representing the Digital Key applet instance created
22 Listing 15-51: framework.createInstance Processing
1 input: bytes_AID, u32_endpointCountMax, u32_instanceCACountMaxu32_internalBufferSize
2 output: obj_instance
3 begin
4 request instance provisioning to the Device OEM Server with input parameters
5 create a handle representing the Digital Key applet instance, obj_instance.
6 return obj_instance
7 end
1 15.4.1.3 framework.getInstance
2 Retrieve an object representing the Digital Key applet instance.
3 Inputs:
4 bytes_AID: The instance AID
5 Outputs:
6 obj_instance: An object representing the selected instance
7 Listing 15-52: framework.getInstance Processing
1 input: bytes_AID
2 output: obj_instance
3 begin
4 create a handle representing the Digital Key applet instance, obj_instance
5 return obj_instance
6 end
8 15.4.1.4 framework.view
9 Get AID list of installed instance.
10 Inputs:
11 n/a
12 Outputs:
13 bytes_instanceAID[]: AID list of the instances installed
14 Listing 15-53: framework.view Processing
1 input: n/a
2 output: bytes_instanceAID[]
3 begin
4 return installed instance AID list
5 end
15 15.4.1.5 framework.deleteInstance
16 Delete a Digital Key applet instance and all related resources. The method described is currently
17 not called in this specification. It is included for completeness and potential usage by other
18 specifications.
19 Inputs:
20 obj.instance: Object representing the instance
21 Listing 15-54: framework.deleteInstance Processing
1 input: obj.instance
2 output: n/a
3 begin
4 request instance deletion to the Device OEM Server with input parameters
5 end
1 15.4.1.6 instance.view
2 Retrieve the instance related information. This method is called over an instance object
3 (obj_instance).
4 Outputs:
5 u8_endpointCount: The number of endpoints created.
6 u8_endpointCountMax: The maximum number of endpoints
7 u16_internalBufferSize: The size of the internal buffer
8 bytes_keyIdentifier[]: A list of key identifiers present on the instance
9 bytes_instanceCAIdentifier[]: A list of Instance CA identifiers present on the instance
10 Listing 15-55: instance.view Processing
1 input: obj_instance
2 output: u8_endpointCount,
3 u8_endpointCountMax,
4 u16_internalBufferSize,
5 bytes_keyIdentifier[],
6 bytes_instanceCAIdentifier[]
7 begin
8 retrieve instance informations using command in Section 15.3.2.8
9 return u8_endpointCount,
10 u8_endpointCountMax,
11 u16_internalBufferSize,
12 bytes_keyIdentifier[],
13 bytes_instanceCAIdentifier[]
14 end
11 15.4.1.7 instance.createEndpoint
12 Create an endpoint on the selected instance. This method is called over an instance object
13 (obj_instance).
14 If bool_onlineCertificate is set, the endpoint creation certificate is signed by the Device OEM
15 CA instead of the Instance CA. The device needs to be able to reach the Device OEM Server for
16 this feature to be available.
17 Inputs:
18 bytes_vehicleIdentifier: The vehicle identifier
19 bytes_endpointIdentifier: The endpoint_identifier
20 bytes_instanceCAIdentifier: The identifier of the Instance CA to be used for key
21 attestation
22 u8_optionGroup1: The option group 1
23 u8_optionGroup2: The option group 2
24 u16_protocolVersion: The Digital Key applet protocol version
25 bytes_vehiclePK: The vehicle’s public key
8 Outputs:
9 obj_endpoint: An object representing the created endpoint
10 Listing 15-56: instance.createEndpoint Processing
1 input: input list
2 output: obj_endpoint
3 begin
4 generate input_data as per Table 15-7
5 if input_data > 255
6 send the WRITE BUFFER command as described in Section 15.3.2.14 with input input_data
7 send the CREATE ENDPOINT command as described Section 15.3.2.4 without payload
8 else
9 send the CREATE ENDPOINT command as described Section 15.3.2.4 with input_data as payload
10 create a handle representing the created endpoint, obj_endpoint
11 return obj_endpoint
12 end
11 15.4.1.8 instance.deleteEndpoint
12 Delete an endpoint on a specific instance. This method is called over an instance object
13 (obj_instance).
14 This method is currently not called in this specification. It is included for completeness and
15 potential usage by other specifications.
16 Inputs:
17 bytes_keyIdentifier: The key identifier
18 Listing 15-57: instance.deleteEndpoint Processing
1 input: bytes_keyIdentifier
2 output: n/a
3 begin
4 send the DELETE ENDPOINT command as described in Section 15.3.2.6 with input_data as payload
5 delete endpoint corresponding data on digital key framework
6 end
19 15.4.1.9 instance.getEndpoint
20 Obtain a handle on an endpoint. This method is called over an instance object (obj_instance).
21 Inputs:
22 bytes_keyIdentifier: The key identifier
1 Outputs:
2 obj_endpoint: An object representing the endpoint
3 Listing 15-58: instance.getEndpoint Processing
1 input: bytes_keyIdentifier
2 output: obj_endpoint
3 begin
4 create a handle representing the endpoint, obj_endpoint.
5 return obj_endpoint
6 end
4 15.4.1.10 instance.setParameters
5 Set instance parameters. This method is called over an instance object (obj_instance).
6 This method is currently not called in this specification. It is included for completeness and
7 potential usage by other specifications.
8 Inputs:
9 bool_cless_visibility_persistent: If set to false, all endpoints are invisible from the
10 contactless interface. This configuration is persistent across SE reboots.
11 bool_cless_visibility_volatile: If set to false, all endpoints are invisible from the
12 contactless interface. This configuration is valid for the current power on session.
13 bool_wired_visibility_persistent: If set to false, all endpoints are invisible from the
14 wired interface on AUTH0 command. This configuration is persistent across SE reboots.
15 bool_wired_visibility_volatile: If set to false, all endpoints are invisible from the wired
16 interface on AUTH0 command. This configuration is valid for the current power on
17 session.
18 Listing 15-59: instance.setParameters Processing
1 input: obj_instance, parameters
2 output: n/a
3 begin
4 set instance parameters using command as described in Section 15.3.2.22
5 end
19 15.4.1.11 endpoint.setParameters
20 Set endpoint parameters. This method is called over an endpoint object (obj_endpoint). Note
21 that all inputs listed below in this subsection are optional.
22 Inputs:
23 u16_offset_confidential: The offset from which data contained in confidential mailbox is
24 returned in AUTH1.
25 u8_length_confidential: The length of confidential data returned in AUTH1.
26 u16_offset_private: The offset from which data contained in private mailbox are
27 returned in AUTH1.
28 u8_length_private The length of private data returned in AUTH1.
17 15.4.1.12 endpoint.getCertificate
18 Retrieve an endpoint certificate. This method is called over an endpoint object (obj_endpoint).
19 Input:
20 bool_onlineCertificate request: Attestation created by Device OEM CA (true) or by
21 Instance CA (false).
22 Output:
23 bytes_endpointAttestation: An endpoint certificate as per Listing 15-5.
24 Listing 15-61: endpoint.getCertificate Processing
1 input: bool_onlineCertificate
2 output: bytes_endpointCertificate
3 begin
4 if bool_onlineCertificate = true
5 if endpoint certificate issued by device OEM exists
6 return endpoint certificate issued by device OEM stored in digital key framework
7 else
8 send VIEW command to retrieve endpoint certificate
9 return endpoint certificate issued by instance CA
10 end
1 15.4.1.13 endpoint.terminate
2 Terminate an endpoint and obtain a termination attestation. This method is called over an
3 endpoint object (obj_endpoint).
4 Inputs:
5 bytes_nonce: Termination nonce (16 bytes)
6 bytes_arbitrary_data: Arbitrary data (optional, 1–40 bytes).
7 Output:
8 obj_attestation: A key termination attestation
9 Listing 15-62: endpoint.terminate Processing
1 input: bytes_nonce, (bytes_arbitrary_data)
2 output: bytes_terminationAttestation
3 begin
4 send TERMINATE ENDPOINT command to retrieve attestation as described
5 In Table 15-19 using bytes_nonce (and bytes_arbitrary_data)
6 return bytes_terminationAttestation
7 end
10 15.4.1.14 endpoint.authorize
11 Sign an externally received endpoint attestation along with arbitrary data and optionally export
12 confidential mailbox data. This method is called over an endpoint object (obj_endpoint).
13 Table 15-60: Receiver Endpoint Key Attestation Signed by Sender
Tag Length (bytes) Description Field is
14 Inputs:
15 u16_offset: Offset of confidential mailbox to be retrieved (optional)
16 u16_length: Length of confidential mailbox to be retrieved (optional)
17 bytes_arbitraryData: Arbitrary data to be signed (optional)
18 bytes_externalCertificate: External CA certificate of the receiver as per Listing 15-13
19 (optional)
20 bytes_instanceCertificate Instance: CA Certificate of the receiver as per Listing 15-16
21 (optional)
22 bytes_encryptionKeyAttestation: Encryption key attestation of the receiver as per Table
23 15-47 (optional)
24 bytes_endpointCreationCertificate: Endpoint creation certificate of the receiver as per
25 Listing 15-5
1 Outputs:
2 bytes_attestation: Attestation signed by the sender endpoint containing arbitrary data
3 and public key of the receiving endpoint
4 bytes_encryptedData: Data encrypted for the receiver confidential mailbox
5 bytes_encSenderePK: Encryption public key of the sender
6 Listing 15-63: endpoint.authorize Processing
1 input: (u16_offset, u16_length, bytes_arbitraryData, bytes_instanceCertificate,
2 bytes_encryptionKeyAttestation, bytes_externalCertificate,) bytes_endpointCreationCertificate
3 output: bytes_attestation, bytes_encryptedData, bytes_encSenderePK
4 begin
5 perform user authentication
6 send WRITE BUFFER command in order to send bytes_instanceCertificate,
7 bytes_encryptionKeyAttestation, bytes_endpointCreationCertificate
8 send AUTHORIZE ENDPOINT command with u16_offset, u16_length, bytes_arbitraryData
9 bytes_attestation = prepare table as per Table 15-60
10 bytes_encryptedData = content of tag 4Ah from Table 15-24
11 bytes_encSenderePK = content of tag 97h from Table 15-24
12
13 return bytes_attestation, bytes_encryptedData, bytes_encSenderePK
14 end
7 15.4.1.15 endpoint.createEncryptionKey
8 Retrieve a single usage encryption key for confidential mailbox writing by other entities. This
9 method is called over an endpoint object (obj_endpoint).
10 Output:
11 bytes_attestation: Attestation containing encryption key as per Table 15-47
12 Listing 15-64: endpoint.createEncryptionKey Processing
1 input: none
2 output: bytes_attestation
3 begin
4 send CREATE ENCRYPTION KEY command to retrieve attestation as described in Section 15.3.2.17
5 return attestation
6 end
13 15.4.1.16 endpoint.setConfidentialData
14 Write data in the confidential mailbox. This method is called over an endpoint object
15 (obj_endpoint).
16 Inputs:
17 bytes_encsenderepk: Public ephemeral key of the sender
18 bytes_encdata: Encrypted data to be written in private maibox
19 u16_offset: Offset of data to be written
20 Listing 15-65: endpoint.setConfidentialData Processing
1 input: bytes_encsenderpk, bytes_encdata, u16_offset, u16_offset
2 output: n/a
3 begin
4 send WRITE BUFFER command to write bytes_encsenderpk and bytes_encdata in internal buffer as described in Section
15.3.2.14
5 send SET CONFIDENTIAL DATA command to write in confidential mailbox as described in Section 15.3.2.20
6 end
1 15.4.1.17 endpoint.getPrivateData
2 Retrieve data from the private mailbox. This method is called over an endpoint object
3 (obj_endpoint).
4 Inputs:
5 u16_offset: Offset of private mailbox to be retrieved
6 u16_length: Length of private mailbox to be retrieved
7 Listing 15-66: endpoint.getPrivateData Processing
1 input: u16_offset
2 output: u16_length
3 begin
4 execute one or multiple GET PRIVATE DATA command as described in Section 15.3.2.18 to retrieve the
requested data
5 end
8 15.4.1.18 endpoint.setPrivateData
9 Write data in the private mailbox. This method is called over an endpoint object (obj_endpoint).
10 Inputs:
11 u16_offset: Offset to start writing in private mailbox
12 bytes_data: Data to be written in private mailbox
13 Listing 15-67: endpoint.setPrivateData Processing
1 input: u16_offset, bytes_data
2 output: n/a
3 begin
4 Send SET PRIVATE DATA command to write in private mailbox as described in Section 15.3.2.19
5 end
14 15.4.1.19 endpoint.sign
15 Obtain a signature on arbitrary data. This method is called over an endpoint object
16 (obj_endpoint).
17 Table 15-61: Arbitrary Data Attestation
Tag Length (bytes) Description Field is
1 Inputs:
2 bytes_arbitraryData: Arbitrary data to be signed
3 Outputs:
4 bytes_attestation: An attestation as described in Table 15-61
5 Listing 15-68: endpoint.sign Processing
1 input: bytes_arbitraryData
2 output: bytes_attestation
3 begin
4 perform user authentication if required
5 send SIGN command to retrieve attestation as described in Table 15-61
6 return attestation
7 end
6 15.4.1.20 endpoint.auth0
7 Start the mutual authentication procedure. This method is called over an endpoint object
8 (obj_endpoint).
9 Inputs:
10 bytes_epkinput: Ephemeral public key of the vehicle
11 bytes_transactionIdentifier: Transaction identifier
12 bytes_vehicleIdentifier: Vehicle identifier
13 Outputs:
14 bytes_epkoutput: Ephemeral public key of the endpoint
15 u16_protocolversion: Digital Key applet protocol version supported by endpoint
16 Listing 15-69: endpoint.auth0 Processing
1 input: bytes_epkinput, bytes_transactionIdentifier, bytes_vehicleIdentifier
2 output: bytes_epkoutput, u16_protocolversion
3 begin
4 send SELECT command using the AID of the obj_endpoint to retrieve u16_protocolversion
5 send AUTH0 command as described in Section 15.3.2.9 using bytes_epkinput, bytes_transactionIdentifier,
bytes_vehicleIdentifier
6 P1 parameters are Standard Transaction requested, User Authentication not requested and
7 retrieve bytes_epkoutput
8 return bytes_epkoutput, u16_protocolversion
9 end
17 15.4.1.21 endpoint.auth1
18 The second step of the mutual authentication procedure, endpoint.auth0 shall have been executed
19 previously. This method is called over an endpoint object (obj_endpoint).
20 Input:
21 bytes_signature: Signature of the third party entity wishing to authenticate
1 Output:
2 bytes_encryptedPayload: Encrypted payload
3 Listing 15-70: endpoint.auth1 Processing
1 input: bytes_signature
2 output: bytes_encryptedPayload
3 begin
4 send AUTH1 command using bytes_signature as described in Section 15.3.2.10
5 return bytes_encryptedPayload
6 end
4 15.4.1.22 endpoint.exchange
5 Read and write data in mailboxes upon establishment of a secure channel, provided that
6 endpoint.auth0 (and endpoint.auth1 depending on endpoint configuration) have been
7 successfully executed. This method is called over an endpoint object (obj_endpoint).
8 Input:
9 bytes_encryptedInput: Encrypted payload
10 Output:
11 bytes_encryptedOutput: Encrypted payload
12 Listing 15-71: endpoint.exchange Processing
1 input: bytes_encryptedInput
2 output: bytes_encryptedOutput
3 begin
4 send EXCHANGE command using bytes_encryptedInput as described in Section 15.3.2.15
5 return bytes_encryptedOutput
6 end
13 15.4.1.23 endpoint.createRangingKey
14 Generate a ranging key and make it available to UWB. Shall only be called after successfully
15 receiving AUTH1 Response.
16 Inputs:
17 bytes_arbitraryData: arbitrary data.
18 Listing 15-72: endpoint.createRangingKey processing.
1 input: bytes_arbitraryData
2 output: none
3 begin
4 send CREATE RANGING KEY command using bytes_arbitraryData as described in Section 15.3.2.26
5 end
20 Security Guidelines
21 The following items describe important implementation guidelines for the vehicle.
1 1. During the standard transaction, the vehicle shall always verify the endpoint signature
2 (endpoint_sig) before any other operation. A successful verification of this signature is
3 the only way for the vehicle to authenticate the endpoint.
4 2. During the standard transaction, the vehicle shall never modify its persistent memory
5 before having successfully verified the endpoint signature (endpoint_sig).
6 3. During the standard transaction, the vehicle shall never write data in the endpoint
7 confidential or private mailbox before having successfully verified the endpoint signature
8 (endpoint_sig).
9 4. During the standard and fast transactions, the vehicle shall verify that the use of
10 contactless interface is indicated in the response to the AUTH0 and AUTH1 command
11 when the transaction is performed over the NFC interface.[WCC1]
12 Optimizations
13 The following items describe recommended implementation guidelines for the vehicle.
14 1. One or several vehicle ephemeral keys can be pre-generated such that a fresh ephemeral
15 key is immediately ready when the next transaction starts.
16 2. If a vehicle only supports the fast transaction, a random number can be generated instead
17 of an ephemeral key pair.
1 16 CERTIFICATE
2 16.1 General
3 The PKI model described in this section is based on PKI mechanisms to build a chain of trust
4 down to a single Digital Key. The following certificate chains are defined:
5 1. Device certificate chain
6 2. Vehicle certificate chain
7 3. Owner pairing key attestation chain
8 4. Key sharing key attestation chain
9 The objective is to provide full offline capability through the verification chain.
10 Certificate expiry shall be checked by the KTS. If technical capabilities allow, the Digital Key
11 applet, vehicle, and owner device should also verify certificate expiry.
12 In this specification, two variants of the SE root of trust certificate chain model are provided.
13 • Variant 1: SE root of trust based on CASD: In this model (see Figure 16-1), the SE root
14 of trust is managed by the SE Root CA implemented by the CASD.
15 • Variant 2: SE root of trust based on DK applet associated security domain: In this model
16 (see Figure 16-2), the SE root of trust is managed using the secure channel of the security
17 domain associated with the DK applet.
18 The provisioning of the root of trust in the SE is out of scope of this specification.
2
3 Figure 16-2 provides an adaptation when Variant 2 is implemented.
1. Mutual Authentication
(GPC SPE 014) Instance CA Certificate
(per Vehicle OEM)
[E]
FRAMEWORK
InstanceCA.PK
5.Re-Use
DeviceOEM CA Signature
4. Transfer through 6.sign
secure channel
Instance CA Attestation
Symmetric Key (per Vehicle OEM)
2. Embed [N]
InstanceCA.PK
Instance CA
SECURE self-signature
ELEMENT 3. Sign
Instance CA
(per Vehicle OEM)
InstanceCA.SK
InstanceCA.PK
2
3 [A] - SE Root CA Certificate – Variant 1
4 [B] - SE Root Certificate – Variant 1
5 [C] - Instance CA Attestation (signed by SE Root) per Vehicle OEM – Variant 1
6 [D] - Device OEM CA Certificate
7 [E] - Instance CA Certificate (signed by Device OEM CA) per Vehicle OEM
8 [F] - Device OEM CA Certificate (signed by Vehicle OEM CA)
9 [G] - Digital Key per Vehicle
10 [H] - Digital Key Certificate
11 [J] - Vehicle OEM CA Certificate
12 [K] - Vehicle Public Key Certificate
13 [L] - Digital Key Creation Data
14 [M] - Vehicle OEM CA Certificate (signed by Device OEM CA)
15 [N] - Instance CA Attestation (self-signed) per Vehicle OEM – Variant 2
1 • When the Device OEM Server analyzes the response of the Digital Key applet, a
2 successful verification of the R-MAC ensures that the data received over this secure
3 channel has been generated by the expected Digital Key applet in the SE.
4 Figure 16-2 depicts the adaptation of the certificate chain model for Variant 2.
5 After successful verification of the Instance CA Attestation [N], the Instance CA Certificate [E]
6 is issued by the Device OEM Server.
15 Instance CA Certificate
16 The maximum size of the DER-encoded certificate as per RFC 5280 [3] is 650 bytes.
17 The length of commonName (CN) fields for issuer is limited to 30 bytes independently of the
18 chosen value type.
19 Note: The subject CN field size is limited by the TLV definition in section “endpoint
20 configuration” of the applet description (see Table 15-13).
21 Endpoint Certificate
22 The certificate shall include all authorized public keys that the vehicle provides.
23 In this version of the specification, the owner endpoint certificate shall be created with exactly
24 one authorized public key (enforced by car); the friend endpoint certificate shall be created with
25 exactly zero authorized public keys (enforced by owner phone DK framework).
26 The applet allows for up to five authorized public keys per endpoint; usage of more than one
27 authorized public key at the secure element level is kept open for future use cases.
28 The maximum size, of the DER-encoded certificate as per RFC5280 [3], shall be 650 bytes when
29 holding one authorized public key. The maximum size shall be 970 bytes when holding five
30 authorized public keys.
31 Note: The subject CN field size is limited by the TLV definition in section “endpoint
32 configuration” of the applet description (see Table 15-13).
33
2 17.1 Introduction
3 This section describes the API specification for communications between Device OEM Server
4 and Vehicle OEM Server.
5 Request and response bodies shall be formatted as JSON. The communication protocol used for
6 all interfaces shall be HTTPS. All strings shall be UTF-8 encoded (Unicode Normalization Form
7 C (NFC)).
22 17.3 Security
23 Client application shall be hosted on user’s devices. Device OEM Server and Vehicle OEM
24 Server shall be hosted in secure data centers.
25 Server APIs shall be supported only over https. Sensitive data elements, where applicable, shall
26 be protected with additional encryption protocols.
27 Server APIs shall be supported only over https with mutual authentication, i.e., 2-way TLS.
6 17.5 Healthcheck
7 The healthcheck is a way to determine server availability of Device OEM and Vehicle OEM
8 Servers.
10 Description
11 User interfaces are created and controlled by Device OEM entities. Each Device OEM can
12 customize the user experience as per its platform.
13 The Vehicle OEM provides all necessary visual elements for a specific vehicle/model to the
14 Device OEM in an offline process, prior to going live. Details of the visual elements are out of
15 scope of the specification and should be negotiated between the Vehicle OEMs and Device
16 OEMs. An identifier, which can be chosen by the Vehicle OEM, is assigned for UI elements.
17 This identifier is called uiIdentifier.
18 To ensure uniqueness across Vehicle OEMs, a prefix may be used. The uiIdentifier should be
19 generic and the system should not be able to identify owner or friend using uiIdentifier.
20 An example of an uiIdentifier for a specific vehicle: “VehicleOEMNameModelYearColor.” The
21 UI elements are stored on the Device OEM Server to ensure the best availability at runtime.
22 During different types of provisioning (owner pairing, key sharing), the uiIdentifier is provided
23 to the Device OEM Server by the Vehicle OEM Server. The Device OEM may then select the
24 predefined UI elements. It is the responsibility of the Device OEM to display the UI elements
25 appropriate to device-specific parameters.
1 17.7.1.2 trackKey ()
Max
Domain
Parameter Type Length Description Required
Version
(bytes)
Base 64 encoded array of X509
certificates in DER format representing a
certificate chain for encrypting uiBundle
from Vehicle OEM Server to Device
DS-VS
OEM Server. Encryption of
encryptionCertChain List of String 4096 trackKeyResponse() is performed using Mandatory
the first certificate in the list.
This is a chain of trust established
between vehicle and Device OEMs and
is out of scope for this specification.
Defines the version of encryption to be
used for encryption from Vehicle OEM DS-VS
encryptionVersion String 32 Mandatory
Server to Device OEM Server. Value
is ECIES_v1
The unique identifier for a key.
Computed as the 160-bit SHA-1 hash of
the value of the bit string
keyID String 128 Mandatory V-OD-FW
subjectPublicKey from the keyData
(excluding the tag, length, and number
of unused bits).
Enum (see OWNER or SHARED. See
keyType 32 Mandatory V-OD-FW
Section 17.8.3) Section 17.8.3
Type of device on which key is being
deviceType Enum 32 Mandatory D-VS
provisioned.
Hash of a Device OEM account id. For DS-VS
the same Device OEM account,
accountIdHash String 128 Mandatory
accountIdHash should be the same
throughout the life of the account.
Encrypted from Device to Vehicle OEM Encryption:
Server.
Encrypted- DS-VS
DataContainer Encrypted using VehicleOEM.Enc.PK
keyData 4096 Mandatory Data:
as defined in Section 14.
(see Section 17.8.4) V-OD-FW,
Refer to Section 6.3.4.4 (see Table 6-2)
and Section 11.10 (see Table 11-20) D-VS
vehicleOwnerDeviceFrameworkV Conditional:
ersionList (V-OD-FW- Contains vehicle owner device D-VS
Present if request
versionList) String 512 framework version V-OD-FW list with
sent by owner
V-OD-FW-agreedVersion first
device
1 17.7.1.3 trackKeyResponse ()
Max
Domain
Parameter Type Length Description Required
Version
(bytes)
Response-
responseHeader 1024 The common response header Mandatory DS-VS
Header Object
Conditional.
Required only
eventType enum 64 SHARED_KEY_ADDED from if a tracked
eventType owner key
has shared
keys
associated Encryption:
with it, and if DS-VS
owner
migrates to
new device
and tracks
new owner
key for the
vehicle.
Conditional.
eventData used for Required only
eventData Map 2048 SHARED_KEY_INFORMATION if a tracked
event. owner key
has shared
keys
associated
with it and if V-OD-FW
owner
migrates to
new device
and tracks
new owner
key for the
vehicle.
Max
Domain
Parameter Type Length Description Required
Version
(bytes)
1 All version lists shall be coded as hex strings, identical to tags 5Ah, 5Bh and 5Ch in Sections 5.1.1
2 and 5.1.2.
3 All version lists shall be sorted in descending order. Where indicated, the first version is the
4 agreed version, then the remaining list shall be sorted in descending order.
1 "publicKeyHash" :
2 "d6e3bbc95bf11d533677a1aa052d7caef29fd76a02e43e3609579966168d7d19",
3 "data" :
4 "5GRH7/ecb85HFsTalxn3IdeT7ARtfFZn2AuMft1p...IkcchjFBLJTGm9qvJtxK/3EdWob+iFS9
5 FwHeKSjq8MxdNgQ1rj4fq6CzQfY8O9",
6 "vehicleOwnerDeviceFrameworkVersionList" : "02000100",
7 "deviceVehicleServerVersionList" : "02000201"
8 }
9
10 }
1 "ephemeralPublicKey":
2 "098234098234750893476372832742373468923482357508932832742373468923482347637
3 283274237346892348235",
4 "publicKeyHash" :
5 "50982347502373468923482385098234750237346892394346892348234763728327",
6 "data" :
7 "ydST1ZG5Q3cflzfM1qjjwpmOmWQHta...SBBiIAGK3PUbdE2IF/MmPefY9bsH"
8 }
9 },
10 "brand" : "xyz",
11 "model" : "abc"
12 "vehicleMobilizationData" : {
13 "version" : "ECIES_v1",
14 "ephemeralPublicKey":
15 "098234098234750893476372832742373468923482357508932832742373468923482347637
16 283274237346892348235",
17 "publicKeyHash" :
18 "50982347502373468923482385098234750237346892394346892348234763728327",
19 "data" :
20 "ydST1ZG5Q3cflzfM1qjjwpmOmWQHta...SBBiIAGK3PUbdE2IF/MmPefY9bsH"
21 },
22 "serverSupportedVersions” : "02000100"
23 }
1 "supportedEntitlements" : {
2 "entitlements" : [
3 {
4 "value" : 0,
5 "description" : "full",
6 "longDescription" : "full access and drive capabilities"
7 },
8 {
9 "value" : 1,
10 "description" : "accessOnly",
11 "longDescription" : "only vehicle access , no drive
12 capability"
13 },
14 {
15 "value" : 2,
16 "description" : "accessAndDriveRestricted",
17 "longDescription" : "access and drive with restrictions"
18 },
19 {
20 "value" : 3,
21 "description" : "vehicleDelivery",
22 "longDescription" : "vehicle delivery profile"
23 },
24 {
25 "value" : 4,
26 "description" : "valet",
27 "longDescription" : "valet parking key"
28 },
29 {
30 "value" : 5,
31 "description" : "vehicleService",
32 "longDescription" : "service key"
33 },
34 {
35 "value" : 6,
36 "description" : "custom entitlement description",
37 "longDescription" : "custom entitlement long description"
38 }
39 ]
1 }
2 }
3 }
12 Note: Please refer to Section 17.11 for encryption scheme and other details.
13 Manage Key
14 This is a generic API offered by the Device OEM Server and Vehicle OEM Server to manage the
15 lifecycle of a Digital Key. This API is used in key sharing and key termination as described in
16 Section 11 and Section 13, respectively.
19 17.7.2.2 manageKey()
Termination attestation
of a key when owner Conditional:
Digital Key or shared provided by
termination- Digital Key is owner/friend D-VS
String 4096
Attestation terminated on own device
device. Signed by whenever
DigitalKeyx.SK, as possible
defined in Section 14.
Remote termination
request for termination
EncryptedData- of a remote key when Conditional:
deviceRemote- Container shared key is terminated provided by
Termination- 4096 D-VS
Request (see Section from owner device. owner
17.8.4) Signed by device
DigitalKeyx.SK as
defined in Section 14.
Remote termination
request for termination
of a remote key when
serverRemote- owner key or shared key Conditional:
String (see
Termination- is terminated from provided by
Section 14.2) 4096 D-VS
Request Vehicle OEM Server. KTS
Signed by
VehicleOEM.Sig.SK as
defined in Section 14.
1 17.7.2.3 manageKeyResponse()
Max
Domain
Parameter Type Length Description Required Version
(bytes)
Response-
Response-
Header 1024 The common response header Mandatory DS-VS
Header
Object
Max
Domain
Parameter Type Length Description Required Version
(bytes)
12 Note: For terminationAttestation data structure, see Section 15.3.2.5, Table 15-18, and Table
13 15-19.
1 }
1 "ephemeralPublicKey" :
2 "098234098234750893476372832742373468923482357508932832742373468923482347637
3 283274237346892348235",
4 "publicKeyHash" :
5 "50982347502373468923482385098234750237346892394346892348234763728327",
6 "data" :
7 "ydST1ZG5Q3cflzfM1qjjwpmOmWQHta...SBBiIAGK3PUbdE2IF/MmPefY9bsH”
8 }
9 }
1 {
2 "keyID" : "276459836197C6A34D2",
3 "keyConfiguration" : {
4 "friendlyName" : "Jane's Phone",
5 "rights" : 0,
6 "keyValidFrom" : "2021-02-19T23:05:17.462+0000",
7 "keyValidTo" : "2021-02-19T23:05:17.462+0000"
8 },
9 "status" : 15,
10 "groupIdentifier" : "D308745E-35E3-4FCD-B121-D159457B79C6",
11 "deviceType" : "PHONE"
12 }
13 ]
14 }
15 API – eventNotification
16 This is a generic API offered by the Device OEM Server and the Vehicle OEM Server to
17 communicate different events on a Digital Key.
20 17.7.3.2 EventNotification ()
Max
Parameter Type Length Description Required
(bytes)
eventType enum 64 The type of the event. Specified in Section 17.8.8. Mandatory
21 17.7.3.3 EventNotificationResponse ()
Max
Parameter Type Length Description Required
(bytes)
response- Response-
1024 The common response header Mandatory
Header Header
Max
Parameter Type Length Description Required
(bytes)
1 17.7.3.4 Sample eventNotificationRequest to send owner key information to owner Device OEM
2 Server
3 HTTP POST /partner/v1/eventNotification
4 x-requestId : 80BCCEF8F59127A6D1BB5CFEB534D95
5 x-vehicle-oemId: Vehicle OEM A
6 {
7 "keyID" : "483729239475C864E4F",
8 "eventType" : "SUBSCRIPTION_CHANGED",
9 "eventData" : {
10 "sharedKeys" : "3",
11 "shareableKeys" : "7",
12 “status” : 1,
13 "keyValidTo" : "2021-02-19T23:05:17.462Z",
14 "keyValidFrom" : "2019-02-19T23:05:17.462Z",
15 "reason" : "key subscription is changed"
16 }
17 }
18 17.7.3.5 Sample eventNotificationRequest to send shared key information to owner Device OEM
19 Server
20 HTTP POST /partner/v1/eventNotification
21 x-requestId : 80BCCEF8F59127A6D1BB5CFEB534D95
22 x-vehicle-oemId : Vehicle OEM A
23 {
24 "keyID" : "483729239475C864E4F",
25 "eventType" : "SHARED_KEY_INFORMATION",
26 "eventData" : {
27 "sharedKeys" : "3",
28 "shareableKeys" : "7",
29 “status” : 1,
30 "keyValidTo" : "2021-02-19T23:05:17.462Z",
31 "keyValidFrom" : "2019-02-19T23:05:17.462Z",
1 “keyValidTo” : “2021-02-19T23:05:17.462Z”
2 },
3 "status" : 6
4 "groupIdentifier" : “D308745E-35E3-4FCD-B121-
5 D159457B79C6”,
6 “deviceType” : “PHONE”
7 }
8 ]
9 }
24 17.7.3.7 Sample eventNotificationRequest to send model field to Owner or Friend Device Server
25 HTTP POST /partner/v1/eventNotification
26 x-requestId : 80BCCEF8F59127A6D1BB5CFEB534D95
27 x-vehicle-oemId: Vehicle OEM Name
28 {
29 "keyID" : "483729239475C864E4F",
30 "eventType" : "UI_ELEMENTS_UPDATED",
31 "eventData" : {
32 "keyValidTo" : "2021-02-19T23:05:17.462+0000",
33 "keyValidFrom" : "2019-02-19T23:05:17.462+0000",
34 “status” : 1,
35 "reason" : "Model is updated",
36 "uiElements" : {
37 "model" : "Model Name"
1 }
2 }
3 }
24 17.7.4.2 recoverKeyData()
Max Length
Parameter Type Description Required
(bytes)
Max Length
Parameter Type Description Required
(bytes)
1 17.7.4.3 recoverKeyDataResponse()
Max
Parameter Type Length Description Required
(bytes)
Response-
response- The common response
Header 1024 Mandatory
Header header
Object
Conditional. Required
only if the key id in
eventType enum 64 SHARED_KEY_INFORM the request is an
ATION from eventType owner key and has
shared keys
associated with it.
Conditional. Required
only if the key id in
Max
Parameter Type Length Description Required
(bytes)
1 "ephemeralPublicKey" :
2 "806d6306b04613197827d91012316eb03bc4adff4468825f2d6587fada80cc93679e1afd58d
3 32f4522172fd41f0c0c1b1126f1316dc0729ebf8a6186b2a008dda0",
4 "publicKeyHash" :
5 "1d533677a1aa052dd6e3bbc95bf17cae02e4f29fd76a8d7d193e360957996616",
6 "data" :
7 "lxn3IdeT5b85HFsTa7ARtfFZGRH7/ecn2AuMft1p...K/3EdWob+iFS9m9qvJtxCzQfY8O9FwHe
8 KSjq8MxdNgQ1rj4fq6IkcchjFBLJTG"
9 }
10 "eventType" : "SHARED_KEY_INFORMATION",
11 "eventData" : {
12 "sharedKeys" : "3",
13 "shareableKeys" : "7",
14 "keyValidTo" : "2021-02-19T23:05:17.462Z",
15 "keyValidFrom" : "2019-02-19T23:05:17.462Z",
16 "reason" : "shared key data is needed",
17 "encryptedData" : {
18 "version" : "ECIES_v1",
19 "ephemeralPublicKey":
20 "098234098234750893476372832742373468923482357508932832742373468923482347637
21 283274237346892348235",
22 " publicKeyHash" :
23 "50982347502373468923482385098234750237346892394346892348234763728327",
24 "data" :
25 "ydST1ZG5Q3cflzfM1qjjwpmOmWQHta...SBBiIAGK3PUbdE2IF/MmPefY9bsH"
26 }
27 },
28 "status" : 1,
29 "brand" : "xyz",
30 "model" : "abc",
31 "instanceFreshness" : 48
32 }
1 "sharingPasswordRequired" : false,
2 "entitlement" : {
3 "value" : 0,
4 "description" : "full",
5 "longDescription" : "full access and drive capabilities"
6 },
7 "supportedEntitlements" : {
8 "entitlements" : [
9 {
10 "value" : 0,
11 "description" : "full",
12 "longDescription" : "full access and drive capabilities"
13 },
14 {
15 "value" : 1,
16 "description" : "accessOnly",
17 "longDescription" : "only vehicle access , no drive
18 capability"
19 },
20 {
21 "value" : 2,
22 "description" : "accessAndDriveRestricted",
23 "longDescription" : "access and drive with restrictions"
24 },
25 {
26 "value" : 3,
27 "description" : "vehicleDelivery",
28 "longDescription" : "vehicle delivery profile"
29 },
30 {
31 "value" : 4,
32 "description" : "valet",
33 "longDescription" : "valet parking key"
34 },
35 {
36 "value" : 5,
37 "description" : "vehicleService",
38 "longDescription" : "service key"
39 },
1 {
2 "value" : 6,
3 "description" : "custom entitlement description",
4 "longDescription" : "custom entitlement long description"
5 }
6 ]
7 }
8 }
9 }
10 Note: Please refer to Section 17.11 for encryption scheme and other details.
11
12 API – Healthcheck
13 This is a generic API offered by the Device OEM Server and the Vehicle OEM Server to
14 determine the availability of the corresponding server. This API does not require any headers.
17 17.7.5.2 Input
18 N/A
19 17.7.5.3 Output
20 N/A
25 API – versionUpdate
26 This API is used for the exchange and update of vehicle and device versions.
27 Upon an update (either device or vehicle), Device, Vehicle and Servers determine the highest
28 common supported version (D-VS, V-OD-FW) for subsequent communication.
29 If after the update of a vehicle SW, the list of supported versions affecting the device has been
30 modified, this API should be called by the vehicle OEM server. In this case, the vehicle OEM
31 determines the timing of when this API is called.
32 If after the update of a device SW, the list of supported versions affecting the vehicle or vehicle
33 server has been modified, this API should be called by the device OEM server. In this case, the
34 device OEM determines the timing of when this API is called.
1 Note that due to the asynchronous call chain (vehicle or device might be offline) the version
2 agreement occurs on both sides without providing the agreed version back to the caller.
3 If a a versionUpdate API call is received by an OEM server which supports Domain Version DS-
4 VS 2.0 of higher, but the associated target entity (e.g., vehicle) supports only Domain Version V-
5 OD-FW v1.0, that OEM server shall respond with success to the versionUpdate API call.
6 All version lists within JSON shall be coded as hex strings, identical to tags 5Ah and 5Bh as
7 outlined in Sections 5.1.1 and 5.1.2.
8 The following sections lists all scenarios in which the API is used and provides the list of
9 parameters to be included.
5 17.7.6.4 versionUpdate()
6 The caller of this API can provide a keyID and associated version lists as described in individual
7 call scenarios above. An example of a full HTTP request is provided below
8 HTTP POST /{service}/{version}/versionUpdate
9 x-requestId: 80BCCEF8F59127A6D1BB5CFEB534D95
10 x-device-oemId: device OEM A
11 {
12 "updateScenario": "DEVICE_SW_UPDATE",
13 "keyID": "3ED46B38D85BCC0A1F31C9BAC509116BC09CC3D2",
14 "deviceVehicleServerVersionList": "2021",
15 "vehicleOwnerDeviceFrameworkDeviceVersionList": "202224"
16 }
17
18
Max
Parameter Type Length Description Required
(bytes)
Conditional. To
keyID for which the version information be used in
keyID String 128
apply. scenarios Sections
17.7.6.1, 17.7.6.2
Conditional.
deviceVehicleServer String 512 Contains the sorted list of all versions Present for
VersionList the device/vehicle supports for DEVICE_SW_UP
Max
Parameter Type Length Description Required
(bytes)
Conditional.
Present for
vehicleOwnerDevice Contains the sorted list of all versions VEHICLE_SW_
FrameworkVehicleV String 512 the vehicle supports for communication UPDATE
ersionList with the device (V-OD-FW). (Section 17.7.6.1),
for owner device
only
Conditional.
Present for
vehicleOwnerDevice Contains the sorted list of all versions DEVICE_SW_UP
FrameworkDeviceV String 512 the device supports for communication DATE
ersionList with the vehicle (V-OD-FW). (Section 17.7.6.2),
for owner device
only
2 17.7.6.5 versionUpdateResponse()
3 versionUpdateResponse does not contain version information.
4 Response body example:
5 HTTP 200
6 x-responseId : 80BCCEF8F59127A6D1BB5CFEB534D95
7 {
8 "responseHeader" : {
9 "statusCode" : "200"
10 }
11 }
13 Request Headers
14 All requests by the Vehicle OEM Server and Device OEM Server server shall contain HTTP re-
15 quest headers as defined below
value Description
All requests by Device OEM Servers and Vehicle OEM Servers shall have an
x-requestId HTTP header “x-requestId”. The value shall be a UUID of length 36 containing
hyphens.
All requests by Device OEM Servers and Vehicle OEM Servers shall have an
HTTP header “x-timestamp”. Timestamp should be specified in Unix timestamp.
x-timestamp
The value shall be given in milliseconds. The value shall not be modified in case
of request retry. This is used to identify outdated requests in case of retry.
x-device- All requests by Device OEM Servers shall have an HTTP header “x-device-
oemId oemId”. Value is the name of the Device OEM.
x-vehicle- All requests by Vehicle OEM Servers shall have an HTTP header “x-vehicle-
oemId oemId”. Value is the Vehicle OEM identifier (See Table 2-1 of [35]).
The corresponding response to the API shall have HTTP header “x-responseId”,
which should echo the value of “requestId” in the request header. This is used to
x-responseId identify the request associated to the response for a particular API request and
response pair. The x-responseId shall be sent by Device OEM Server and Vehicle
OEM Server.
The FQDN of the Device OEM’s endpoint. Vehicle OEM uses this information to
x-device-
initiate communication to Device OEM for a specific keyID. The “x-device-oem-
oem-host
host” shall be sent by the Device OEM Server
1 Response Headers
2 All responses by the Vehicle OEM Server and Device OEM Server shall contain header data of
3 type “ResponseHeader” within the payload. Contents keys are defined below
Max
Parameter Type Length Description Required
(bytes)
Max
Parameter Type Length Description Required
(bytes)
1 Key Type
Max
Key Type Length Description Required
(bytes)
2 EncryptedDataContainer
Max
Parameter Type Length Description Required
(bytes)
Identifier for the algorithm specified in this
version String 10 Mandatory
document. Example: “ECIES_v1”.
Hex-encoded sender's ephemeral public key.
This should be from an ephemeral key pair generated
for a single message.
Ephemeral-
String Variable Format for encoding the sender public key: Mandatory
PublicKey
concat(0x04, x, y) (This will be 65 bytes total for a
key generated based on named curve secp256r1 -
1.2.840.10045.3.1.7)
Hex-encoded recipients’ key agreement public key
fingerprint.
Fingerprint generation algorithm:
Public- sha256Hash(toUncompressedRawECPublicKey-
String Variable Mandatory
KeyHash Format(recipientKAPublicKey)).
SHA-256 hash of the uncompressed key agreement
public key (concat(0x04, x, y)) of the receiving
system used in ECIES_v1 Key Agreement
Base64-encoded encrypted data.
data String Variable data=base64Encode(encrypt(unencryptedData, Mandatory
symmetricEncryptionParams))
1 Unencrypted uiBundle
Max
Parameter Type Length Description Required
(bytes)
Conditional.
Required
Signature created by key tracking
kts-Signature String 256 only in
server (KTS); see Section 6.3.4.4.
trackKeyRes
ponse
Conditional.
sharing- Required if
Indicates if sharing password is
Password- boolean 16 activationRe
required
Required quired is not
present.
Optional.
Indicates that a 2nd factor is Transmitted
activationRe
boolean 16 required to activate a shared key in
quired
trackKeyRes
ponse
Conditional:
Required if
See Describes vehicle OEM-defined vehicle
activationOp
Section N/A activation options for an inactive supports at
tions
17.8.20 shared key least an
activation
option.
List of SharingMethodGroups
See Optional,
approvedSha accepted by vehicle OEM as secure
Section N/A only for
ringMethods sharing methods that do not require
17.8.21 owner keys
2nd factor activation
See
entitlement Section N/A Describes entitlement supported for Mandatory
17.8.13 the key being tracked, maps to the
Max
Parameter Type Length Description Required
(bytes)
Conditional.
Number of keys shared by the
sharedKeys String 4 Required for
owner.
owner keys
Conditional.
shareable- Number of keys available for
String 4 Required for
Keys sharing.
owner keys
Max Length
Action Type Description Required
(bytes)
Shared key is When a shared key has been successfully tracked in the
SHARED_KEY_- tracked and vehicle OEM server and activated on the device (key is
ADDED activated in in status “active”), this notification is sent from the
device Vehicle OEM Server to the owner Device OEM Server.
Activation
When the available activation options change in the
ACTIVATION_OPT options for
vehicle (e.g. SW update), this notification is sent from
IONS_CHANGED vehicle have
the Vehicle OEM Server to owner Device OEM Server.
changed
ENTITLEMENTS_- Entitlements are When entitlements supported by the vehicle are updated
UPDATED updated in the Vehicle OEM Server and vehicle. These
entitlements are then available to the owner for future
Owner Instance If DBh was set during owner key pairing and when the
SHARED_KEY_RE CA Certificate Owner Instance CA Certificate verification failed
JECTED verification during friend key tracking by the Vehicle OEM Server.
failure This notification is sent to owner Device OEM Server
Conditional. Required if
UIElements (see
uiElements
Section17.8.17)
Updated UI elements eventType is UI_ELEMENTS_-
UPDATED
Conditional. Required if
Number of keys shared by the eventNotification is sent to owner
sharedKeys String
owner Device OEM Server and if it
contains shared key information
Conditional. Required if
Number of keys available for eventNotification is sent to owner
shareableKeys String
sharing Device OEM Server and if it
contains shared key informatio
Conditional. Required if
supported- See Section Describes list of all the vehicle
Entitlements 17.8.15)
entitlements are updated in
supported entitlements
Vehicle OEM Server and vehicle
Max
Parameter Type Length Description Required
(bytes)
The unique
keyID String 128 identifier for an Mandatory
owner key
List of
List of all
Shared Shared Key
N/A associated shared Mandatory
KeysData (see Section
keys
17.8.11)
Conditional. Required if
vehicle OEM server supports
For a description this optional feature as
of the TLV described in Section 11.11
vehicle-
String N/A encoded and is sending
Attestation
attestation, refer to VEHICLE_ATTESTATION
Table 11-23 notification when a friend has
entered the correct sharing
password in the vehicle.
2 Shared Key
Max
Parameter Type Length Description Required
(bytes)
See
Key-
Section 4096 Shared key configuration Mandatory
Configuration
17.8.12
1 Key Configuration
Max
Key Type Length Description Required
2 Entitlement
3 Entitlement is also referred to as access profile as described in Section 11.6, Table 11-5.
Name Type Description Required
Max
Parameter Type Length Description Required
(bytes)
Conditional.
The slot identifier to
Required if slot
slotIdentifier String 8 assign for the key Table
identifier is retrieved
6-3 and Table 11-21)
online
Max
Parameter Type Length Description Required
(bytes)
Conditional.
Encrypted confidential
confidential- Required if
String Variable mailbox data (see Table
MailboxData immobilizer token is
6-3 and Table 11-21)
retrieved online
Ephemeral encryption
Conditional.
public key of the
ephemeral- Required if
String Variable Vehicle OEM server
PublicKey immobilizer token is
(see Table 6-3 and
retrieved online
Table 11-21)
1 Supported Entitlements
2 Device Type
3 UI Elements
4 Activation Options
5 Activation options should be indicated on owner and friend device UI during the key sharing
6 process. The friend can then choose any supported activation option.
7 Activation options are an extension and should be used instead of the “sharing password
8 required” indication in the uiBundle (see Section 17.8.6).
9
Conditional: Required
Provides the list of all
only if more options than
supported 2nd factor
activationOptio List of the if sharing password
activation options for
nsList strings and/or other activation
activation of a shared key
options are supported by
(Section 11.2.1.3)
the vehicle
Optional: To be included
String representation of
if
sharingPasswor Vehicle OEM specific
String SHARING_PASSWOR
dLength SHARING_PASSWORD_LE
D_LENGTH needs to be
NGTH as per Appendix B.1
updated
1
2 The following activation options may be supported by the vehicle. Device UIs shall support all
3 listed options.
2 The default “Caller should retry” policy of a given status code is shown in this section, which
3 shall be followed unless otherwise specified with a sub-status code described in Section 17.10.
1 Wherever the specification allows multiple HTTP Status Codes, caller (e.g., Vehicle OEM)
2 server should choose the HTTP Status Code that fits the specific error (5xx for errors within
3 Vehicle OEM server, 4xx for errors on caller’s side, e.g., Device OEM server).
4 Status code 50000 Unexpected error - shall not be used unless a more appropriate sub-status
5 code has not been defined. In this case concerned parties are encouraged to file Change Requests
6 against this specification to add a dedicated sub-status code for the new error and not use
7 “unexpected error” anymore. Callers shall accept even unknown sub-status codes and map them
8 to “unexpected error” internally to avoid the use of versioning to introduce new error codes.
9 The caller shall retry any request satisfying one or more of the following criteria:
10 • Received an HTTP status code that allows a retry (see table above)
1 • Request timed out or otherwise failed at the network level such that no HTTP response
2 was received or processed
3 Requests may be retried a maximum of three times. Retry attempts shall adhere to the following
4 guidelines:
5 • First retry shall occur a pseudorandom amount of time Δt after the original attempt,
6 where Δt is between 0s–1s inclusive.
7 • Second retry shall occur a pseudorandom amount of time Δt after the first retry attempt,
8 where Δt is between 1s–5s inclusive.
9 • Third retry shall occur a pseudorandom amount of time Δt after the second retry attempt,
10 where Δt is between 5s–30s inclusive.
14 Frame/Packet Contents
15 This following information shall be included in the frame/packet sent from the
16 encrypting/sending party to the decrypting/receiving party:
17 1. Algorithm Identifier
18 The identifier for the algorithm specified is “ECIES_v1”.
19 2. Sender Key Agreement Public Key
20 The sender's key agreement public key shall be from an ephemeral key pair generated for
21 a single message.
22 The format for encoding the sender public key: concat(0x04, x, y)
23 (This will be 65 bytes total for a key generated based on named curve secp256r1 and its
24 OID value 1.2.840.10045.3.1.7.
25 3. Recipient Key Agreement Public Key Fingerprint
26 The recipient’s key agreement public key fingerprint. The fingerprint shall be generated
27 using algorithm: SHA-256 hash of the uncompressed key agreement public key (i.e.,
28 concat(0x04, x, y)) of the receiving party used in ECIES_v1 Key Agreement.
29 fingerprint = sha256Hash(toUncompressedRawECPublicKeyFormat(recipientKAPublicKey));
30 4. Encrypted Data
31 The binary encrypted data.
32 Encryption Process
33 The encrypting system shall follow the steps below to encrypt the data:
34 1. Generate sender's ephemeral EC keypair on named curve ephemeral for the message.
35 secp256r1 and its OID 1.2.840.10045.3.1.7.
1 2. Using recipient's encryption public key and the ephemeral private key, generate the
2 shared secret using Elliptic Curve Diffie-Hellman key agreement algorithm with OID
3 1.3.132.1.12.
4 3. Derive the symmetric key as described in Key Derivation Function (see Section 17.11.4)
5 4. Derive the initialization vector for symmetric encryption as described in initialization
6 vector derivation (see Section 17.11.6).
7 5. Encrypt data using all 128 bits of the derived symmetric key using AES–128 id-aes128-
8 GCM with its OID 2.16.840.1.101.3.4.1.6 with no padding, the initialization vector, and
9 no associated authentication data. The 16-byte GCM authentication tag shall be appended
10 to the cipher text.
11 Decryption Process
12 Receiving system shall follow the steps below to decrypt the encrypted data:
13 1. Validate that the sender's ephemeral public key is valid on the named curve secp256r1
14 and its OID 1.2.840.10045.3.1.7.
15 2. Using receiving system's encryption private key (identified by recipient fingerprint) and
16 the sender's ephemeral public key, generate the shared secret using Elliptic Curve Diffie-
17 Hellman key agreement algorithm with OID 1.3.132.1.12.
18 3. Derive the symmetric key as described in Key Derivation Function (see Section 17.11.4).
19 4. Derive the initialization vector for symmetric encryption as described in Initialization
20 vector derivation (See Section 17.11.6).
21 5. Decrypt the data using AES-128 id-aes128-GCM with its OID 2.16.840.1.101.3.4.1.6
22 with no padding, the initialization vector, and no associated authentication data. The 16-
23 byte GCM authentication tag shall be appended to the cipher text.
33 where
34 senderKeyAgreementPrivateKey is generated in item 2 of Section 17.11.1
35 recipientKeyAgreementPublicKey is defined in item 3 of Section 17.11.1.
36 computeSharedInfo is defined in Section 17.11.4.1.
37 with the following parameters:
10 17.12 Versioning
11 General
12 Server APIs send and receive data that can originate from another server or from a device
13 connected to the other server (if other server is device OEM server).
14 A new column in the data description tables of the APIs indicate the domain version that a data
15 element depends on.
16 The negotiation of the API version used between the Device OEM Server and the Vehicle OEM
17 Server (DS-VS) is outside of this specification.
1 17.13 Example
2 This section shows the step-by-step output of the encryption of a sample message using sample
3 sender and recipient keys.
4 Keys
Party Key Type Value
5 Message to encrypt
7 Encryption process
Data Format Value
1 Decryption process
Data Format Value
1 18 SECURITY
3 General
4 This section explains the principles of the SPAKE2+ protocol. Refer to Section 18.4 for
5 implementation details.
6 The system uses SPAKE2+, which is an ECC-based pairing algorithm protocol, to mutually
7 authenticate two entities based on the knowledge of a password provided on the client side (i.e.,
8 device) and a verifier, permanently stored in the server (i.e., vehicle). For more detailed
9 information, see [10].
10 The NIST P-256 curve shall be used [8].
11 The Vehicle OEM Server should generate the password and provision the necessary elements
12 (w0, L; see 18.1.2) into the vehicle well before start of the owner pairing, so that pairing is
13 possible even when the vehicle is offline at the moment of owner pairing.
14 The Scrypt key derivation is executed in the server and on the device, which allows the server
15 and device to adapt the derivation <> parameters over time to counter increases in attacker
16 performance.
17 The password pwd should be provided to the owner through the Vehicle OEM account, protected
18 by the login credentials known only by the owner. The password is UTF-8 encoded and should
19 be passed into the scrypt function in this coding.
20 All values are assumed to be in big-endian byte order. The x and y random generator shall have
21 uniform distribution over the required range and be cryptographically secure.
22 Execution
23 The Vehicle OEM Server derives L and w0 from the password as follows:
24 z0=left 40 bytes of Scrypt(pwd, s, Nscrypt, r, p, dkLen)
25 z1=right 40 bytes of Scrypt(pwd, s, Nscrypt, r, p, dkLen)
26 It shall derive w0 and w1 using the method FIPS 186-4, B.5.1 Per-Message Secret Number
27 Generation Using Extra Random Bits:
28 w0 = (z0 mod (n-1)) + 1 with n being the order n of base point G as defined for NIST
29 P-256
30 w1 = (z1 mod (n-1)) + 1 with n being the order n of base point G as defined for NIST
31 P-256
1 Device and vehicle then shall exchange X and Y through the commands defined in Section 5.
2 On reception of X, the vehicle shall compute the shared secret curve points Z and V as follows:
3 Z = y × (X − w0 × M)
4 V=y×L
5 On reception of Y, the device shall compute the shared secret curve points Z and V as follows:
6 Z=x × (Y − w0 × N)
7 V=w1 × (Y − w0 × N)
8 Both vehicle and device then shall calculate the shared secret K as follows:
9 K = SHA-256(len(X) || X || len(Y) || Y || len(Z) || Z || len(V) || V || len(w0) || w0)
10 where len(str) denotes the length of a string in bytes, represented as an 8-byte little-endian
11 number.
12 The shared secrets CK and SK are derived from K:
13 CK = K [0:128]
14 SK = K [128:128] 5
15 The LONG_TERM_SHARED_SECRET is derived based on Listing 18-9.
16 Verification
17 The verification of the derived keys shall be done by calculating a check value on either side
18 which are mutually exchanged and verified.
19 The vehicle shall calculate the verification value M[1] as
20 K1=HKDF(CK, “ConfirmationKeys” || TLV 5Bh || TLV 5Ch, [0:128]), where
21 ConfirmationKeys is a defined static string (see Listing 18-6).
22 M[1]=C-MAC(K1, X) using K1 as secret key, using CMAC-AES-128 as defined in
23 [RFC4493]
24 and shall send it over to the device.
25 The device shall verify M[1] using the received M[1] from the vehicle and, if successful, shall
26 calculate the verification value M[2] as
27 K2=HKDF(CK, “ConfirmationKeys” || TLV 5Bh || TLV 5Ch, [128:128]) (see Listing
28 18-6)
29 M[2]=C-MAC(K2, Y) using K2 as secret key, using CMAC-AES-128 as defined in
30 [RFC4493]
31 and shall send it over to the vehicle.
32 The protocol succeeds when the vehicle successfully validates M[2].
33 Summary
34 To summarize, the following elements are part of the protocol:
35 • s (16 bytes): Salt generated by the Vehicle OEM Server
5
The notation used is [start_index: number_of_bits]
1 • pwd: Password generated by the Vehicle OEM Server, available in the owner’s Vehicle
2 OEM account
3 • z0 (40 bytes): Part of verifier including FIPS extra bits, derived from the password using
4 a one-way function
5 • z1 (40 bytes): Value including FIPS extra bits derived from the password using a one-
6 way function
7 • w0 (32 bytes): Part of verifier, derived z0
8 • w1 (32 bytes): Value derived from z1
9 • L: curve point, part of verifier, calculated by the Vehicle OEM Server in uncompressed
10 format
11 • x (32 bytes): Random scalar generated by device on each pairing attempt
12 • y (32 bytes): Random scalar generated by vehicle on each pairing attempt
13 • M: Known constant curve point in uncompressed format
14 • N: Known constant curve point in uncompressed format
15 • X: Intermediate public curve point exchanged between device and vehicle in
16 uncompressed format
17 • Y: Intermediate public curve point exchanged between vehicle and device in
18 uncompressed format
19 • Z: Secret curve point generated on both sides from public values and constants in
20 uncompressed format
21 • V: Secret curve point generated on both sides from public values and constants in
22 uncompressed format
23 • K (32 bytes): Shared SPAKE2+ secret
24 • CK (16 bytes): Shared SPAKE2+ secret (as derived from K) to derive confirmation keys
25 • SK (16 bytes): Shared SPAKE2+ secret (as derived from K) to derive system keys
26 • K1 (16 bytes): Vehicle-side secret key for evidence calculation M[1]
27 • K2 (16 bytes): Device-side secret key for evidence calculation M[2]
28 • Kenc, Kmac, Krmac: Secure channel keys
29 • LONG_TERM_SHARED_SECRET: Long-term shared secret for further key
30 derivations
31 For all operations, all curve points shall be represented in x9.63 standard format as the byte
32 stream 0x04 || <x> || <y> format where <x> and <y> are each 32-byte integer in big-endian
33 representation (65 bytes).
34 x and y shall be newly generated after each failing pairing attempt.
1 88 6e 2f 97 ac e4 6e 55 ba 9d d7 24 25 79 f2 99
2 3b 64 e1 6e f3 dc ab 95 af d4 97 33 3d 8f a1 2f
3 5f f3 55 16 3e 43 ce 22 4e 0b 0e 65 ff 02 ac 8e
4 5c 7b e0 94 19 c7 85 e0 ca 54 7d 55 a1 2e 2d 20
5
6 N=
7 04
8 d8 bb d6 c6 39 c6 29 37 b0 4d 99 7f 38 c3 77 07
9 19 c6 29 d7 01 4d 49 a2 4b 4f 98 ba a1 29 2b 49
10 07 d6 0a a6 bf ad e4 50 08 a6 36 33 7f 51 68 c6
11 4d 9b d3 60 34 80 8c d5 64 49 0b 1e 65 6e db e7
26 User Privacy
27 The Vehicle OEM-controlled data going into the Digital Key instance shall be chosen and
28 protected in a way such that the privacy of device users is protected in all use cases.
1 Error Handling
2 On every attempt to execute the owner pairing flow, the device shall generate a new public key
3 pair (device.PK/device.SK).
7 end
7 S-ENC : Kenc
8 Ciphered Command Data Field : encrypted_payload
9 MACChainingValue : 00000000000000000000000000000000h on first command or
10 MAC Chaining value of previous command
11 S-MAC : Kmac
12 C-MAC : mac (8 bytes)
13 end
3 The Secure Ranging Service provides the Bluetooth LE framework necessary to discover,
4 manage, and control UWB-based ranging between a device and a vehicle. Bluetooth LE, Secure
5 Element, and UWB are core to the Digital Key solution. Bluetooth LE offers secure data
6 exchange between device and vehicle which then enables Secure Element to offer mutual
7 authentication and data sharing over a secure channel with the Vehicle. The Bluetooth LE
8 channel is also required to establish and or manage the Secure Ranging service.
16 The Bluetooth LE Controller and Host for both the device and vehicle may optionally support
17 the following additional capabilities:
18 • Long Range (LELR)
19 • LE Advertising Extensions (mandatory, if LE Long Range is supported)
20 Vehicles and devices shall use “LE security mode 1/Level 4” or/and “Secure Connections Only
21 mode,” see Vol 3, Part C, Section 10 of [30]. During a connection, the device and vehicle may
22 use the Feature Exchange Procedure to signal the LELR support based on the “LE Coded PHY”
23 bit defined in [30].
24 Vehicle
25 The Vehicle shall support the GAP Peripheral role.
26 The vehicle shall support privacy in the advertising state as defined in Volume 6, Part B, Section
27 6 of [30]. The vehicle shall use resolvable private addresses for advertising events as specified in
28 Volume 6, Part B, Section 6.2 of [30].
29 If the vehicle supports multiple Bluetooth LE controllers, all controllers shall use the same
30 identity address and resolution key. Each controller may have a different random resolvable
31 address at any time.
32 The vehicle shall support GATT in the server role.
33 Device
34 The device shall support the GAP Central role.
35 The device shall support resolvable private addresses used in advertisements by the vehicle.
1 The device shall initiate a connection to the vehicle when it receives the advertising packet from
2 a paired vehicle. A connection interval of 30 ms is recommended when connecting to a vehicle.
3 The device shall support GATT in the client role.
15 19.2.1.1 Bluetooth LE Link Layer Connection Establishment & Bluetooth LE Owner Pairing
16 GATT Flow
17 In Figure 19-1, the vehicle begins by sending ADV_IND with CCC_DK_UUID as the
18 advertising payload (Steps 11 and 15). The Vehicle LL shall be in the advertising state with its
19 filtering policy set to accept all connection requests. The device begins passive scanning. The
20 Device LL shall be in the scanning state with its filter policy set to accept all advertisements.
21 Once the Device LL receives an advertisement, it forwards that to the device host. The Device
22 Host shall check if the CCC_DK_UUID is contained in the advertisement payload (box A). If the
23 CCC_DK_UUID is contained in the advertising payload, the user is notified. If the user accepts
24 the owner pairing requests, the user provides the pairing password. The Device LL shall enter
25 initiating state with the filter policy set to the advertiser’s address after Step 14. Upon receiving
26 the next same advertisement from the Vehicle LL, the Device LL shall send a connection request
27 (CONNECT_IND as in Step 16).
2
3 In Figure 19-2, the Device Host (acting as the GATT client) initiates service discovery with the
4 Vehicle Host (acting as the GATT server) to get the DK Service and DK Service UUID_SPSM
5 DK_VERSION characteristic in order to establish the L2CAP connection for the DK Service.
6 Figure 19-2: L2CAP Connection-Oriented Channel.
7
8 Figure 19-2 is an example in which the device reads the SPSM value from the vehicle's GATT
9 Server. The device may read the SPSM value in other ways, as defined in the Volume 3 Part G
10 of [30].
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 344/542
CCC-TS-101
1 For more details on Box B and the associated message flow, please refer to Volume 3 Part A
2 [30].
1 In Figure 19-3, the setup begins with the Bluetooth LE Secure OOB Pairing Preparation
2 procedure as defined in Section 19.5.1 and shown in Figure 19-17.
3 During this procedure the device has generated its public key (PKa) and secret key (SKa) and has
4 received the vehicle’s Bluetooth address (BTAddrB), the vehicle’s commitment value (Cb), and
5 random number (rb) over a secured channel. The vehicle has generated its public key (PKb) and
6 secret key (Skb) and received the device’s Bluetooth address (BTAddrA) and the device’s
7 commitment value (Ca) and random number (ra) over a secured channel.
8 The procedure continues with the following:
9 • Bluetooth LE Pairing: Master Initiated Pairing (Pairing Phase 1, Step 1) as defined in
10 [30]. The Bluetooth LE Pairing Request PDU is sent from the device to the vehicle. The
11 Bluetooth LE Pairing Response PDU is sent from the vehicle to the device.
12 • Bluetooth LE Pairing: Public Key Exchange (Pairing Phase 1, Steps 1a and 1b) Vol 2, Part
13 H, Section 7.1 in [30]. A Bluetooth LE Pairing Public Key PDU is sent from the device to the
14 vehicle and a Bluetooth LE Pairing Public Key PDU is sent from the vehicle to the device.
15 Both the device and vehicle begin their DHKey generation.
16 • Bluetooth LE Pairing: Secure Connection Key Generation (LTK) – OOB (Pairing Phase
17 2, Authentication Stage 1, Step 2) in [30]. Both the device and vehicle verify if the confirm
18 value received as part of the OOB Pairing Preparation procedure matches. Both the device
19 and vehicle generate a random nonce (Na and Nb). The device sends its nonce (Na) to the
20 vehicle using the Bluetooth LE Pairing Random PDU and the vehicle sends its nonce (Nb) to
21 the device using the Bluetooth LE Pairing Random PDU.
22 • Bluetooth LE Pairing: LTK calculation (Pairing Phase 2, Authentication Stage 2) as
23 described in Vol 3, Part H, Section 2.3.5.6.5 in [30]. Once the DHKey generation is
24 completed on the device and vehicle, the device and vehicle calculate their LTK.
25 • Bluetooth LE Pairing: DHKey Checks. The device sends the check value (Ea) using the
26 Pairing DHKey Check PDU to the vehicle. The vehicle sends the check value (Eb) using the
27 Pairing DHKey Check PDU to the device. Both the device and vehicle verify the values.
28 • Bluetooth LE Pairing: Key Distribution (Pairing Phase 3) as described in Vol 3, Part H,
29 Section 2.4.3.2 in [30].
30 • Device and vehicle enabling encryption as described in Vol 3, Part H, Section 2.4.4.2 in
31 [30]. The device and vehicle add each other to their private address resolving list as described
32 in Vol 6, Part B, Section 4.7 in [30].
33 The messages in the box “Host Device starts encryption” and “Adding device and vehicle to
34 resolving list” are out of scope of this specification. These are shown for illustration purposes
35 only. Please refer to Vol 6 Part D of [30].
3 The usage of CCC_DK_UUID: The Assigned Value is provided by Bluetooth SIG, Inc. and may
4 only be used by its members in compliance with all terms and conditions of use issued by
5 Bluetooth SIG, Inc. For more information visit
6 https://www.bluetooth.com/specifications/assigned-numbers.
7 The IntentConfiguration is used to allow separate user flows on the device, depending on
8 whether the user has started owner pairing in the vehicle or not. The byte is defined as described
9 in Table 19-3:
10 Table 19-3: Definition of IntentConfiguration byte.
Field Description Bit index
Intent 0: Intent from vehicle - user has actively started owner 0
pairing in vehicle
1: No intent from vehicle
Reserved for future use 0: Set to 0 and shall be ignored by receiver 1:7
5 19.2.1.6 DK Service:
6 The vehicle shall support the DK Service. This shall be a primary service and there shall only be
7 one instance of this service.
8 Table 19-6: DK Service UUID.
Field Value
DK Service UUID <<CCC_DK_UUID>>
1
2 Table 19-14: Device Selected DK Version Characteristic
Attribute value Length Description
(Bytes)
Selected_DK_Protocol_Version 2 Device-selected highest DK Ranging Protocol Version
commonly supported by device and vehicle. In this
specification, the device shall support the DK Ranging
Protocol Version 1.0 (coded 0100h). Attribute may not be
included if Supported_DK_Ranging_Protocol_V
ersion_Len = 0x00. Refer to Table 19-13.
Features Supported length 1 Length in bytes for the Features Supported Field
Features Supported k k is the number of bytes needed to convey the bitfield for
the list of features supported in common by vehicle and
device.
Refer to Table 19-15.
1 The device shall respond with the latest version supported. DK Protocol Major Version and DK
2 Protocol Minor Version attribute values shall be encoded as big endian.
3 DK Protocol Major Version may not be backward compatible with previous DK Protocol Major
4 Versions.
5 DK Protocol Minor Version shall be compatible with previous DK Protocol Minor Version for
6 the same DK Protocol Major Version.
7 If UUID_SPSM_DK_VERSION is not available on vehicle, it shall be interpreted that the
8 vehicle supports DK Protocol Version 1.0 (i.e., DK Protocol Major Version is 1 and DK Protocol
9 Minor Version is 0).
10 If the device supports DK Protocol version 1.0, it shall request the UUID_SPSM from the
11 vehicle.
12 If the device supports DK Protocol Version higher than 1.0:
13 • Device shall request the UUID_SPSM_ DK_VERSION characteristic from the vehicle. If
14 the vehicle doesn’t support “UUID_SPSM_DK_VERSION”, the device shall ask for
15 “UUID_SPSM” since the vehicle only supports DK Protocol version 1.0.
16 • Device shall use the highest version commonly supported by both vehicle and device.
17 • If vehicle supports V-D-BT version higher than 1.0, device shall write the
18 Selected_DK_Protocol_Version and Features_Supported to the Vehicle UUID_DEVICE_
19 DK_VERSION characteristic.
20 If the vehicle supports DK Protocol Version 1.0, it shall implement UUID_SPSM. If the vehicle
21 that does not support UUID_SPSM_DK_VERSION and the UUID_DEVICE_DK_VERSION
22 characteristic receives a request for the UUID_SPSM_DK_VERSION or
23 UUID_DEVICE_DK_VERSION from a device, it shall respond with the error code “Attribute
24 not found” as indicated by Bluetooth specification (refer to Bluetooth core specification v5.0 Vol
25 3, Part F 3.4.4.1).
26 If the vehicle supports DK Protocol Version higher than 1.0:
27 • Vehicle shall implement the UUID_SPSM and the UUID_SPSM_DK_VERSION
28 characteristic
29 The total size of the attribute value for UUID_SPSM and UUID_SPSM_DK_Version shall be
30 less than 512 bytes. If this value is exceeded, it shall keep the most recent anchor versions
31 followed by additional supported versions to make it fit within 512 Bytes.
32 Features Supported definition:
33 Features Supported shall be defined as follow:
34 Table 19-15: Supported Feature Definition Bitmap
Attribute type/ Attribute Description
Feature value
Supported
Bit[0] 0 or 1 1b: TimeSync Procedure 0 Supported
Optional for vehicle, See Section 19.4.4.1
Bit[1] 0 or 1 1b: TimeSync Procedure 1 Supported
4 Bluetooth Encryption
5 The following requirements apply to Bluetooth encryption:
6 • The device (central) shall request encryption and encryption shall successfully complete
7 before L2CAP connection establishment is initiated, except for owner paring and first friend
8 approach.
9 • The vehicle shall trigger a disconnect 5 seconds after an unencrypted L2CAP connection
10 establishment if no First_Approach_RQ (see Section 19.3.4.1) or Request_owner_pairing
11 Command Complete SubEvent notification (see Table 19-72) has been received during the
12 first approach and owner pairing, respectively.
13 • The device and vehicle should not terminate the L2CAP connection used for DK Service
14 while the BLE connection is alive. In case the L2CAP connection used for DK Service is
15 terminated while the Bluetooth LE connection is alive, the device shall attempt to re-establish
16 the DK Service L2CAP connection once conditions permit.
Passive Entry
10. CONNECT_IND
15. ATT_WRITE_REQ (handle for <<UUID_DEVICE_DCK_VERSION >> , "DCK Major Version", "DCK Minor Version", "1", "3" )
16. ATT_WRITE_RSP ()
Digital Key Framework Secure Data exchange (encrypted over L2CAP CoC)
2
3 For passive entry, Capability Exchange is conditional upon whether either the vehicle or device
4 has an updated DK Protocol Version, UWB Configuration Identifier, PulseShape Combinations,
5 or a combination of these parameters since the last Capability Exchange, as described in Section
6 19.5.1.
1 • Receiver requirements:
2 The actual sensitivity level, as defined in Version 5.2 Vol 6 Part A Section 4 of [30]:
3 o Should be equal or better than -85dBm for un-coded PHYs and -88dBm for LE Coded
4 PHY with S=2 coding for the device (see note below).
5 o Should be equal or better than -85dBm for un-coded PHYs and -88dBm for LE Coded
6 PHY with S=2 coding for the vehicle (see note below).
7 Note: Reference measurement setup and common test case condition are defined in
8 certification/test plan specification.
9 • General requirements:
10 Test should be done using the optimal ranging setup flow with a previously derived URSK
11 Any other losses in the Bluetooth link such as vehicle body or interior should be kept at a
12 minimum or at best avoided.
13 Figure 19-5: Connection performance in relationship with device, transmitter, and receiver requirements.
14
15 19.2.3.4 Vehicle Requirements
13 The Message Header field is one byte long and indicates the Message Type of the message being
14 sent. For example, if the message being sent is a Select APDU wrapped within DK_APDU_RQ
15 (see Section 19.3.2.1 for more details), the Message Header field indicates whether this message
16 is an SE message for standard transaction or Framework message for owner pairing, for which
17 the associated message processing differs by the type of message. On the other hand, the Payload
18 Header field is 1 byte long and communicates the message such as DK_APDU_RQ.
19 The Message Header is defined in Table 19-20 and the Message Type is defined in Table 19-21.
20 Bit [7:6] of the Message Header are reserved for future use and shall be set to 0.
21 Table 19-20: Message Header definition.
Message Header Bit field
Framework message 0
SE message 1
UWB Ranging Service message 2
DK Event Notification 3
Vehicle OEM App message 4
Supplementary Service message 5
Head Unit Pairing message 6
Reserved 7–63
3 The Length field is two bytes long and indicates the size of the Data field in the message coded
4 in Big Endian format. All the DK message fields shall be encoded in Big Endian format, except
5 for data type fields already defined by Bluetooth Specification or otherwise explicitly defined in
6 this specification. Those data types ordering defined by Bluetooth Specification shall remain
7 unchanged.
8 The Data field is variable in length and its data structure definition is defined in Sections 19.3.1
9 to 19.3.8 for each message ID.
10 Table 19-23 shows the categorization of DK message under different Message Type.
11 Table 19-23: Message Type and its associated messages.
Message Type Message APDUs
1 Below is an example on how to encode an APDU message before transporting it over Bluetooth
2 LE by using DK Message. The same can also be used to decode the incoming message.
3 Message: Select APDU message (See Section 15.3.2.1) over Bluetooth LE with
4 AID as 0xA000000809434343444B417631.
5 Message Type in Message Header: 0x01 (SE)
6 Message ID in Payload Header: 0x0B (DK_APDU_RQ, 11)
7 Data: 0x00A404000DA000000809434343444B41763100
8 (SELECT APDU command)
9 DK Bluetooth LE Payload: 0x010B001300A404000DA000000809434343444B41763100
Supported_UWB_Config_Id 2×m UWB_Config_Id is a 2 Byte field which is an identifier for the supported
UWB configuration. This configuration includes the supported PHY layer
parameters. See Section 21.4 for the supported UWB PHY layer
configurations.
m is the number of UWB configs supported by vehicle
Supported_PulseShape_Combo_Len 1 Length byte for the supported PulseShape_Combos
Supported_PulseShape_Combo 1×l PulseShape_Combo is a 1 Byte field which is an identifier for the supported
initiator/response, transmit/receive pulse shape combinations. See Section
21.5 for the supported subset.
l is the number of PulseShape_Combos supported by the vehicle.
UWB_Time0 8 Starting time reference (resolution 1 microsecond) on UWB Device Clock of ranging
session (see Section 20.3).
Requested_RAN_Multiplier 1 Requested RAN Multiplier for the ranging session to be recovered. The
Requested_RAN_Multiplier shall be different than the
Session_RAN_Multiplier prior to ranging suspension (see Section
19.3.1.5).
8 The Selected_RAN_Multiplier shall be used during the recovered ranging session and shall
9 remain valid until the ranging session ends or the ranging session is suspended. When the
10 ranging session is recovered again, the RAN_Multiplier value for the given ranging session shall
11 revert to the default Session_RAN_Multiplier for that ranging session.
12 SE Message
3 If the Digital Key framework has selected the Digital Key applet over a supplementary logical
4 channel, it shall update the class byte of the APDU command accordingly before forwarding the
5 APDU command to the Digital Key applet.
8 19.3.5.1 RKE_Auth_RQ
9 This message is sent by vehicle upon receiving RKE action SubEvent (See Section 19.5.9).
10 The content of the RKE_Auth_RQ and its parameter are shown in Table 19-58 and Table 19-59,
11 respectively.
12 Table 19-58: RKE_Auth_RQ message and its parameter.
Message Message ID Parameter
RKE_Auth_RQ 0x14 RKE Challenge
14 19.3.5.2 RKE_Auth_RS
15 This message is sent by the device in response to the RKE_Auth_RQ.
16 The content of the RKE_Auth_RS is shown in Table 19-60.
17 Table 19-60: RKE_Auth_RS message and its parameter.
Message Message ID Parameters
RKE_Auth_RS 0x15 All fields contained Table 15-61.
1 Note 1: The content of the arbitrary_data field (Tag 58h) in Table 15-56 is described in Section
2 19.5.9.
3 Note 2: The content of the usage field (Tag 93h) in Table 15-56 is set to D074DA4Fh or
4 FC6F4C17h.
6 DK Event Notification
7 DK Event Notifications are used to encapsulate events that are generated by the device or vehicle
8 participating in the ranging exchange. The message and its parameters are defined in Table 19-69
9 and Table 19-70, respectively.
10 Table 19-69: DK Event Notification message and its parameters.
Message Message ID Parameter
DK Event Notification 0x11 Subevent_Category,
Subevent_Code
6 The Command Complete SubEvent is used to send appropriate code upon processing of last
7 message. Table 19-72 and Table 19-73 detail the Command_Status codes applicable to the
8 ‘Command Complete SubEvent’ category. For detailed flow on Command_Status SubEvents,
9 see Section 19.7.1.
10
11 Table 19-72: Definition of Command_Status and its Command_Status codes.
Parameter Length (bytes) Value Description
Command_Status 1 0x00 - 0xFF See Table 19-73 for all command status codes
If the vehicle initiates a standard transaction but the device becomes not
ready, the device may respond with a Device_busy SubEvent or may not
respond during the command timeout. The vehicle shall retry the standard
transaction until the device responds. A timeout shall be applied if the device
does not respond.
Request_owner_pairing 0x04 Device shall send this SubEvent to request owner pairing
General_error 0x80 Device or vehicle may send this SubEvent to signal an unknown error.
Upon receiving this, the vehicle or device may retry or abort.
Device_SE_busy 0x81 Device may send this SubEvent to signal the SE is temporarily unavailable.
The device may retry internally to get SE resources before sending this.
Upon receiving this, the vehicle may retry the digital key flow.
Device_SE_transaction_state_lost 0x82 Device may send this SubEvent to signal standard transaction state was lost.
Upon receiving this, the vehicle may retry the transaction
Device_busy 0x83 Device may send this SubEvent to signal device temporal not able to
respond to the sent request. Upon receiving this, the vehicle may retry the
action.
Command_temporarily_blocked 0x84 Device shall send this SubEvent when the device UA state and UA policy
do not allow the requested command.
Unsupported_channel_bitmask 0x85 Device shall send this SubEvent if the channels provided in the channel
bitmask are currently not supported by the device
OP_Device_not_inside_vehicle 0x86 Vehicle shall send this SubEvent when the device was not found inside the
vehicle during owner pairing. This error shall cause the vehicle and device
to abort owner pairing
Device_resource_available 0x87 The device sends this subevent to signal to the vehicle that it recovered
from a state where access to device internal resources was blocked. The
vehicle may use this information to retry a flow that failed due to that
previous device state.
Reserved 0x88- 0xFB Reserved for future use
OOB_mismatch 0xFC Device or vehicle may send this SubEvent to signal the incompatible OOB
data exchanged during Bluetooth LE pairing. This is an error code for
debugging purposes.
BLE_pairing_failed 0xFD Device or vehicle may send this SubEvent to signal the failure in Bluetooth
LE pairing. This is an error code for debugging purposes.
FA_crypto_operation_failed 0xFE Device or vehicle may send this SubEvent to signal the failure in First
approach due to cryptography. This is an error code for debugging
purposes.
Wrong_parameters 0xFF Device or vehicle may send this SubEvent to signal the use of unsupported
message or format. This is an error code for debugging purposes.
6 Table 19-75: List of Session_Status for Ranging Session Status Changed SubEvent.
Session_Status Code Description
Ranging_session_URSK_refresh 0x00 Vehicle may send this SubEvent to request clean-up for pre-derived
URSKs.
Ranging_session_URSK_not_found 0x01 Device shall send this SubEvent to signal, the device failed to find
URSK for this UWB_Session_Id
Ranging_session_not_required 0x02 Device shall send this SubEvent when it detects the user does not intend
to approach the vehicle e.g device is moving away from the vehicle.
Upon receiving this subEvent, the vehicle may immediately suspend the
ranging session.
Ranging_session_secure_ranging_failed 0x03 Vehicle shall send this SubEvent to signal the Vehicle failed to establish
secure ranging.
Ranging_session_terminated 0x04 Vehicle or device may send this SubEvent if it has stopped the ranging
session (e.g. due to URSK TTL expiration)
Ranging_session_recovery_failed 0x06 Device shall send this SubEvent to signal it failed to recover ranging for
this UWB_Session_Id
Ranging_session_suspended 0x07 Vehicle or device shall send this SubEvent only if it is suspending the
current ranging session without allowing the responder to delay the
suspension (e.g. UWB has temporarily become unavailable).
When vehicle or device receives this, it shall suspend its current ranging
session as well without sending a Ranging_Suspend_RQ or a
Ranging_session_suspended SubEvent.
Reserved 0x08-0xFF Reserved for future
Medium_ approach_confidence 0x01 Device notifies vehicle of user approaching with medium confidence
High_ approach_confidence 0x02 Device notifies vehicle of user approaching with high confidence
2 The device shall use the following definition of Confidence levels to select DR_Intent. The
3 setting of the DR_Intent is up to the device OEM implementation. When the vehicle is in low
4 power mode, the vehicle may decide to ignore ranging intent with low or medium approach
5 confidence. When the vehicle is not in low power mode, and if the vehicle is ready to perform
6 the secure ranging operation (e.g., no vehicle internal conflict), the vehicle shall initiate the
7 secure ranging regardless of the DR_Intent confidence level.
8 To enable secure ranging based on a Device Ranging Intent, the device shall send a Device
9 Ranging Intent SubEvent with at least low_approach_confidence between the point in time a
10 Bluetooth LE connection with the vehicle is established and the point in time the vehicle triggers
11 secure ranging (e.g. user touches the door handle).
12 The performance requirements from Section 19.2.3.3 shall apply when the vehicle starts the
13 Ranging Session Setup flow after receiving a Device Ranging Intent SubEvent
14 Approach detection probability:
15 • Describes the probability an intent was sent in the last 2 to 20 seconds before the
16 customer touched the door
17 • P(Approach detection) = P(in last [2s,20s] an intent was sent | Customer touches door
18 handle
19 False approach detection probability:
20 • Describes the probability that a ranging intent was sent, but the customer has not arrived
21 at the vehicle touching the door handle within the following 20s
22 • P(False approach detection) = P(Customer has not touched the door handle within the last
23 20s | ranging intent received 20s ago)
81h 1 Action id M
80h 2 Function id M
7F75h variable Request confirmation for enduring RKE action. Only present, when C
enduring RKE action is in progress.
80h 2 Function id M
81h 1 Action id M
5F78h 1 Subscription status changed, only present, when the vehicle changes 5F78h
the subscription state
0: Unsubscribed all, no subscription possible
1: Subscription request successful
2: Unsubscribe request successful
3: Subscription possible/resubscription required
Vehicle Device
A. Vehicle Locked
1. RKE Request SubEvent
(Template 7F74h (get function status) function id = 0001h (central locking))
Device Vehicle
2
3
4
1 Tag 7F71h shall always be sent together with 7F72h in a single SubEvent message to the device
2 that triggered the action causing the vehicle state to change. An exception is when the vehicle
3 state takes more than 250 ms to change after the action received. In this situation, 7F71h and
4 7F72h can be sent separately in two different subevent messages. When sent together, the
5 templates order shall be always 7F71h followed by 7F72h. In case of automatic actions triggered
6 due to the location of the device, the device that triggered a state change (i.e., ‘central locking’ or
7 ‘lock and secure’) will receive 7F71h and 7F72h as a single SubEvent message with the
8 appropriate action id 0x50(lock) and 0x51(unlock). Other BLE connected devices (not used in
9 decision making) will only receive the 7F72h template in the SubEvent notification. The vehicle
10 can make an exception for devices in the vicinity as described below.
11 For central locking or lock and secure, the template 7F71h can be included with 7F72h to inform
12 devices that are in the vicinity of the vehicle but did not directly cause the event. This shall only
13 be done for devices located in zones relevant for passive entry (‘vicinity’).
17 Table 19-79 lists the functions and its corresponding action ids and/or status values. Depending
18 on the usage of the particular ID, it may not provide the corresponding action id or status value.
19 For certain actions that represent automatically executable functions, e.g., due to device position
20 or movement, the vehicle may send an execution status without an explicit RKE trigger. An
21 example of this is using it to signal when execution of an automatic action is unsuccessful (e.g.,
22 walk away lock with vehicle state not allowing to lock the vehicle).
23 Table 19-79: Definition of Function ids and their corresponding Action ids.
Func- Function Possible action ids Possible function status values Event-based Device Vehicle
tion id (Note 1) or enduring (Note (Note 2)
action 2)
0000h-000Fh Central locking category (vehicle may support up to one of the following options)
0001h Central locking 0: Lock 0: Locked Lock, Unlock: M C, only
1: Unlock 1: Unlocked Event; available
50: Vehicle-triggered 4: Selectively Unlocked. Only driver door Walk Away if 0002h
Lock (only for unlocked (with global unlock available on Lock, is not
execution status) unlock action) Approach available
Unlock: only
51: Vehicle-triggered Vehicle State Machine: execution
Unlock (only for status
execution status)
0002h Lock and 0: Lock and secure 0: Locked and secured Lock and M O
secure 1: Unlock 1: Unlocked secure,
Unlock, Lock
Func- Function Possible action ids Possible function status values Event-based Device Vehicle
tion id (Note 1) or enduring (Note (Note 2)
action 2)
2: Lock with partial 2: Locked with partially armed alarm with partial
arming of alarm system arming of
system 3: Locked with partial arming available alarm system:
50: Vehicle-triggered 4: Selectively Unlocked. Only driver door Event;
Lock & Secure (only unlocked (with global unlock available on Walk Away
for execution status) unlock action) Lock,
51: Vehicle-triggered Approach
Vehicle state machine: Unlock: only
Unlock (only for
execution status) execution
status
Func- Function Possible action ids Possible function status values Event-based Device Vehicle
tion id (Note 1) or enduring (Note (Note 2)
action 2)
Tailgate Close:
Controls (with enduring with
confirmation confirmation
for close)
0112h Power 0: Close 0: Closed enduring O O
Trunk/Decklid/ 1: Open 1: Open without
Liftgate/ confirmation
Tailgate
Controls
(without
confirmation
for close)
0113h Reserved for standardization
…
011Fh
0120h-012Fh Front Vehicle Storage Variants category (the vehicle should support one of the following
options if the vehicle has a frunk)
0120h Manual 1: Release 0: Closed Event O O
“Frunk” Front 1: Open
Trunk Controls
Traditional
vehicle body
style
0121h Power “Frunk” 0: Close 0: Closed Open: O O
Front Trunk 1: Open 1: Open enduring
Controls with without
confirmation confirmation,
Traditional Close:
vehicle body enduring with
style confirmation
0122h Power “Frunk” 0: Close 0: Closed Open/Close: O O
Front Trunk 1: Open 1: Open enduring
Controls without
without confirmation
confirmation
Traditional
vehicle body
style
0123h Reserved for standardization
…
012Fh
0130h-0140h Vehicle Power Doors Variants category (if supported by vehicle)
0130h Power Front 0: Close 0: Closed enduring with O O
Left with 1: Open 1: Open confirmation
Confirmation
Func- Function Possible action ids Possible function status values Event-based Device Vehicle
tion id (Note 1) or enduring (Note (Note 2)
action 2)
0133h Power Front 0: Close 0: Closed enduring O O
Right without 1: Open 1: Open without
confirmation confirmation
1 Generic function status values shall be used to indicate errors or the absence of a certain
2 function. These function status values are defined in Table 19-80.
3 Table 19-80: Definition of Standardized Function/Execution Status Values to Indicate the (Temporary)
4 Unavailability of Function/Execution or Errors.
Function status value Possible function status values
F0h Function not supported by vehicle
FFh Reserved, shall be used if action is supported but function has no explicit status
7
8 Device UA Policy SubEvent
9 The Device UA Policy SubEvent is used by Device to inform Vehicle about the current used UA
10 Policy on the Device. When the key is created, the UA Policy is set to Off [O] by default. At
11 BLE connection setup Device should inform Vehicle if the UA Policy has changed to other value
12 than Off [O]. During BLE connection, Device should also inform Vehicle if UA Policy has
13 changed.
14 Table 19-84: List of UA Policies
UA Policy Value Description
Off [O] 0x00 UA never requested (default)
Access [AL] 0x02 UA requested on first access and lock or first engine start and lock
7 Definitions
8 The following definitions are used for this subsection:
12 The appearance of the Device UWB Clock to a vehicle can be defined or undefined:
13 1. “Defined”
14 o Device UWB Clock becomes “defined” to the vehicle, once a successful Bluetooth LE
15 Timesync procedure with valid UWB_Device_Time has been performed
16 o Device UWB Clock becomes “defined” to the vehicle, once an UWB packet (of a
17 ranging session with this device) has been received
18 o Once defined, vehicle expects that UWB device clock is operated in a consistent manner
19 and the characteristics and requirements below hold
20 2. “Undefined”
21 o Device UWB Clock appears “undefined” to the vehicle prior to a successful Bluetooth
22 LE Timesync.
23 o Note: This is the case if the Device UWB clock has not been started.
24 o Device UWB Clock becomes “undefined”, if there is no UWB and no Bluetooth LE
25 connection for more than 30 seconds.
26 o Device UWB Clock becomes “undefined”, if a ranging session is suspended.
27 o Note: A ranging session may be suspended automatically, if Bluetooth LE connection is
28 lost for more than 30 seconds.
29 o Device UWB Clock becomes “undefined”, if a ranging session is terminated.
1 o Note: In particular, the value of the UWB clock at session start shall be UWB_Time0 (as
2 announced in the RSS-RS/RR-RS message).
3 5. UWB_Device_Time shall be presented as the clock state of a 64-bit counter with 1µsec
4 resolution; the 64-bit counter shall wrap around at 264-1.
15 Clock offset: Clock offset is the difference in clock states between a clock x and the true time at
16 an arbitrary point in time T.
17 Relative clock offset: Relative clock offset is the difference in clock states between a clock x and
18 a clock y, at an arbitrary point in time T.
19 Clock skew: Clock skew is the difference in clock frequency to the nominal clock frequency.
20 • Clock skew can be viewed as first derivative in time of clock offset.
21 • Clock skew normalized to the nominal frequency and multiplied by 106 is “clock skew in
22 ppm”.
23 Relative clock skew: Relative clock skew is the difference in clock frequencies of clock x and
24 clock y.
25 • Relative clock skew can be viewed as the first derivative in time of relative clock offset (the
26 difference in clock frequencies at certain point in time).
27 Clock drift: Clock drift is the derivative of clock skew (the variation of clock frequency over
28 time). Clock drift is assumed to be negligible for the purpose of this specification.
1 • The worst-case clock skew Device_max_PPM of the device UWB clock (relative to true
2 time) and the worst-case clock skew of the vehicle can be used to determine an upper bound
3 for the relative clock offset of a future event (like session start).
4 • Vehicle may estimate the relative clock skew and compensate for it, to minimize the relative
5 clock offset of a future event (like session start); for the time interval of interest the clock
6 drift is assumed to be zero.
7 General Description
8 The Bluetooth connection serves as a common time domain between the vehicle and device and
9 is used to synchronize the Bluetooth-connected UWB transceiver by mapping a shared BT event
10 into the UWB clock domain. Synchronization methods are shown in Figure 19-7.
21 Bluetooth LE Timesync:
22 In the absence of UWB Packet reception, this section describes a time synchronization over
23 Bluetooth.
Anchor Anchor
Anchor Anchor
5
6 There are two states for the time synchronization between device and anchor as shown in Figure
7 19-8.Those states are only known by the vehicle.
8 • “not in sync”: Clock offset of anchor UWB clock vs device UWB clock is unknown, or
9 potential offset is larger than 1 ms
10 • “in sync”: Clock offset of anchor UWB clock vs device UWB clock is better than 1 ms
11 Note: The limit for the relative clock accuracy that defines the “in sync” state is up to the vehicle
12 implementation.
2
3 Note: This state diagram defines the pre-conditions for time synchronization and assumes a
4 vehicle implementation which establishes this time synchronization in all anchors. In a real
5 implementation there could be further boundary conditions, that might hinder time
6 synchronization, although the conditions from this state diagram are given.
7 Note: Reception of an UWB packet shall lead immediately to the “In sync” state. This
8 synchronization via reception of an UWB packet is indicated as dashed line in the state diagram
9 is referred as “In-band” UWB synchronization. However, the scope of this Section is “Out-of-
10 band” UWB synchronization via Bluetooth LE Timesync.
11 If “in sync”, the vehicle shall be able to predict events like session start or a position within the
12 MAC grid (for an active ranging session) with some uncertainty.
13 The uncertainties are caused by clock skew between device and vehicle UWB clock,
14 UWB_Device_Time uncertainty in case of “Bluetooth LE Timesync”, and uncertainties on
15 vehicle side.
16 If no ranging session was started or recovered within 10 seconds after a successful Bluetooth LE
17 Timesync, the Device UWB Clock becomes “Not in sync”.
18 The vehicle shall only trigger “Bluetooth LE Timesync” if conditions in condition set A or
19 condition set B is met:
20 Condition Set A:
1 1. Condition A.1: A ranging session was needed in the last 150s or is currently running.
2 This can be signaled by Device Ranging Intent as sent by device to vehicle, user physical
3 intent on vehicle (e.g. touching door handle, engine start), or when Session Ranging
4 Setup is to be performed (e.g. during owner pairing, first friend approach, passive entry).
5 2. Condition A.2: Previous successful “Bluetooth LE TimeSync” was done (either by device
6 or vehicle) more than 150s ago.
7 Condition Set B:
8 1. Condition B.1: A ranging session is needed. This can be signaled by Device Ranging
9 Intent as sent by device to vehicle, user physical intent on vehicle (e.g. touching door
10 handle, engine start), or when Session Ranging Setup is to be performed (e.g. during
11 owner pairing, first friend approach, passive entry).
12 2. Condition B.2: No active ranging session is on-goingNone of the vehicle’s UWB anchors
13 produced a valid ToF measurement within 10 seconds since the last “Bluetooth LE
14 TimeSync”
15 3. Condition B.3: Previous successful “Bluetooth LE TimeSync” was done (either by device
16 or vehicle) more than 10s ago.
27 Device Uncertainty
28 UWB_Device_Uncertainty is the time uncertainty between the connection event Anchor point
29 and UWB Clock domain mapping (see Section 19.3.3 for definition)
30 Figure 19-9 shows the uncertainties on the device side.
2
3 19.4.4.2 Procedure 1: Bluetooth LE Timesync Triggered by Vehicle
4 When the vehicle determines a time synchronization is required, the host (vehicle) shall send an
5 “LE Set PHY” command which triggers sending the “LL PHY REQ” to the device. The device
6 should respond to the “LL PHY REQ” by sending “LL_PHY_UPDATE_IND”.
7 The vehicle may trigger the procedure 1 before or after the ranging session start. The vehicle
8 shall trigger the procedure 1 only after Bluetooth connection is established and encryption is
9 completed.
10 The time synchronization process on the device side is initiated once the device receives the
11 message “LL_PHY_REQ” sent from the vehicle. The time synchronization shall happen at the
12 anchor point of the connection event that contains the response message
13 “LL_PHY_UPDATE_IND” of the device. This time as DeviceEventCount1.
14 The device shall map this point in time into its UWB clock domain (UWBDeviceTime1). The
15 exact mechanism of mapping the timing reference is out of scope for this specification. In case of
16 retransmission for “LL_PHY_UPDATE_IND”, the vehicle should consider only the latest
17 successful “LL_PHY_UPDATE_IND” LL message.
18 After mapping the timing reference into its UWB clock domain, the device shall send a timesync
19 message over Bluetooth LE. The timesync message is defined in Section 19.3.3.
20 The vehicle should map the timing reference (anchor point) of a connection event into its UWB
21 clock domain (UWBVehicleTime1).
22 The vehicle maps its UWB clock in two different ways:
23 1. Same connection event as device: Vehicle has mapped the anchor point of the same
24 connection event as referenced in the timesync message.
25 a. In this case the vehicle may directly use UWB_Device_Time from the timesync message
26 to determine the synchronization offset:
27 i. SyncOffset = UWBDeviceTime1 – UWBVehicleTime1
28 b. The use of DeviceEventCount is not necessary.
29 2. Different connection event as device: Vehicle has mapped the anchor point of a different
30 connection event VehicleEventCount1
31 a. In this case the vehicle shall use DeviceEventCount to correct for the different points in
32 time and determine the synchronization offset:
6
7 19.4.4.3 Unsuccessful “Bluetooth LE Timesync”
8 An Unsuccessful “Bluetooth LE Timesync”, shown in Figure 19-12, is defined when the success
9 field in the Time_Sync message (see Section 19.3.3.) is set to 0.
10 The device may return an unsuccessful “Bluetooth LE Timesync” for the following reasons:
11 • Device UWB Clock is not available
12 • Device is unable to map the timing reference to its UWB clock domain.
13 If the success field is 0, the vehicle should initiate the “Bluetooth LE Timesync” procedure after
14 the delay stated in the field “RetryDelay”.
15 In this case, the following parameters in the time Sync message are undefined or not available:
16 • UWB_Device_time
17 • DeviceEventCount1
18 • UWB_Device_time_uncertainty
19 • Device_max_PPM
20 Figure 19-12: Unsuccessful Timesync message.
21
7
8 19.4.5.2 Example 2: “Bluetooth LE Timesync” with Procedure 0 and Procedure 1
9 In Example 2, both Procedure 0 and Procedure 1 are successful.
10 The internal operations of the device and vehicle for obtaining UWB timestamps according to
11 the BLE timestamps are implementation specific.
12 Figure 19-14 describes the “Bluetooth LE Timesync” message flow with an example of internal
13 operations. In this figure, the ranging session is described as a block as illustration only. It is
14 possible for the vehicle to initiate Procedure 1 any time during the ranging session.
2
3 19.4.5.3 Example 3: “Bluetooth LE Timesync” with Procedure 1 only
4 In Example 3, shown in Figure 19-15, the Procedure 0 is unsuccessful and only the second
5 Procedure 1 is successful.
6 The second Procedure 1 shall be initiated after the retryDelay provided in the first Failed
7 Procedure 1.
8 If the device supports Procedure 0, it should reply with Success = 2 (the “Bluetooth LE
9 Timesync” procedure has failed and the Procedure 0 is not available) to avoid confusion for the
10 vehicle.
1 Frequency of Procedure 1:
2 • If consecutive successful “Procedure 1” is equal or more than 60 seconds apart, the device
3 shall support it.
4 • If consecutive successful “Procedure 1” is less than 60 seconds apart, device support is
5 optional.
6 There should be at least one successful procedure before the Ranging Session Setup Request and
7 Ranging Recovery Request messages.
8 UWB_Time0 (provided in the Ranging Session Setup Response or Ranging Recovery Response
9 message) shall be consistent in time to the reference UWB_Device_Time. Since Device UWB
10 clock enters "defined" mode after successful Procedure 1, any Bluetooth reconnection after the
11 LL_PHY_UPDATE_IND and before the ranging shall not impact the UWB_Time0.
22 Owner pairing over Bluetooth LE leverages similar exchange that takes place over NFC with
23 minor modifications and additional steps to the flow as described in this section and shown in
24 Figure 19-16. NFC related procedures (NFC polling and link setup, NFC link teardown, NFC
25 reset) in Owner Pairing Phase 2, Phase 3 and Phase 4 shall not apply to owner pairing over
26 Bluetooth LE. For Bluetooth LE/NFC, the owner pairing may start over NFC as described in
27 Section 6 and followed by Bluetooth LE Activation flow as described in Section 19.5.10. Owner
28 pairing shall be performed over NFC if the vehicle or device does not support secure ranging.
2
3
12 In Owner Pairing Phase 2, both device and vehicle go through SPAKE2+ flow (see Figure 6-3
13 and Figure 6-4) to derive system keys and OOB Bluetooth LE keys as defined below. More
14 details on SPAKE2+ and system keys derivation (HKDF functions) see Section 18.
24 Out of these keys, Kble_oob_master and Kble_intro are UWB solution specific keys:
25 1. Kble_oob_master is used as shared secret between device and vehicle which is used to
26 derive Kble_oob to encrypt OOB pairing data during First Approach
27 2. Kble_intro is used to encrypt DK_Identifier during First Approach
28
29 In addition, the vehicle shall provide its “Wireless Capabilities” as part of 7F49 template defined
30 in Table 19-86. The following wireless capability combinations (WCC) as utilized for DK
31 Vehicle and Device operation are defined:
32 • WCC1: NFC only
33 • WCC2: NFC and Bluetooth LE (NFC + RKE Functions)
34 • WCC3: NFC, Bluetooth LE, and UWB (NFC + RKE Functions + Passive/Location-based
35 Functions)
36 Devices and Vehicles may contain any combination of radios not used for DK operations.
1 Device shall store Kble_oob_master, Bluetooth Random Static Address of the vehicle and IRK
2 of vehicle in its database. This information shall be used during owner pairing, NFC to UWB
3 migration of owner device and friend sharing.
4 Table 19-86: 7F49 Template.
Template Length Description Field
(bytes) is
7F49h variable 7F49 template is used to provide wireless capability (NFC/UWB) and related data; this M
template shall be included by vehicle.
5F50h 0 This tag shall be included if and only if the vehicle supports NFC. Vehicle and Device M
shall always support NFC capability. If this tag is present, tags 5F51 and/or 7F52 may
be present.
5F51h 0 This tag shall be included if and only if the vehicle supports UWB. If this tag is present, O
tags 5F50 and 7F52 shall be present.
7F52h variable This tag (Bluetooth LE) shall be included if and only if either of the WCC shown below C
are supported by the vehicle:
WCC NFC UWB BLE
WCC2 Supported Not Supported Supported
WCC3 Supported Supported Supported
Length for usage during Owner pairing: 28 bytes Length for usage during Friend
sharing: 64 bytes
D0h 16 IRK of Bluetooth LE of the vehicle. If 7F52 tag is present, this tag shall be included C
D1h 6 Bluetooth Random Static Address of the vehicle. If 7F52 tag is present, this tag shall be C
included
D2h 0 This Tag shall be included if vehicle supports LELR. O
5 Additional tags sent by the vehicle in 7F49 template shall be ignored by the device.
6
7 The vehicle that supports Bluetooth LE/UWB shall also set the corresponding bits in Tag 46h and
8 Tag 47h as defined in Table 15-14.
2
3 ** A friend device does not derive Kble_oob but receives it from the Owner device instead.
1 If Tag DAh in Table 5-14 is present and set to values 01h, 03h, 04h, 05h, vehicle shall not
2 validate that decrypted DK_Identifier value belongs to a valid slot in this step. The
3 vehicle shall validate the slot identifier during the first standard transaction after
4 Bluetooth LE pairing instead.
5 • For box H, vehicle shall use HKDF function with decrypted DK_Identifier and
6 Kble_oob_master to derive Kble_oob.
7 o Kble_oob = HKDF-SHA256(16, Kble_oob_master, DK_Identifier) //
8 (output_len, input_keying_material, info)
9 o Where DK_Identifier is an 8-byte padded slot_identifier. For example, if the
10 slot_identifier is 6-byte, it will have 0x0000 added as prefix to make it 8-byte.
11 • For box I, vehicle shall use AES-128-CCM with Kble_oob as shared secret and 8byte IV
12 to decrypt device OOB data required for Bluetooth LE Secure OOB pairing (BTAddrA ||
13 Ca || ra)
14 • For box J, vehicle shall use AES-128-CCM with Kble_oob as shared secret and 8-byte IV
15 to encrypt vehicle OOB data required for Bluetooth LE Secure OOB pairing (BTAddrB ||
16 Cb || rb)
17 • For box K, device shall use AES-128-CCM with Kble_intro as shared secret and 8-byte
18 IV provided by device to decrypt DK_Identifier
19 • Once device and vehicle have successfully performed Bluetooth LE Secure OOB Pairing
20 Prep, device shall initiate Bluetooth LE Pairing procedure by sending pairing request as
21 described in Section 19.2.1.4. Post successful pairing, device shall setup Bluetooth LE
22 encryption before moving to next step.
23 • The Bluetooth LE Pairing data shall be persisted for device and vehicle at the same point
24 in time the endpoint is persisted on either side. Any failure before that point shall lead to
25 rolling back the Bluetooth LE pairing data to be able to perform a retry.
26 • Any Bluetooth LE messages being exchanged over-the-air as part of this flow shall not
27 make use of DK message defined in Section 19.3.
38 Capability Exchange
39 Capability Exchange for owner pairing shall be performed if either the vehicle or device has an
40 updated DK Protocol Version, UWB Configuration Identifier, PulseShape Combinations, or a
41 combination of these parameters, which is different than the one the vehicle and device
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 407/542
CCC-TS-101
1 supported during the last Capability Exchange. The Capability Exchange is shown in Figure
2 19-18.
3 The vehicle initiates the Capability Exchange by sending Ranging_Capability_RQ (see Section
4 19.3.1.1) to the device. Upon receiving the Ranging_Capability_RQ, the device shall respond by
5 sending Ranging_Capability_RS (see Section 19.3.1.2).
6 Figure 19-18: Capability Exchange.
Vehicle Device
1. Ranging_Capability_RQ
(Supported_DK_Protocol_Version_Len, Supported_DK_Protocol_Version,
Supported_UWB_Config_Id_Len, Supported_UWB_Config_Id,
Supported_PulseShape_Combo_Len, Supported_PulseShape_Combo)
2. selects DK Protocol Version,
UWB Config Id, and
PulseShape_Combo
3. Ranging_Capability_RS (Selected_DK_Protocol_Version,
Selected_UWB_Config_Id, Selected_PulseShape_Combo)
7
8 The device triggers the Capability Exchange by sending DK Event Notification with
9 Subevent_Category set to 0x01h and the corresponding command status code set to 0x02h. Upon
10 receiving the DK Event Notification, the vehicle shall initiate the Capability Exchange as shown
11 in Figure 19-18.
12 Time Sync
13 If the Device UWB Clock is “Not in sync” while Bluetooth LE connected with the device, the
14 vehicle shall trigger the Bluetooth LE Timesync procedure 1 if all conditions are met (see
15 Section 19.4.2).
1 The vehicle shall perform secure ranging and detect that the device is inside the vehicle before
2 proceeding to Owner Pairing Phase 3. If the device is not detected inside of the vehicle or other
3 ranging failure occurred, the vehicle shall send an appropriate SubEvent code defined in Table
4 19-72 or Table 19-74 and abort the owner pairing attempt.
1. KTS Response
2. Command_Complete_SubEvent(Request_standard_transaction)
If key is inactive,
activate key
3. CONTROL_FLOW_Command(P1='40', P2='88')
4. CONTROL_FLOW_Response
5. EXCHANGE_Command()
6. EXCHANGE_Response(key_tracking_receipt)
7. CONTROL_FLOW_Command(P1='40', P2='81')
8. CONTROL_FLOW_Response
9. <optional> EXCHANGE_Command(write friend_immobilizer_token_1
with friend_slot_identifier_1)
10. <optional> EXCHANGE_Response
2
3 Each APDU command and response shall be encoded as below
4 Message Type: SE message
5 Message:
6 APDU Command Encapsulation: DK_APDU_RQ (see Section 19.3.2.1)
7 APDU Response Encapsulation: DK_APDU_RS (see Section 19.3.2.2)
1 The vehicle may send HU-PP either before or after owner pairing is completed. Sending the HU-
2 PP prior to owner pairing completion allows the device to display a single message at the
3 Subevent Notification about DK pairing complete and head unit capability. If the Head Unit
4 Pairing is supported by the vehicle, the vehicle shall send the HU-PP within 2 seconds from the
5 Command Complete Subevent (Deselect_SE) at the end of owner pairing Phase 4 i.e., Step 5 in
6 Figure 19-16. If the Head Unit Pairing is not supported or for all subsequent head unit (re)pairing
7 the device and vehicle shall follow the Bluetooth pairing and encryption setup as defined in [30].
8 Figure 19-20: Head Unit Pairing Flow Diagram.
9
10 Note that the order of HU-PP message and owner pairing subsection (refer to Box A in Figure
11 19-20) is an example and can be interchanged.
12 If a device supports Head Unit Pairing, the device shall send HUP-RQ in Step 5 (see Section
13 19.3.7.2). The vehicle shall respond with HUP-RS in Step 8 (see Section 19.3.7.3) to complete
1 the Head Unit Pairing. If the device does not support Head Unit Pairing, the flow in Figure 19-20
2 completes after Step 2 and subsequent steps are not required.
3 If Headunit pairing (Step 10) is not finished within 60 seconds from the moment the message
4 HUP-REQ has been sent, the device may retry the head unit pairing from Step 3.
5 Note that DK_HU_OOB_Pairing_Req and DK_HU_OOB_Pairing_Result messages in Step 6
6 and 7 are implementation-specific by the vehicle OEM and are only provided as an example.
7 For Friend First Approach (Section 19.5.8.2), the message HU-PP shall be sent after the “secure
8 ranging setup flow” is completed.
9 The flow diagram in Figure 19-20 shows the case where OOB communication is possible from
10 both directions. The vehicle shall configure the parameter BT_Pairing_Configuration in message
11 1 to indicate to device that the vehicle head unit supports bidirectional OOB communication.
12 Unidirectional OOB communication is not permitted.
13
14 Passive Entry
15 After owner pairing has been successfully performed, upon each approach, at minimum secure
16 ranging flow shall be exercised to establish secure ranging before enabling any of the passive
17 entry features/actions such as ‘Welcome Lights’, ‘Unlock’, ‘Lock’, etc. Once the secure ranging
18 has been established and device has been localized, vehicle may decide to initiate any of the
19 above actions, as per its policy or requirements.
20 For passive entry, one of the following conditions shall trigger the vehicle (except if the vehicle
21 is in low power mode, or vehicle is not ready, for example, due to internal conflict) to establish
22 secure ranging with the device:
23 1. Device sends Device Ranging Intent SubEvent with at least low_approach_confidence.
24 2. The vehicle determines that there is user intent to use vehicle features that require secure
25 ranging with the device, e.g., user touches door handle
26 The URSK is needed before secure ranging can be established. The vehicle may have a pre-
27 derived URSK or derive a new URSK as needed. The URSK confidentiality and integrity shall
28 be preserved during the whole lifetime of the URSK.
29 URSK Management
30 Vehicle may derive and store a new URSK by:
31 • Executing a dedicated transaction flow (i. e. with a AUTH0 command indicating a
32 transaction_code value 10h) as shown in Figure 19-21.
33 OR
34 • By adding a CREATE RANGING KEY command to a Standard Transaction flow
35 intended for another purpose like start engine (i.e., with a AUTH0 command indicating a
36 transaction_code value not equal to 10h) as shown in Figure 19-30; see Section 19.5.6.1.
37 Each time this flow is executed successfully, a unique URSK is derived and stored
38 indexed using a UWB_Session_Id. This UWB_Session_Id is the least significant 4 bytes
39 of the transaction_identifier, a 16 bytes random number generated by the vehicle for each
1 AUTH0 and sent to the device as part of AUTH0 command along with other parameters.
2 For more details, see Section 15.3.2.9.
3 To derive URSK over Bluetooth LE, each APDU command and response shall be encoded as
4 below.
5 Message Type: SE message
6 Message:
7 APDU Command Encapsulation: DK_APDU_RQ (see Section 19.3.2.1)
8 APDU Response Encapsulation: DK_APDU_RS (see Section 19.3.2.2)
9
10
2
3 To find details on vehicle’s processing for box A, E and H, see Section 7 and Section 15.3.2.26.
4 For box G and H, once the URSK has been successfully derived, it shall be stored in secure
5 storage indexed using UWB_Session_Id.
6 Vehicles capable of secure ranging shall support the derivation and storage of at least one pre-
7 derived URSK per Digital Key. Devices capable of secure ranging shall support the derivation
8 and storage of two pre-derived URSKs per Digital Key. Each of these pre-derived URSKs is
9 indexed using its associated UWB_Session_Id.
10 The vehicle shall use the Secure Ranging Setup Flow (see Figure 19-23) to activate a pre-derived
11 URSK. There shall be at most one active URSK per Digital Key, and this active URSK is
12 discarded anytime another one is activated.
13 After a pre-derived URSK is activated, the vehicle shall request derivation and storage of another
14 pre-derived URSK. The vehicle shall control when this additional URSK derivation occurs to
15 minimize user impact (for example, after passive entry completed) but is recommended to occur
16 shortly after URSK activation. Table 19-87 shows the URSK storage requirements.
17 Table 19-87: URSK storage requirements per Digital Key endpoint.
URSK Types Definition Vehicle URSK Device URSK
Storage Storage
Pre-derived URSK that has not been activated using the Secure Ranging Setup At least 1 2
Flow and has only been kept in secure storage. TTL is not defined until
key is activated.
Active URSK activated using the Secure Ranging Setup Flow and has neither 1 1
exhausted its STS_Index max incrementation nor has an expired TTL.
1 3. The URSK TTL (Time-To-Live) has expired. The vehicle shall enforce an URSK TTL
2 lower or equal to 12 hours (vehicle OEM specific). The URSK TTL starts when the first
3 dURSK is derived. The first dURSK shall be derived immediately before sending or after
4 receiving Ranging Session Setup Response for the device or vehicle, respectively.
5 4. A new URSK is activated through Secure Ranging Setup Flow.
2
3 If the vehicle needs to localize the device, the vehicle shall first check which flow should be
4 initiated for establishing secure ranging. For this, the vehicle shall first check if it already has an
5 active ranging session. If it does, vehicle shall use that session to localize the device.
6 If there is no active ranging session, the vehicle shall then check whether an active URSK exists.
7 If it does, the vehicle shall follow the ranging recovery flow to recover the ranging session (using
8 its UWB_Session_Id) associated with that active URSK.
9 If there is no active URSK, the vehicle shall check whether a pre-derived URSK exist. If it does,
10 the vehicle shall follow optimal flow to establish secure ranging.
11 If there are no active or pre-derived URSKs, the vehicle shall fallback to sub-optimal flow.
12 If there is an active ranging session, and if the URSK TTL at the vehicle is about to expire or
13 vehicle decides to use a URSK with shorter TTL for engine start (see Section 19.5.6.1), the
14 vehicle may setup a new secure ranging session with a pre-derived URSK. When the pre-derived
15 URSK becomes active, the vehicle and the device shall discard the previously active URSK (if
1 any). For more details on ranging recovery flow, optimal flow and sub-optimal flow, refer to
2 below subsections.
3 Optimal Flow
4 Optimal flow shall be exercised by vehicle, if it has a pre-derived URSK available. Optimal flow
5 simply follows Secure Ranging Setup flow using a pre-derived URSK. If the vehicle uses this
6 flow to activate a pre-derived URSK, the vehicle and device shall discard the currently active
7 URSK (if any) for the associated Digital Key before the new URSK is activated.
8 To setup secure ranging, each message shall be encoded with Message Type: UWB Ranging
9 Service message
10 The Secure Ranging Setup flow is shown in Figure 19-23.
11
Secure Ranging Setup Flow
12 Figure 19-23: Secure Ranging Setup Flow.
Vehicle Device
A: Flow Selection
Outcome:
Optimal Flow
1. Ranging_Session_RQ
B. Map/Identify
URSK using
UWB_Session_Id
provided with
Ranging_Session_RQ
2. Ranging_Session_RS
B. Map/Identify
URSK using
UWB_Session_Id
provided to device
3. Ranging_Session_Setup_RQ
4. Ranging_Session_Setup_RS
13
1 Sub-Optimal Flow
2 Sub-Optimal flow shall be exercised if a vehicle has no pre-derived URSK available. Sub-
3 Optimal flow is a combination of URSK Derivation flow and Secure Ranging Setup flow.
4 Figure 19-24 illustrates the use of Sub-Optimal flow, in the absence of pre-derived URSK.
5 Figure 19-24: Sub-Optimal Flow.
6
7
8 In addition, if the device fails to activate an URSK as part of Optimal flow and no more pre-
9 derived URSKs are available or when vehicle URSKs are out of sync with device URSKs (refer
10 Section 19.8), vehicle shall fall back to Sub-Optimal flow.
11 Once secure ranging has been established by either using Optimal or Sub-Optimal flow, vehicle
12 may localize the device. Once device localized, vehicle may perform any of the passive entry
13 features/actions.
Accepted Suspend
Recover
Ranging Session Suspended
2
3 The decision on when to send a Ranging Suspend Request is up to the sender requester.
4 However, the receiver may choose to delay the suspension request for a limited period of time.
5 For example, device may request to put the ranging session to suspended state, if it does not
6 detect any motion for extended period of time. On the other hand, vehicle may respond back with
7 the request to delay the suspension, if it strongly believes ranging session is either still needed or
8 will be in immediate future.
9 Figure 19-26 illustrates Ranging Suspend Accepted flow when requested by the device.
10 Figure 19-26: Ranging Suspend Accepted Flow.
11
12 Figure 19-27 illustrates Ranging Suspend Delayed flow when requested by the device.
2
3 When in suspended mode, vehicle may send a Ranging Recovery Request message (see Section
4 19.3.1.9) to the device. The device may trigger ranging recovery by sending Device Ranging
5 Intent SubEvent to the vehicle
6 The Ranging Recovery flow offers a low latency based secure ranging which requires minimal
7 exchange and no new URSK.
8 However, before initiating Ranging Recovery flow, vehicle shall meet the following
9 requirements:
10 1. Has an active URSK (TTL has not expired) associated with the suspended ranging session in
11 which the vehicle intends to recover
12 2. No change to ranging configurations of the suspended ranging session is needed, such as
13 change of frequency, # of anchors, etc.
14 If vehicle needs a secure ranging, the vehicle shall check whether there is any suspended ranging
15 session for the connected device that meets both of the above requirements. If it does, the vehicle
16 shall initiate Ranging Recovery flow. When device receives the Ranging Recovery Request, it
17 shall identify the same set of configurations used to establish the ranging session for the provided
18 UWB_Session_Id. Device shall then pick and send a new UWB_Time0 and STS_Index0.
19 Figure 19-28 illustrates Ranging Recovery flow.
Vehicle Device
1. Ranging_Recovery_RQ
2. Ranging_Recovery_RS
2
3 For box A, refer to Section 19.5.5.
4 For box D, vehicle shall select previously negotiated UWB config parameters for
5 UWB_Session_Id associated with recovering ranging session.
Vehicle Device
8
9 19.5.6.1 Standard Transaction with URSK derivation via Bluetooth LE
10 Optionally, a URSK can also be derived within a standard transaction via Bluetooth LE that was
11 mainly intended for other purposes like start engine, i. e., regardless of the AUTH0 Command
12 Transaction Type Coding. The necessary steps for the URSK derivation are performed after an
13 otherwise successful standard transaction with (optional) EXCHANGE commands. This is
14 depicted in Figure 19-30.
15 Note: Steps 1 through 8 in Figure 19-30are identical to Steps 1 through 8 from Figure 7-1.
16
17
1 Figure 19-30: URSK Derivation Flow in a Standard Transaction intended for another purpose
2
3 If an error occurs within Steps 1 to 8 of the standard transaction, URSK derivation is skipped and
4 the appropriate error is signaled to the device. Vehicle then sends Command complete SubEvent
5 (Deselect SE) to Device as per Step 11 from Figure 19-30.
6 In case an error occurs during URSK derivation, only the action triggered with the preceding
7 standard transaction is (already) accepted by the vehicle. If necessary, Step 11: Command
8 Complete SubEvent (Deselect SE) shall be sent to the device.
9 If a URSK derivation is still needed, a dedicated standard transaction for URSK derivation as
10 described in Section 19.5.4 should be performed.
11 Engine Start
12 Engine start shall be authorized for a limited time, only after completion of a standard transaction
13 (which may also be used to retrieve an Immobilizer Token) and a UWB ranging.
14 The vehicle OEM may choose to setup a new ranging session using a different URSK with short
15 TTL for engine start authorization. The usage of a short TTL (e.g. 30s) for the UWB ranging
16 used for engine start increases overall security by reducing the general exposure of the URSK
17 used for enabling engine start.
1 To enable passive entry experience for friend devices, vehicle provides its 'Wireless Capabilities’
2 (7F49 template) and both device and vehicle derive Kble_oob_master as part of 'Owner Pairing'
3 flow as described in Section 19.5.1.
4 During sharing, owner’s device make use of Kble_oob_master and DK_Identifier to derive
5 Kble_oob as described below.
6 Friend Bluetooth LE Pairing: Friend OOB Pairing Data Derivation
7 • Kble_oob = HKDF-SHA256(16, Kble_oob_master, DK_Identifier)
8 // (output_len, input_keying_material, info)
9 Where DK_Identifier is an 8-byte padded slot_identifier of the friend. For example, if the
10 slot_identifier is 6 bytes, it will have 0x0000 added as prefixed to make it 8 bytes.
11 Owner device shall send an updated 7F49 template (see Table 19-86) as part of the Import
12 Request. This template is shared by the owner device to the friend device as described in Section
13 11.8.2.1.
2
3 Bluetooth LE Link Layer Connection Establishment and L2CAP Setup Connection-
4 Oriented Channel Setup
5 Upon receiving an ADV_IND from the vehicle, a friend device shall first resolve the vehicle
6 RPA using the IRK, and then shall send a CONNECT_IND to establish Bluetooth LE link layer
7 connection. Once the Bluetooth LE link layer connection is established, the friend device and
8 vehicle shall establish L2CAP Connection-Oriented channel.
1 Any Bluetooth LE messages being exchanged over-the-air as part of this flow shall not make use
2 of DK message defined in Section 19.3.
3 Capability Exchange
4 For Friend First Approach, the Capability Exchange shall be performed as described in Figure
5 19-18.
6 Time Sync
7 If the Device UWB Clock is “Not in sync” while Bluetooth LE connected with the device, the
8 vehicle shall trigger the Bluetooth LE Timesync procedure 1 if all conditions are met (see
9 Section 19.4.2).
1 To exchange RKE_Challenge and challenge response over BLE, it shall be encoded as below.
2 Message Type: Supplementary Service message
3 Message Type:
4 Message: RKE_Auth_RQ (see Section 19.3.5.1)
5 Message: RKE_Auth_RS (see Section 19.3.5.2)
6 DK Event Notification (see Section 19.3.8)
11
12 In box A, the user triggers the action and performs user authentication (see Section 9).
13 In box C, the device shall derive arbitrary data by performing SHA256 of the concatenation of
14 the RKE_Challenge and the corresponding requested RKE Request SubEvent function id and
15 action id (see Section 19.3.8.2).
1 In box D, vehicle shall derive arbitrary data using the same procedure as the device and shall
2 perform signature verification (see Section 15), before the action is executed.
3 In Step 6, the successful execution together with a Vehicle function status change is
4 communicated via the Vehicle Status Changed SubEvent.
1. RKE Request SubEvent (Template 7F70h (perform RKE action) with function ID = ABCD h & action ID = XYh)
ref
RKE action authentication (cf. event-based RKE action authentication with function ID = ABCD h and action ID = XYh)
2. Starts Closing
4. RKE Request SubEvent (Template 7F76h (confirm continuation) with function ID = ABCD h & action ID = XYh, arbitrary_data)
6. RKE Request SubEvent (Template 7F76h (confirm continuation) with function ID = ABCD h & action ID = XYh, arbitrary_data)
7. RKE Request SubEvent (Template 7F77h (stop enduring action) with function ID = ABCD h & action ID = XYh)
Vehicle Device
2
3 In box A, the user starts the Enduring RKE action.
4 After performing the RKE authentication as defined in Section 19.5.9.1, the Enduring RKE flow
5 starts. The confirmation interval is controlled by the vehicle. The arbitrary data as payload in the
6 Vehicle Status Changed SubEvent with “Request Continuation Confirmation” and, in the RKE
7 Request SubEvent with “Confirm Continuation” can be the basis of a vehicle OEM-specific
8 mechanism to ensure that the app on the device is still reachable or to perform round-trip time
9 measurements. If a “Request Continuation Confirmation” Vehicle Status Changed SubEvent
10 contains arbitrary data, the device shall return it unmodified in the corresponding “Confirm
11 Continuation” RKE Request SubEvent. This should happen within the next connection event
12 (30 ms recommended). It is up to the Device OEM implementation to call the callback before or
13 after sending the “Confirm Continuation” RKE Request SubEvent.
14 While the user is actively using an Enduring RKE function with continuous confirmation on the
15 device for the given vehicle, and if the vehicle does not receive a continuation confirmation
16 within 100 ms after a continuation confirmation request was sent, it may stop the function. This
17 time measurement is between the over-the-air packet sent by vehicle and the over-the-air packet
18 received by the vehicle.
1
2 In box B, the user wants to stop the Enduring RKE action. This is indicated by the device via the
3 “stop enduring action” payload.
4 In box D, the vehicle initiates the stop of the Enduring RKE action. The device can be notified
5 when an enduring function reaches a certain stop state or when an error occurs.
6 The Vehicle Status Changed SubEvent may contain one or more function status updates along
7 with the Continuation Confirmation Request.
A. Vehicle Locked
1. RKE Request SubEvent (Template 7F74h (get function status) function ID = 0001 h (central locking))
11. RKE Request SubEvent (Template 7F73h (subscribe to function status events) from function ID = 0000h to function ID = 0000 h)
Vehicle Device
2
1. Bluetooth LE Advertisement
2. Bluetooth LE Advertisement
3. SELECT
4. SELECT Response
5. SELECT
6. Command Complete SubEvent (Device_SE_busy)
Restart Standard
Transaction after 500ms
DK Exchange Ongoing
7. Bluetooth LE Advertisement
8. SELECT
9. AUTH0
10. Command Complete SubEvent (Device_SE_busy)
Restart Standard
Transaction after 500ms
DK Exchange Ongoing
SE Processing Completed
DK Exchange Ongoing
SE Processing Completed
16. SELECT
17. SELECT Response
Disconnect
other Vehicles
2
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 433/542
CCC-TS-101
29
10
11 For box A, vehicle shall query for stored URSKs.
12 For box B, it is vehicle’s decision on when to initiate URSK Refresh flow.
13 For box D, vehicle should delete URSKs associated with the digital key.
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 435/542
CCC-TS-101
8
9 19.7.2.3 Recovery Failed
10 When the device fails to recover a ranging session, which was requested by vehicle, the device
11 shall respond to the vehicle with Ranging Session Status Changed SubEvent Notification with
12 Session_Status “Ranging_session_recovery_failed”. Upon receiving this notification, the vehicle
13 shall discard the corresponding URSK. A new ranging session should then be established
14 according to the flow selection (see Figure 19-22).
15 Figure 19-40 provides an example flow for “Recovery Failed” handling.
Vehicle Device
1. Ranging_Recovery_RQ
B. Clean up UWB_Session_Id
and associated configurations
for which recovery failed
2
3 For box B, process the received message, the vehicle removes the URSK, configurations and any
4 other metadata associated with UWB_Session_Id for which recovery failed.
5 For box C, refer to Section 19.5.5.
7 SE Transaction Recovery
1 Figure 19-41: URSK Refresh due to Status Word 6484h in CREATE RANGING KEY Response.
2
3 For box A, vehicle shall query for pre-derived URSKs.
4 For box B, vehicle shall delete all pre-derived URSKs associated to the Digital Key.
5 For box C, device shall delete all pre-derived URSKs associated to the Digital Key.
6 19.8.1.2 Others
7 Error handling for rest of the applet commands shall be done based on the Status Words and
8 flows defined in Section 15.
2 This section defines the MAC layer and channel access protocols for UWB ranging for Digital
3 Key.
5 Overview
6 This subsection describes the concepts that are used in the UWB MAC (see [31] and [33]).
1 3. A single RAN shall have one initiator only and may have more than one responder-
2 device (e.g. a device ranging with two vehicles). In the example shown in Figure 20-1,
3 this is represented by Device 2, Vehicle 1, and Vehicle 2 which all belong to RAN 2.
4 4. Each responder-device may have a different number of logical responders (e.g. one
5 vehicle may have 7 responders and another vehicle in the same RAN may have 5
6 responders).
7 5. A single responder-device may belong to multiple RANs, e.g. a single vehicle ranging
8 with two different devices. In the example shown in Figure 20-1, this is represented by
9 Vehicle 2 which belongs to RAN 2 controlled by Device 2 and RAN 3 controlled by
10 Device 3.
11 Figure 20-1: Digital Key RAN Concept.
12
13 20.1.1.4 Inter-/Intra- RAN Interference and Resource Management
14 Each responder on a responder-device can reliably predict its allowed transmission window and
15 there will be no interference between responders on the same responder-device. However, given
16 the above definitions, three possible performance degradation scenarios can be identified:
17 1. Inter-RAN Interference:
18 • This may be caused by actual over-the-air collisions of packets from different RANs.
1 • This is the normal mode of operation and should be expected as there is no assumption of
2 coordination between different RANs. The impact of these collisions may be mitigated
3 by employing the ranging round hopping strategy defined below (see Section 20.4).
4 2. Intra-RAN Resource Conflict:
5 • A resource conflict may occur when the initiator would have to serve two different
6 ranging exchanges (to two different responder-devices) at the same time.
7 • This scenario may be resolved at the initiator by prioritizing one of the ranging sessions
8 involved. The target ranging round may be used for the ranging session with the highest
9 priority and the initiator shall skip the round for the other ranging sessions. The impact
10 of skipped ranging round appears like a failed ranging round and may be mitigated by
11 employing the ranging round hopping strategy explained in Section 20.4.
12 3. Inter-RAN Resource Conflict:
13 • A resource conflict occurs when a responder would have to serve ranging rounds from
14 two (or more) different RANs at the same time.
15 • This scenario may be resolved by prioritizing one RAN and skipping the round for the
16 other RANs. The prioritization is determined by the involved responder-device.
17 • For the initiators of the skipped RANs, this appears like a failed reception of the
18 responses for the current ranging exchange and the responder-device hops to a different
19 round (see Section 20.4).
20 The criteria for determining the priority is left to the device and the vehicle manufacturer. In all
21 subsequent sections and text below, unless otherwise stated, a responder is understood to mean a
22 logical responder.
23
2
3 The DK UWB ranging protocol is a block-based ranging approach as described in [33]. The
k
4 protocol uses a ranging block structure where each ranging block is TBlock in time duration (it is
5 explained later in this section how the block timing is established within the RAN). Each ranging
k
6 block is divided into N Round ranging rounds that are long enough to carry out one complete
k
7 ranging exchange. The length TRound of the ranging rounds is session specific.
8 • First, the following global parameters are defined:
9 o TChap : Unit of time for the MAC protocol. All durations (except for TPacket_Max
10 defined below) of the MAC protocol are integer multiples of TChap .
1
TChap = ms = 400 RSTU
11 3
12 where the RSTU is defined in [33] as 416 / (499.2 MHz) » 833.33 ns.
13 o TBlock_Min : Minimum ranging block duration, which is set to 96 ms, is an integer
14 multiple of TChap
15 𝑇(Block_Min) = 288 × 𝑇_Chap = 96 ms
16
17 • One RAN consists of one initiator and k = 1, …, K responder-devices.
18 • Each responder-device is assigned at most one active ranging session in the RAN.
19 • The k-th ranging session (which is associated with the k-th responder-device) is identified
20 with a unique UWB _ Session _ ID k that is assigned during the negotiation phase.
k
21 • The k-th ranging session is defined relative to a specific time reference UWBtime0 . This
22 time reference is defined by the initiator with respect to its clock base. This time
1 reference defines the beginning of a series of consecutive ranging blocks. Given that
2 there is no assumption of global synchronization, Section 20.3 describes how that time
3 reference is established at the responders.
4 • The length of each ranging block for the k-th session is given by:
𝑘 𝑘
5 𝑇Block = 𝑁RAN × 𝑇Block_Min
k
6 where N RAN is the RAN Multiplier. It is a session specific parameter that is used to
7 control the maximum ranging frequency of the corresponding session in a given RAN
8 (see Section 20.5.2 and G.1). It is set during the negotiation phase between the initiator
9 and the responder-device. Every ranging session shall have a ranging block duration that
10 is greater than or equal to TBlock_Min .
11 • The (i+1)-th ranging block of the k-th ranging session starts at:
𝑘 𝑘
12 𝑈𝑊𝐵𝑡𝑖𝑚𝑒0 + 𝑖 × 𝑇Block 𝑖 = 0,1,2, …
13
k
14 • Each block is divided into a number of slots. The length of each slot TSlot shall be greater
15 than or equal to the sum of the maximum UWB packet transmission time and the
16 maximum processing time required by the UWB receiver to process such a packet (these
17 are indicated by TPacket_MAX and TInter_Packet
k in Figure 20-2)6. The duration of the slot in
18 terms of TChap is expressed as:
𝑘 𝑘
19 𝑇Slot = 𝑁Chap_per_Slot × 𝑇Chap
20
21 where N Chap_per_Slot
k is determined during the negotiation phase (see Section 20.5.2).
k
22 • A sequence of NSlot_per_Round
k consecutive slots constitutes a ranging round of length TRound .
23 The number of slots per ranging round shall be greater than or equal to the number of
24 packet exchanges required for one complete ranging exchange between the initiator and
25 the responder-device.
𝑘 𝑘 𝑘 𝑘 𝑘
26 𝑇Round = 𝑁Slot_per_round × 𝑇Slot = 𝑁Slot_per_round × 𝑁Chap_per_Slot × 𝑇Chap
27
k
28 • Each block of the k-th ranging session is divided into N Round consecutive ranging rounds,
29 where
6
Given that the initiator and the responder-device may be using two different UWB radios with different processing
capabilities, the two radios may support different values of slot durations. The duration of the appropriate slot is
selected from the set of common values during the negotiation phase between the initiator and the responder-device
according to the protocol described in Section 20.5.2.
k
TBlock
1 N k
= k
Round
TRound
2 • The (s+1)-th ranging round in the (i+1)-th ranging block of the k-th ranging session shall
3 start at
𝑘 𝑘 𝑘 𝑘
4 𝑈𝑊𝐵𝑡𝑖𝑚𝑒0 + 𝑖 × 𝑇Block + 𝑠 × 𝑇Round 𝑖 = 0,1,2,3 … 𝑠 = 0,1,2, … , (𝑁Round − 1)
5
6 • Each of the ranging sessions (k=1,2, …, K) is assigned a pseudo-random hopping
7 sequence
8
9 where Sik denotes the index of the ranging round in ranging block i that starts at
𝑘 𝑘 𝑘 𝑘
10 𝑈𝑊𝐵𝑡𝑖𝑚𝑒0 + 𝑖 × 𝑇Block + 𝑆𝑖𝑘 × 𝑇Round 𝑖 = 0,1,2,3 … 𝑎𝑛𝑑 0 ≤ 𝑆𝑖𝑘 ≤ (𝑁Round − 1)
11 Sik also referred to as Round _ Idx k (i) in later sections of this document to denote the
12 ranging round index of (i+1)-th ranging block selected pursuant to the hopping
13 configuration. The selection of the hopping configuration, i.e. adaptive or continuous, and
14 hopping sequence will be made according to the selection made during the ranging
15 session setup described below. Additionally, Appendix G.2 shows the computation for
k
16 the hopping sequence H . The hopping sequence shall be used, along with the hopping
17 mode and the hopping flag to compute the ranging round index in the current ranging
18 block. See Section 20.4 below for details on the hopping flag and ranging round index
19 determination.
20 For details on the ranging packet exchange initiation process and the hopping
21 configuration selection, see Section 20.5.2.
22 • Given the above definitions, the average ranging frequency of the k-th ranging session is
1 1
23
k
f Ranging = k
£ @10.4166667 Hz
T
Block
96ms
k 𝑘
24 The achievable ranging block durations TBlock
k
for a given N RAN is 𝑁RAN × 96𝑚𝑠.
25
26 • For the (i+1)-th ranging measurement in the k-th ranging session, the ranging round with
27 index Round _ Idx k (i) is divided into NSlot_per_Round
k consecutive slots of equal length
𝑘 𝑘
28 𝑇Slot = 𝑁Chap_per_Slot × 𝑇Chap .
29 The slot with index m shall start at time
30 𝑘
𝑈𝑊𝐵𝑡𝑖𝑚𝑒 𝑘
+ 𝑖 × 𝑇Block + 𝑅𝑜𝑢𝑛𝑑𝐼 𝑑𝑥 𝑘 (𝑖) × 𝑇Round
𝑘 𝑘
+ 𝑚 × 𝑇Slot
31 𝑖 = 0,1,2,3, … 0 ≤ RoundI dx 𝑘 (𝑖) ≤ (𝑁Round
𝑘
− 1) 𝑘
𝑚 = 0,1,2, … , (𝑁Slot_per_Round − 1)
32
k
1 • The first N Packets slots (out of NSlot_per_Round
k ) of the ranging round with index
2 Round _ Idx k (i) (slots ) shall be mapped by the initiator and
3 responder-device to transmit and receive UWB ranging packets (see the example in Table
4 20-2). The remaining NSlot_per_Round
k
- N Packets
k slots shall be left unmapped.
5 • The initiator and the responder-device shall send the ranging packets as close as
6 technically possible to the beginning of the mapped slots.
7 • Neither the initiator nor the responder-device shall start transmission before the
8 beginning of a slot.
9 • If a resource conflict between two (or more) ranging sessions in the same RAN occurs,
10 the initiator shall resolve the conflict by prioritization.
11 The MAC grid described above is illustrated in Figure 20-3. In this figure and throughout this
12 section, the following notation is used:
k
13 UWBtime0 (i,s,m) is the UWB time reference for the (m+1)-th slot of the (s+1)-th ranging round of
14 the (i+1)-th ranging block in the k-th ranging session.
15
16 Figure 20-3: Overview of MAC Grid (See Table G- 1).
17
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 445/542
CCC-TS-101
k
N Chap_per_Slot 6 3
k
N Responder 2 3
k
TBlock 288 ms 192 ms
k
TRound 12 ms 8 ms
k
N Round 24 24
k
f Ranging 3.47 Hz 5.21 Hz
21 k
for the session for the (l+1)-th responder, l=0,1,2, …, N Responder -1 . The
22 responders then turn on their UWB receivers and start looking for the first UWB
23 packet.
24 o Upon receiving UWB packets, the responders further use the incoming UWB
25 packets from the initiator to continuously refine the estimation of the MAC time
26 grid under the assumption that each incoming packet transmission was not started
27 by the initiator before the beginning of its dedicated slot.
1 o The time-of-flight (ToF) calculations shall remain unaffected from the MAC grid
2 timings.
3 For the k-th ranging session, the approximate MAC grid and time reference established at the l-th
4 responder is denoted by UWBtime0k
_ Responder#l
which is related to the initiator time reference by
5 k
UWBtime0 _ Responder#l
=UWBtime0
k
+ e (k,l).
6 The error e (k,l) depends on whether an incoming UWB packet ( e (k,l) = eUWB (k,l) ) or an OOB
7 clock synchronization protocol ( e (k,l) = e OOB (k,l) ) is used to approximate the MAC time grid.
8 Characterization of this error and techniques to minimize it are out of scope for this specification.
9 A high-level description of the block timing synchronization process is shown in Figure 20-4.
10 Figure 20-4: Overview of Block Synchronization Approach.
11
k
1 • If the hopping mode is set to “continuous hopping,” the initiator uses the Si+1 -th ranging
2 round
3 Round _ Idx k (i +1) = Si+1
k
4 and Hop _ Flag k (i +1) is set to 1. Again, Hop _ Flag k (i +1) is irrelevant to the receiver
5 and shall be ignored.
6 • If the hopping mode is set to “adaptive hopping,” then at the initiator, the
7 Hop _ Flag k (i +1) and Round _ Idx k (i +1) for the next ranging block (ranging block i+1)
8 shall be set as follows:
9 • If the initiator determines that the round is clean, i.e. no interference and
10 ranging in the current round is successful, the initiator shall stay in the current
11 round and set as:
12 Hop _ Flag k (i +1) = 0 and Round _ Idx k (i +1) = Round _ Idx k (i)
13 • If the initiator determines that there is some interference on the current round
14 or if the ranging is not successful, the initiator shall hop to a different round:
15 Hop _ Flag k (i +1) = 1 and Round _ Idx k (i +1) = Si+1
k
16 The initiator shall send the Hop _ Flag k (i +1) and Round _ Idx k (i +1) for next ranging
17 block to the responder-device as part of the payload packet carrying time stamps
18 Final_Data at the end of the ranging sequence.
19 At the responder-device, the Hop _ Flag k (i +1) and Round _ Idx k (i +1) for subsequent
20 ranging rounds shall be set as follows:
21 if Final_Data packet is received
22 {
23 Hop _ Flag k (i +1) = Final_Data.Hop_Flag
24 if ( Hop _ Flag k (i +1) = 0 )
25 {
26 set Round _ Idx k (i +1) = Round _ Idx k (i)
27 }
28 elseif ( Hop _ Flag k (i +1) = 1)
29 {
30 set Round _ Idx k (i +1) = Si+1
k
31 }
32 }
33 else
34 {
35 set Round _ Idx k (i +1) = Si+1
k
.
1 }
2
3 The initiator may decide to trigger the hopping (i.e. setting Hop_Flag=1) based on the
4 interference level or packet collision rate that it measures over the current exchange and/or the
5 number of responses that it receives back from the responder-device. In general, the exact criteria
6 for triggering hopping at the initiator is out of scope of this specification and is left to each
7 device manufacturer.
8 Note: The only requirement in any such criteria is that if the device does not receive any
9 responses from the responder-device, the device shall trigger hopping.
15 responders in the (s+1)-th ranging round in the (i+1)-th ranging block with NSlot_per_Round
k slots.
16 While the figure shows the MAC protocol according to the MAC timeline relative to the initiator
17 clock and time reference, this protocol shall be carried out according to the respective responder-
18 device’s time reference as described in Section 20.3. Table 20-2 shows the mapping of the
19 k
N Responder UWB ranging packets to the NSlot_per_Round
k slots.
2
3 Table 20-2: Mapping of Slots to UWB Ranging Packets.
Slot Index Mnemonic STS Packet Format Sender
0 Pre-POLL SP0 : Data Packet Initiator
1+ N k
Responder
Response_ N k
Responder
-1 SP3 : RFRAME Responder
4 The MAC protocol sequence under the normal mode of operation (i.e. both initiator and
5 responder-device are engaged in an active ranging session) is as follows:
1 1. The first packet sent by the initiator is a data packet called Pre-POLL message at
k
2 UWBtime0 . Note that, as mentioned above, the ranging starts in ranging round 0 in
3 ranging block 0 by default when a ranging session is started or recovered. This first
4 packet is a SP0 packet. Its payload shall include:
5 a. UWB _ Session _ ID k : ID of the current ranging session.
6 b. ( )
STS _ Index k i, Round _ Idx k (i), POLL : STS index of the succeeding POLL
7 message.
8 c. i: ranging session current block index
9 d. Hop _ Flag k (i) : Hopping flag as set from the previous ranging exchange. If
10 current ranging round is the first ranging round after start or recovery of the
11 ranging session, then Hop _ Flag k (i = 0) is set to ‘0.’ Note that this field is only
12 analyzed by the receiver if the hopping mode is set to “adaptive hopping.”
13 e. Round _ Idx k (i) : Round index for the (i+1)-th ranging block as set in Final_Data
14 packet of the previous ranging exchange (i-th ranging block). If the current
15 ranging round is the first in the started or recovered ranging session, then
16 Round _ Idx k (i = 0) is set to ‘0.’
17 The Pre-POLL message and its parameters are defined in Table 20-3 and Table 20-4. All values
18 of the parameters listed in Table 20-4 shall be encoded in little endian format.
19 Table 20-3: Pre-Poll Request Message and its parameters.
UWB MAC Message UWB MAC Message ID Parameters
Pre-POLL 1 UWB_Session_ID,
Poll_STS_Index,
Ranging_Block,
Hop_Flag,
Round_Index
Hop_Flag 1 0:No Hopping Hop flag for current ranging block as set from the ranging
1:Hopping exchange in the previous ranging block
For no hopping configuration this field is always 0
For continuous hopping configuration this field is always 1
(except for the first ranging block with index 0 after start or
recovery of a ranging session).
Round_Index 2 0-65535 The ranging round index for the current ranging block as set
from the ranging exchange in the previous ranging block. This
field is set to 0 in first ranging block where we always start in
ranging round 0.
k
1 2. After a period of TSlot measured from UWBtime0 k
, the initiator shall start sending a POLL
2 message. This shall be an SP3 type packet (see Section 21).
3 3. Each responder l ( l = 0,..., N Responder
k
- 1) shall send its response packet in its dedicated
4 response slot.
5 a. Each message shall be sent as a SP3 type packet. The index to the STS used is
6 related to the POLL message sent in Step 2 above (see Section 20.6).
7 b. If any of the responders does not receive the POLL message in the current ranging
8 round from the initiator, that responder shall not transmit during its dedicated
9 response slot.
10 4. If at least one valid response has been received by the initiator:
11 ( k
a. After N Responder )
+ 2 slots, the initiator shall send its Final message. This packet is
12 an SP3 packet and it completes the time-of-flight measurements. The initiator
13 may optionally send its Final message together with the following Final_Data
14 packet, if no valid response has been received. In the case the Final message and
15 Final_Data packet is skipped:
16 • The hopping mode for both the initiator and the responder shall be triggered if
17 the adaptive hopping mode is active.
18 • The Frame Counter value shall not be incremented for the skipped Final Data
19 packet.
20 ( k
b. After N Responder )
+ 3 slots, the initiator shall complete the ranging exchange by
21 sending a Final_Data packet to the responder-device. This packet is an SP0 type
22 packet and the payload shall include the following:
23 • UWB_ Session_ ID k : id of the current ranging session.
24 • i: index of the current ranging block.
25 • Hop _ Flag k (i +1) : Hopping flag to be used in ranging block i+1. Note that this field is
26 only relevant if the hopping configuration is set to adaptive hopping.
27 • Round _ Idx k (i +1): ranging round index of the next ranging exchange in ranging block
28 i+1.
29 • ( )
STS _ Index k i, Round _ Idx k (i), FINAL : STS index of the preceding FINAL message.
30 • Final _Time_ Stamp k (i): the time stamp for the Final message. This time stamp shall be
31 calculated as the difference between the RMARKER of the initiator POLL message and
32 the RMARKER of the initiator Final message
33 • N Rx_Responses : Number of received responses in the current ranging exchange.
34 [Time_ Stampsk (l)]: All the ranging measurement time stamps for all responders, up to
k
35 N Responder , whose valid ranging responses have been received at the initiator. The initiator
36 may additionally add the time stamp data of responders where no valid response has been
1 received. The size of the payload depends on the number of added time stamp data. The
2 time stamp data for each responder shall include the following fields:
3 o Responder_Index l, l = 0,1,..., N k - 1, corresponding to responder slot l (slot
Responder
1 All values of the parameters listed in Table 20-6 shall be encoded in little endian format.
2 Additionally, with the above definition of the Final_Data message and with a 127 maximum
k
3 payload size, the maximum number of responders N Responder that can be involved in a single
4 ranging round is 10 responders. In case N Chap_per_Slot
k = 24, then the maximum number of
5 responders N Chap_per_Slot
k in a single ranging round is limited to 7 due to the maximum time stamp
6 value for the Final message. A vehicle may have any number of responders Nv (physical and/or
7 logical) and this number may be >10 responders. However, the vehicle shall set the value of the
k
8 number of responders it wants to involve in each ranging round N Responder to a number that is less
9 than or equal to10 in the ranging session setup procedure. It is up to the vehicle to determine
10 which set of its responders it will involve in the ranging exchange in each ranging round.
11 The Ranging_Status_Responder_l parameter uses the values shown in Table 20-7.
12 Table 20-7: Ranging Status of a Responder.
Ranging Status Value Description
Success 0x0 Successful receipt and transmission of a packet
Transaction overflow 0x1 RESPONSE SP3 frame from this responder cannot be
processed by the device
Transaction expired 0x2 No RESPONSE SP3 frame was received from this responder
25 • {
Slot_BitMask: N Chap_per_Slot } Initiator
list of slot durations supported by the initiator for
26 the session expressed as specified in Section 19.3.1.4 and Table G-1. Note that
27 initiator may prefer to use slot durations that are not necessarily the minimum (by
28 excluding the minimum N Chap_per_Slot from the list) to accommodate other constraints
29 it may have, such as co-existence.
(N )
k
TBlock 1 10.4166667
11 k
N RAN_S = k
³ N RAN
k
and k
f Ranging = k
= k
Hz
TBlock_Min RAN_S
T Block
N RAN_S
12 • Number_Chaps_per_Slot N Chap_per_Slot
k : shortest slot duration that is common between
13 {
slot durations supported by initiator N Chap_per_Slot } Initiator
and slot durations supported
14 {
by the responder-device N Chap_per_Slot } Responder
:
15
k
N Chap_per_Slot ({
= min NChap_per_Slot } ∩{N
Initiator
}
Chap_per_Slot Responder )
16 • Number_Slots_per_Round NSlot_per_Round
k : responder-device selects the number of slots
17 k
(
that is greater than or equal to N Responder )
+ 4 out of all possible values of slots
18 corresponding to N Chap_per_Slot
k (see Table G-1 for details).
19 • SYNC_Code_Index {SYC_IDX}Responder : list of UWB preamble sequences that the
20 responder-device selected to use. This set is a subset of the list sent by the initiator.
21 • Hopping_Config_Mask: { H _ Config _ Seq}Responder bitmask indicating the hopping
22 configuration and hopping sequences selected by responder-device.
23 4. Responder-device uses the “Ranging Session Setup Request (RSS-RQ)” message as
24 defined in Section 19.3.1.5 to send the following to the initiator:
25 a. N RAN_S
k k
, N Chap_per_Slot , N Responder
k , NSlot_per_Round
k , {SYC_IDX}Responder ,
26 { H _ Config _ Seq} Responder
k
27 5. Initiator selects the number of rounds per block for the ranging session N Round as
𝑘
𝑘
288 × 𝑁𝑅𝐴𝑁_𝑆
28 𝑁𝑅𝑜𝑢𝑛𝑑 = 𝑘 𝑘
𝑁𝐶ℎ𝑎𝑝_𝑝𝑒𝑟_𝑆𝑙𝑜𝑡 × 𝑁𝑆𝑙𝑜𝑡_𝑝𝑒𝑟_𝑅𝑜𝑢𝑛𝑑
29
1 Appendix G.1 shows a list of all valid/possible numbers of rounds for different combinations of
2 (N k
Chap_per_Slot
k
)
, NSlot_per_Round for each 96 ms of block duration.
3 6. Initiator selects the preamble SYNC code index SYNC _ Code _ Index k . See Section
4 21.4.1 for the definition of BPRF SYNC.
5 7. Initiator uses the “Ranging Session Setup - Response (RSS-RS)” message as defined in
6 Section 19.3.1.6 to send the following back to the responder-device:
k
7 a. STS _ Index0k , UWBtime0 , HOP _ Key _ RW k
8 b. SYNC _ Code _ Index k
9 Figure 20-6 shows an example of the negotiation handshake used to set the MAC parameters.
10 The following applies to MAC parameters negotiation:
11 1. N Chap_per_Slot
k
= 8 is mandatory and shall be supported by all devices.
6
7 20.5.4.1 MHR Field
8 The contents of the MHR field according to Section 7.2 of [31] are defined in Table 20-8. All
9 values of the parameters listed in Table 20-8 shall be encoded in little endian format.
10 Table 20-8: The Contents of the MHR Field.
MAC parameter Length Description
(bytes)
Frame Control 2 Describes how the MAC frame is configured
Sequence Number 0 Sequence number is not used. Sequence Number Suppression bit field in the
Frame Control shall be set to 1
Destination PAN ID 0 Destination PAN ID not present
Auxiliary Security Header 10 Describes security configuration for data payload encryption and message
identification authentication (MIC)
Vendor Specific Header IE 7 Used to signal the UWB message ID and the UWB message length
11 The Frame Control field depends on the specific MAC header configuration. See [31] for more
12 information about the individual parameters and their definitions. The Frame Control field is
13 defined in Table 20-9.
14 Table 20-9: The Contents of the Frame Control Field.
Frame Control Length Value Description
(bits)
Frame Type 3 0b001 (data) Data frame being transmitted
Source Addressing Mode 2 0b0 Source PAN ID and Source Address field are not present
1 The Auxiliary Security Header defines the security configuration. The Auxiliary Security Header
2 is defined in Table 20-10. Note that the Auxiliary header is not relevant to SP3 packets (Poll and
3 Final messages) since SP3 packets do not get security processing due to the fact they do not
4 carry MAC data frames (payload, MHR, and MFR). Therefore, The Auxiliary Security header is
5 applicable to SP0 packets only (Pre-Poll and Final_Data). All values of the parameters listed in
6 Table 20-10 shall be encoded in little endian format.
7 Table 20-10: The Contents of the Auxiliary Security Header.
Auxiliary Security Length Value Description
Header (bytes)
Security Control Field See below
Security Level 3 bits 0b110 (ENC-MIC-64) Security level for authentication of MAC header
and data payload
Key Identifier Mode 2 bits 0b10, Key is determined Key identification mode
explicitly from the 4-byte Key
Source field and Key Identifier
field
Frame Counter 1 bit 0b0, enable frame counter Frame counter is suppressed or not
Suppression
ASN in Nonce 1 bit 0b0, ASN in not in nonce Is ASN in nonce or not
Frame Counter 4 bytes 0x00000000-0xFFFFFFFF Counter that increments for each transmitted
packet from a source
Key Identifier Field See below
8 The content of the Header IE defined the Vendor Specific Header IE which shall be used to
9 signal the UWB message ID and the UWB message length carried by the corresponding UWB
10 packet.
11 The Vendor Specific Header IE is defined in Table 20-11. All parameter values listed in Table
12 20-11 shall be encoded in little endian format.
Vendor OUI 3 bytes 0x04DF69 OUI of Car Connectivity Consortium per IEEE
registration authority (See http://standards-
oui.ieee.org/oui.txt).
Vendor Specific 2 Bytes Byte 1: 0x00 - 0xFF Byte 1: UWB MAC message ID of message sent in
Information Byte 2: 0x00 - 0xFF this UWB packet
0x01: Pre-Poll UWB MAC message ID
0x02: Final_Data UWB MAC message ID
0x03-0xFF: Reserved for future use
1 of a ranging session within the MAC layer framework. The basic principle of the STS
2 incrementation is shown in Figure 20-8.
3 Figure 20-8: Basic Principles of STS Incrementation.
6 supported number of rounds in the current design but is used in this example for illustration
7 purpose only.)
16 ( )
STS _ Index k i = 0, Round _ Idx k (i = 0) = 0 = STS _ Index0k
17 4. Within a ranging round, the STS index increments in every slot even if that slot is
18 unmapped (i.e. not used).
19 5. The incrementation scheme is applied for every ranging round (even if it is not used).
20 This results in:
21 a. The STS index is incremented by NSlot_per_Round
k in every ranging round.
22 b. The STS index is incremented by NSlot_per_Round
k
´ N Round
k in every ranging block.
23 6. The STS index is incremented for all slots in the round. However, data packets (Pre-
24 POLL and Final_Data) reference the STS index in their payload as follows:
25 a. Pre-POLL message shall carry the reference to the STS index that is used in the
26 following POLL message.
27 b. Final_Data message shall refer to the STS index of the preceding FINAL
28 message.
15
2 21.1 Introduction
3 The UWB PHY uses a waveform based on an impulse radio signal using band-limited pulses.
4 UWB PHY is primarily used for ranging but may also be used for data communication. UWB
5 PHY described in this specification is based on HRP UWB PHY in [33].
6 This section describes interoperable enhanced ranging devices (ERDEVs) featuring enhanced
7 immunity to attack. The main enhancement for secure time of flight is the inclusion of a
8 Scrambled Timestamp Sequence (STS) in the basic PPDU format. Note that the STS is included
9 in the basic PPDU format in the BPRF mode as specified in [33].
10 The IEEE standard defines a very flexible UWB PHY. The flexibility in IEEE standard is offered
11 by adaptation of parameters like preamble for synchronization (SYNC) lengths, preamble codes,
12 Start of Frame Delimiter (SFD) lengths/codes, pulse repetition frequencies (PRFs), and data
13 rates. This specification, however, does not require to implement all the parameters and modes
14 that are specified in [33]. Please refer to appropriate sections on mandatory and optional PHY
15 modes for secure ranging, ERDEVs on both sides of the link shall pre-negotiate the specific
16 parameters that will be used for a secure ranging session. The negotiations of secure ranging
17 parameters can be done at higher layers or using Bluetooth LE.
21
2
3 Figure 21-3: SP0
4
5 SP3 is intended for use cases where the participants in the secure ranging exchange are known to
6 each other such that information about the source and/or the destination are implicit in the
7 knowledge of what STS is used for transmission and reception between the connected devices,
8 respectively.
9 A nominal mean PRF of at least 62.4 MHz shall be used for all packets during a ranging session.
10 Nominal mean PRFs lower than 62.4 MHz are not required for ERDEVs.
(segment × symbols)
UWB Channel (IEEE
Mandatory/ Optional
corresponding IEEE
UWB configuration
(phyHrpUwbSfd-
(phyHrpUwbSfd-
(IEEE 802.15.4)
phyHrpUwbPhr-
phyHrpUwbPsr
phyHrpUwbPsr
IEEE802.15.4z
preamble code
corresponding
DataRate
802.15.4)
Selector)
Selector)
SYNC
SFD
SFD
STS
STS
9,10,11,12 ternary ternary DRBM- 0.85 6.81
0 5, 9 Optional: M N/A 64 1× 64 BPRF #1 64 no
(0) (0) _LP Mbps Mbps
13-16, 21-24
9,10,11,12 Device: M binary
BPRF binary DRBM- 0.85 6.81
1 5, 9 Optional: 64 1× 64 BPRF #2 64 no
Vehicle: O #4 (2) (2) _LP Mbps Mbps
13-16, 21-24
2 BPRF SYNC
3 SYNC is used to aid receiver algorithms related to AGC settling, timing acquisition, coarse and
4 fine frequency recovery, packet and frame synchronization. [31] defines four mandatory
5 preamble lengths for SYNC: a default preamble, a short preamble, a medium preamble, and a
6 long preamble. The length of default preamble is 64 symbols, short preamble is 16 symbols,
7 medium preamble is 1024 symbols, and long preamble is 4096 symbols. The PHY as specified in
8 this specification shall support 64 symbols short preamble.
9 ERDEV in this specification, shall support ternary code with length 127, even though, ternary
10 code with length 127 is optional in [31]. Each preamble code is a sequence of code symbols
11 drawn from a ternary alphabet {–1,0,1} and is selected for use because of their perfect periodic
12 autocorrelation properties.
13 In this specification, the ERDEV shall operate on channels 5 and 9, and hence the support for the
14 four length-127 ternary code sequences shown in Table 21-2 are mandatory, though they are
15 optional in [31].
16 Table 21-2: The Mandatory Length-127 Ternary Code Sequences.
Code index Ternary Code Sequence UWB channels
9 +00+000-0--00--+0+0+00-+-++0+0000++-000+00-00--0-+0+0--0-+++0++000+- 5,9
0+00-0++-0+++00-+00+0+0-0++-+--+000000+00000-+0000-0-000--+
10 ++00+0-+00+00+000000-000-00--000-0+-+0-0+-0-+00000+-00++0-0+00--+00++- 5,9
+0+-0+0000-0-0-0-++-+0+00+0+000-+0+++000----+++0000+++0--
11 -+-0000+00--00000-0+0+0+-0+00+00+0-00-+++00+000-+0+0-0000+++++-+0+-- 5,9
0+-0++--0-000+0-+00+0+----000-000000-+00+-0++000++-00++-0-0
12 -+0++000000-0+0-+0---+-++00-+0++0+0+0+000-00-00-+00+-++000-+-0-++0- 5,9
0++++0-00-0++00+0+00++-00+000+-000-0--+0000-0000--0+00000+--
1 Support for code indexes 13-16 and 21-24 ternary code sequences as specified in [31] is optional
2 in this specification.
3
4 BPRF SFD
5 SFD is added to the UWB frame to establish frame timing at the receiver. Only length 8 SFD is
6 used in this specification:
7 The short ternary SFD shall be [0 +1 0 –1 +1 0 0 –1] spread by the preamble symbol Si, where
8 the leftmost bit shall be transmitted first in time. This is as specified in [31]. To improve
9 performance, the binary sequence: [ -1 -1 -1 +1 -1 -1 +1 -1] should be supported per [33].
22 BPRF PHR
23 A PHR, as shown in Figure 21-4, shall be added after the SHR preamble. The PHR consists of
24 19 bits and conveys information necessary for a successful decoding of the packet to the
25 receiver. The PHR contains information about the data rate used to transmit the PSDU, the
26 duration of the current frame’s preamble, and the length of the frame payload. Additionally, six
27 parity check bits are used to further protect the PHR against propagation channel errors.
28 Figure 21-4: PHR bit assignment.
29
30 It is mandatory for RDEVs and ERDEVs to support transmission and reception of PRF64 PHRs
31 at 850 Kbit/s data rate. The BPRF PHR shall use Single Error Correct Dual Error Detect
32 (SECDED) encoding followed by systematic convolutional encoder with generator polynomial
33 G(2,5) as shown in Figure 21-1. The SECDED field is a set of six parity check bits that is used to
34 protect the PHR from errors caused by noise and channel impairments. The SECDED bits are a
35 simple Hamming block code that enables the correction of a single error and the detection of two
1 errors at the receiver. The SECDED bit values depend on PHR bits 0–12 and are computed as
2 follows:
3 b18 = XOR(b1, b0, b8, b6, b4, b3, b10, b11)
4 b17 = XOR(b0, b6, b5, b3, b2, b9, b10, b12)
5 b16 = XOR(b1, b8, b7, b3, b2, b9, b10)
6 b15 = XOR(b8, b7, b6, b5, b4 ,b9, b10)
7 b14 = XOR(b12, b11)
8 b13 = XOR(b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b14, b15, b16, b17, b18)
13
14 The data field shall be formed as follows:
15 • Encode the PSDU using systematic Reed-Solomon block code, which adds 48 parity bits
16 • Encode the output of the Reed-Solomon block code using a systematic convolutional
17 encoder. If the Viterbi rate for the modulation is defined as one, then the convolutional
18 encoder is bypassed
19 • Spread and modulate the encoded block using BPM-BPSK modulation
27
28 where:
29 β = roll-off factor with a value of 0.45 ±0.05
30 Tp = Pulse duration, which is inverse of the chip frequency (1/499.2 MHz)
1 Finite impulse response (FIR) samples of PulseShape 0x0 using β of 0.45 with 32x oversampling
2 per chip and total span of 8 chips are included in Appendix H as informative reference.
17 PulseShape Combinations
18 Compliant receivers shall be able to receive and suitably process both symmetrical and
19 precursor-free pulses. It is up to the implementer whether the same receiver configuration is used
20 for PulseShape 0x2 and PulseShape 0x1, or whether reception of PulseShape 0x2 is explicitly
21 optimized via a separate receiver configuration.
22 Possible transmitter PulseShape combinations (PulseShape_Combo) for the initiator and
23 responder are shown in Table 21-4. The responder’s and initiator’s receive configurations shall
24 be set according to the PulseShape selections made by the initiator’s and responder’s
25 transmitters, respectively.
26 Table 21-4: Overview of PulseShape_Combo values and the associated transmit pulse shapes.
PulseShape_Combo Transmit PulseShape
Initiator Responder
0x00 0x0 0x0
3 21.7 UWB RF
22 clk_ref tolerance
23 For the device, clk_ref tolerance should be regulated within ±10 ppm over operation conditions.
24 For the vehicle, clk_ref tolerance should be regulated within ±15 ppm over operation conditions.
25
2 This section addresses the security requirements inherent (applicable and enforced) to the UWB-
3 related functionality of the Digital Key feature. The device OEM shall use NFC as a fallback
4 mechanism in case correct operation of the UWB and the BLE module is disturbed; Information
5 about the fallback mechanism should be provided by the device OEM to the user.
6 22.1 Cryptography
7 This section details the various cryptographic functions identified in the various security
8 functions covered earlier in the document.
21 The 32-bit counter is initialized with phyHrpUwbStsVCounter for each STS generation, that
22 means for each slot. The 32-bit counter is incremented by one for each 128-bit chunk of the STS,
23 that means 31 increments for a 4096-bit long STS.
24 SaltedHash[0:128], STSIndex[0:32], and Counter[0:32] (the same one as the IEEE 32-bit
25 counter, initialized at 0) are used to derive phyHrpUwbStsVUpper96 and
26 phyHrpUwbStsVCounter.
1 • K (Key) = mUPSK1[0:128]
2 o N (Nonce) = Source Long Address | Frame Counter | Nonce Security Level as
3 described in Section 9.3.2.1 of [31]
4 o Incrementing Frame Counter, STS_Index in payload
5 Note: The key mUPSK1 is static for the ranging session.
20
Copyright © 2024 Car Connectivity Consortium LLC. All rights reserved.
Confidential
Digital Key Technical Specification Release 3 Page 472/542
CCC-TS-101
1 Cryptography:
2 mURSK[128:128]
3 = CMAC(URSK, 0x00000001 || 0x5552534B || 0x00 || 0x000000 || 0x00000100)
4 mURSK[0:128]
23 dURSK[0:128]
24 = CMAC(URSK_KT, 0x00000001 || 0x5552534B || 0x00 || SaltedHash ||
25 0x000000 || 0x00000080)
26 dUDSK[0:128]
27 = CMAC(URSK_KT, 0x00000001 || 0x5544534B || 0x00 || SaltedHash ||
28 0x000000 || 0x00000080)
19 The following method shall be used to flip the upper bit if the calculated UAD matches the
20 reserved value:
21 function SetUpperBitToZeroIfReserved(bytes [X…0]){
22 if (bytesAreReserved(bytes)){
23 bytes[X…X-7] = bytes[X…X-7] & 0x7f
24 }
25 return bytes
26 }
1 DestinationShortAddress[0:16] = SetUpperBitToZeroIfReserved(UAD[80:16])
2 SourceLongAddress[0:64] = SetUpperBitToZeroIfReserved(UAD[16:64])
3 CMAC = AES256-CMAC as PRF, r = 32, h=128
4 Reference: Section 5.1 of [4] KDF in Counter Mode
5 Note: ASCII (0x554144) = “UAD”
6 The latest STSIndex0 passed is the one negotiated during session setup or recovery.
34 Re-synchronization
35 The re-synchronization of the anchors happens on the vehicle side.
36 This mechanism involves the mUPSK1, the STS_index, and a nonce (calculated from data in the
37 MAC header): the device performs the encryption of the frame (SP0) and the vehicle decrypts.
1 23 REFERENCES
2 The documents listed in this section are included in requirements made in the body of this
3 specification. Knowledge of their contents is required for the understanding and implementation
4 of this specification. If a listing includes a date or a version identifier, only that specific version
5 of the document is required. If the listing includes neither a date nor a version identifier, the
6 latest version of the document is required. External references referred herein should apply to the
7 latest version provided they are backward compatible with the version at the time of writing and
8 are not violating the implementation specified in this specification.
9
10 [1] ISO/IEC 7816-4: Fourth Edition May 2020
11 [2] ISO 8601-1:2019: Date and time – Representations for information interchange – Part 1:
12 Basic rules
13 [3] RFC 5280 - PKIX Certificate and CRL Profile - May 2008
14 [4] NIST SP 800-108 - Recommendation for Key Derivation Using Pseudorandom Functions
15 - May 2005 (Updated August 2022 as NIST SP 800-108r1)
16 [5] NIST SP 800-38B - Recommendation for Block Cipher Modes of Operation: The CMAC
17 Mode for Authentication – May 2005 (Updated October 2016)
18 [6] BSI TR-03111 - Elliptic Curve Cryptography - Version 2.0
19 [7] GPC_SPE_014 - GlobalPlatform - Secure Channel Protocol 03 - Amendment D - Version
20 1.1.1 or later version
21 [8] FIPS PUB 186-4 - Digital Signature Standard - July 2013
22 [9] NIST SP 800-38A - Block Cipher Modes of Operation: Methods and Techniques - 2001
23 [10] Network Working Group Internet-Draft: SPAKE2+, an Augmented PAKE, draft-bar-
24 cfrg-spake2plus-00, Mar 9, 2020
25 [11] Internet Engineering Task Force (IETF): The Scrypt Password-Based Key Derivation
26 Function (RFC 7914), August 2016
27 [12] Internet Engineering Task Force (IETF): Randomness Requirements for Security (RFC
28 4086), June 2005
29 [13] RFC 5869 - HMAC-based Extract-and-Expand Key Derivation Function - May 2010
30 [14] RFC 5480 - ECC SubjectPublicKeyInfo Format - October 2009
31 [15] GlobalPlatform Card Technology – Confidential Card Content Management, Card
32 Specification v2.3 Amendment A Version 1.2 (or higher)
33 [16] NFC Analog Technical Specification 2.1 (https://nfc-forum.org/our-work/specifications-
34 and-application-documents/) or later version.
35 [17] NFC Digital Protocol Technical Specification 2.1 (https://nfc-forum.org/our-
36 work/specifications-and-application-documents/) or later version.
37 [18] NFC Activity Technical Specification 2.0 (https://nfc-forum.org/our-work/specifications-
38 and-application-documents/) or later version.
52 FEA8CEB826E1FB10E8034E9324464C10BF1C41268230AF76BFFE3E7C5D00CF4A
53 9304415D9569
54 sha256 hash output: 9A2A933D4B90F5A9CFB0B5524E36B10D3669B91F2526F6C0FC2369BD98A327A0
55
56 >>80810000429E40CCE7447AC8D0112C24AE4A261AF63EBA7B585126FFA4CE4C06
57 1D11D97B98151CB7D85BDCCA539D152B544B97647DD5CD38DCBDBD82EF93F5B5
58 796FFF3C2C0FD700
59
60 endpoint: received AUTH1 command
61 generate authentication hash:
62 sha256 hash input: 4D088888888888888888862043D605526999F032E08F314F22EBCE051D1DAE53
63 DC71F1C4D614B0337BB17F208720F98CCA31651AD2E63266144B2450FD6081D8
64 FEA8CEB826E1FB10E8034E9324464C10BF1C41268230AF76BFFE3E7C5D00CF4A
65 9304415D9569
66 sha256 hash output: 9A2A933D4B90F5A9CFB0B5524E36B10D3669B91F2526F6C0FC2369BD98A327A0
67 endpoint: successful signature verification
68 Derive Kdh:
69 ephemeral public key X: F98CCA31651AD2E63266144B2450FD6081D8FEA8CEB826E1FB10E8034E932446
70 ephemeral public key Y: CAD19D201062DD1C7CB0BB293BF16A4BEFB2ED500977E7197E01F26906E39B5F
71 ephemeral private key: E585C9EE89075F795452879AC38261ED0667C6396A34914DEE0681E8DC22A182
72 transaction identifier: BF1C41268230AF76BFFE3E7C5D00CF4A
73 ecdh shared secret: 5A2E155294C7D0074DAE3E133D20A6DA60F0A15A02A3A909268BC15D160323FA
74 sha256 input: 5A2E155294C7D0074DAE3E133D20A6DA60F0A15A02A3A909268BC15D160323FA
75 00000001BF1C41268230AF76BFFE3E7C5D00CF4A
76 derived kdh: 18B0CDC20B916B22D2E5D87FDA544D7BD809D171DA00E103A72DF0FF5E5CD185
77 Key Derivation:
78 K: 18B0CDC20B916B22D2E5D87FDA544D7BD809D171DA00E103A72DF0FF5E5CD185
79 endpoint ephemeral public key X: 43D605526999F032E08F314F22EBCE051D1DAE53DC71F1C4D614B0337BB17F20
80 reader ephemeral public key X: F98CCA31651AD2E63266144B2450FD6081D8FEA8CEB826E1FB10E8034E932446
81 transaction identifier: BF1C41268230AF76BFFE3E7C5D00CF4A
82 interface byte: 5E
83 flag: 0000
84 HKDF output: 65B3C36092CC8B15878DC90E0C3A475D4DC72A2325377760B9B1E1774CBE7ED8
85 46BD16584973BEE37BA5732F3628411B
86 CAC033EE373EBFE533DB574C5C8477A7
87 Kenc: 65B3C36092CC8B15878DC90E0C3A475D
88 Kmac: 4DC72A2325377760B9B1E1774CBE7ED8
89 Krmac: 46BD16584973BEE37BA5732F3628411B
90 Key Derivation:
91 K: 18B0CDC20B916B22D2E5D87FDA544D7BD809D171DA00E103A72DF0FF5E5CD185
92 endpoint ephemeral public key X: 43D605526999F032E08F314F22EBCE051D1DAE53DC71F1C4D614B0337BB17F20
93 reader ephemeral public key X: F98CCA31651AD2E63266144B2450FD6081D8FEA8CEB826E1FB10E8034E932446
94 transaction identifier: BF1C41268230AF76BFFE3E7C5D00CF4A
95 interface byte: 5E
96 flag: 0000
97 HKDF output: 0C0E989932DDE515E6D8409A4628DE5650D43135413724FD097EDFC3332CF0AC
98 Kpersistent: 0C0E989932DDE515E6D8409A4628DE5650D43135413724FD097EDFC3332CF0AC
99 generate authentication hash:
100 sha256 hash input: 4D088888888888888888862043D605526999F032E08F314F22EBCE051D1DAE53
101 DC71F1C4D614B0337BB17F208720F98CCA31651AD2E63266144B2450FD6081D8
102 FEA8CEB826E1FB10E8034E9324464C10BF1C41268230AF76BFFE3E7C5D00CF4A
103 93044E887B4C
104 sha256 hash output: 48BCCE4843E4E87A01AEC830A1AAF6E7D1380D950C468F81BB5AD4CF40705040
105 appending confidential mailbox content: 00000000000000000000000000000000
106 appending private mailbox content: 00000000000000000000000000000000
107 wrap response:
108 plaintext:4E04001122339E407D2E38CB7A01825EF105E5B53166BE8E85D24243A1A5D276
109 7737297E733AD2BA3FECD02D38128B2D42794BC13C03028D58DED27B298115D5
110 82BE41FC38D38F424A10000000000000000000000000000000004B1000000000
111 000000000000000000000000
112 ICV:4AEA75139218A8AEF7B3BC0770A60E0F
113 cleartext payload:4E04001122339E407D2E38CB7A01825EF105E5B53166BE8E85D24243A1A5D276
114 7737297E733AD2BA3FECD02D38128B2D42794BC13C03028D58DED27B298115D5
115 82BE41FC38D38F424A10000000000000000000000000000000004B1000000000
116 00000000000000000000000080000000
117 MAC chaining value:00000000000000000000000000000000
118 cipher|mac:605320BA70CC086F962A7D7F015815A88AC76A192C57B50B5070DAFC2FD4CD59
119 11ACC2D748620622BAE23AAAC8E6D88A2C0A4FFF5D2DFCEE88F2190EA861E709
120 053D72EA7C9FFEACEEDC0471EEFE6CF5624E5505374FE40BF8A63FF7DDD069B8
121 A45565897E697EABCCB2FA1C5CB4AAC733A5C18FA30112F1
122
123 <<605320BA70CC086F962A7D7F015815A88AC76A192C57B50B5070DAFC2FD4CD59
124 11ACC2D748620622BAE23AAAC8E6D88A2C0A4FFF5D2DFCEE88F2190EA861E709
125 053D72EA7C9FFEACEEDC0471EEFE6CF5624E5505374FE40BF8A63FF7DDD069B8
126 A45565897E697EABCCB2FA1C5CB4AAC733A5C18FA30112F19000
127
128 Derive Kdh:
129 ephemeral public key X: 43D605526999F032E08F314F22EBCE051D1DAE53DC71F1C4D614B0337BB17F20
130 ephemeral public key Y: 3F95D4C06AB8966D2B9A0D3C4BC446DB9343EBF27F9EF811F242A37118AD4F10
131 ephemeral private key: B0FBA5FB966FDD3BE4096FA65307AB0A7A3BB914625BBFD3CB57DAD9183E19CB
132 transaction identifier: BF1C41268230AF76BFFE3E7C5D00CF4A
133 ecdh shared secret: 5A2E155294C7D0074DAE3E133D20A6DA60F0A15A02A3A909268BC15D160323FA
134 sha256 input: 5A2E155294C7D0074DAE3E133D20A6DA60F0A15A02A3A909268BC15D160323FA
135 00000001BF1C41268230AF76BFFE3E7C5D00CF4A
136 derived kdh: 18B0CDC20B916B22D2E5D87FDA544D7BD809D171DA00E103A72DF0FF5E5CD185
137 Key Derivation:
138 K: 18B0CDC20B916B22D2E5D87FDA544D7BD809D171DA00E103A72DF0FF5E5CD185
139 endpoint ephemeral public key X: 43D605526999F032E08F314F22EBCE051D1DAE53DC71F1C4D614B0337BB17F20
140 reader ephemeral public key X: F98CCA31651AD2E63266144B2450FD6081D8FEA8CEB826E1FB10E8034E932446
141 transaction identifier: BF1C41268230AF76BFFE3E7C5D00CF4A
142 interface byte: 5E
143 flag: 0000
144 HKDF output: 65B3C36092CC8B15878DC90E0C3A475D4DC72A2325377760B9B1E1774CBE7ED8
145 46BD16584973BEE37BA5732F3628411B
146 CAC033EE373EBFE533DB574C5C8477A7
147 Kenc: 65B3C36092CC8B15878DC90E0C3A475D
148 Kmac: 4DC72A2325377760B9B1E1774CBE7ED8
149 Krmac: 46BD16584973BEE37BA5732F3628411B
150 Key Derivation:
151 K: 18B0CDC20B916B22D2E5D87FDA544D7BD809D171DA00E103A72DF0FF5E5CD185
152 endpoint ephemeral public key X: 43D605526999F032E08F314F22EBCE051D1DAE53DC71F1C4D614B0337BB17F20
153 reader ephemeral public key X: F98CCA31651AD2E63266144B2450FD6081D8FEA8CEB826E1FB10E8034E932446
154 transaction identifier: BF1C41268230AF76BFFE3E7C5D00CF4A
155 interface byte: 5E
156 flag: 0000
157 HKDF output: 0C0E989932DDE515E6D8409A4628DE5650D43135413724FD097EDFC3332CF0AC
158 Kpersistent: 0C0E989932DDE515E6D8409A4628DE5650D43135413724FD097EDFC3332CF0AC
159 unwrap response:
160 cipher|mac:605320BA70CC086F962A7D7F015815A88AC76A192C57B50B5070DAFC2FD4CD59
161 11ACC2D748620622BAE23AAAC8E6D88A2C0A4FFF5D2DFCEE88F2190EA861E709
162 053D72EA7C9FFEACEEDC0471EEFE6CF5624E5505374FE40BF8A63FF7DDD069B8
163 A45565897E697EABCCB2FA1C5CB4AAC733A5C18FA30112F1
164 plaintext:4E04001122339E407D2E38CB7A01825EF105E5B53166BE8E85D24243A1A5D276
165 7737297E733AD2BA3FECD02D38128B2D42794BC13C03028D58DED27B298115D5
166 82BE41FC38D38F424A10000000000000000000000000000000004B1000000000
167 000000000000000000000000
68 AAA090CC271484E68BB5B6EE18655AAFA5B82D564DCD9961DEE2830C6550E1C1
69 Kcmac: 960BA7366865139D9EFAEFB53B8CB187
70 Kenc: 13736C529481B67615811D4EA9F49650
71 Kmac: AAA090CC271484E68BB5B6EE18655AAF
72 Krmac: A5B82D564DCD9961DEE2830C6550E1C1
73 generate cryptogram:
74 Kcmac: 960BA7366865139D9EFAEFB53B8CB187
75 endpoint public key X: 07B857B9B7F1147E20F4DBE6723CE5F46EF8670CBA20F56297F515C8265E4E42
76 vehicle public key X: F47EB42A771052580C086EFDAAA3084AA3FF7A67CE23393A0373C63487DF1A63
77 vehicle identifier: 8888888888888888
78 transaction identifier: F92F7260B588238C1E2A4825AD4D7D2E
79 input of AES-CMAC: 00000000000000000000003200008001F47EB42A771052580C086EFDAAA3084A
80 A3FF7A67CE23393A0373C63487DF1A6307B857B9B7F1147E20F4DBE6723CE5F4
81 6EF8670CBA20F56297F515C8265E4E42F92F7260B588238C1E2A4825AD4D7D2E
82 8888888888888888
83 cryptogram: E5B79C3D703D1BE1B26C2A999DB2975B
84 vehicle: matching cryptogram found
1
208 plaintext:0088030000058A070000FFEEEEDDBB89030000058B070000AAEEEE33CC
209 wrap response:
210 plaintext:05AAAAAAAAAA05BBBBBBBBBB
211 ICV:8A8829B8A956A893BE53B4A0E050E8FC
212 cleartext payload:05AAAAAAAAAA05BBBBBBBBBB80000000
213 MAC chaining value:8B6EC24F1A0591AAF0C1AB48C49029B5
214 cipher|mac:56C5CA7C53338B7927DA2B6E8113FDCD5189CB0DF19EDD4B
215
216 <<56C5CA7C53338B7927DA2B6E8113FDCD5189CB0DF19EDD4B9000
217
218 unwrap response:
219 cipher|mac:56C5CA7C53338B7927DA2B6E8113FDCD5189CB0DF19EDD4B
220 plaintext:05AAAAAAAAAA05BBBBBBBBBB
38 generalTime GeneralizedTime
39 }
40
41 UniqueIdentifier ::= BIT STRING
42
43 SubjectPublicKeyInfo ::= SEQUENCE
44 {
45 algorithm AlgorithmIdentifier,
46 subjectPublicKey BIT STRING
47 }
48
49 Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
50
51 Extension ::= SEQUENCE
52 {
53 extnID OBJECT IDENTIFIER,
54 critical BOOLEAN DEFAULT FALSE,
55 extnValue OCTET STRING
56 -- contains the DER encoding of an ASN.1 value
57 -- corresponding to the extension type identified
58 -- by extnID
59 }
60
61 AlgorithmIdentifier ::= SEQUENCE
62 {
63 algorithm OBJECT IDENTIFIER,
64 parameters ANY DEFINED BY algorithm OPTIONAL
65 }
66
67 Name ::= CHOICE { -- only one possibility for now --
68 rdnSequence RDNSequence }
69
70 RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
71
72 RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue
73
74 AttributeTypeAndValue ::= SEQUENCE
75 {
76 type AttributeType,
77 value AttributeValue
78 }
79
80 AttributeType ::= OBJECT IDENTIFIER
81
82 AttributeValue ::= ANY -- DEFINED BY AttributeType
1
8 keyEncipherment (2),
9 dataEncipherment (3),
10 keyAgreement (4),
11 keyCertSign (5),
12 cRLSign (6),
13 encipherOnly (7),
14 decipherOnly (8)
15 }
1 The device OEM Server shall ensure consistency of endpoint issuer CN format and instance
2 CA subject CN format (both either UTF8 or printableString).
3 The issuer CN format (either UTF8String or PrintableString) in the external CA certificate shall
4 be the same as the subject CN format in the vehicle OEM root certificate.
5 The subject CN format (either UTF8String or PrintableString) in the external CA certificate shall
6 be the same as the subject CN format in the device OEM root certificate.
7 Table A-1: Issuer and Verifier Rules Common to External CA, Instance CA and Endpoint
Item Verifier Rule Issuer Rule
tbsCertificate.version Shall reject if not v3. Shall issue only v3 certificates.
tbsCertificate.serialNumber May verify only if the verifier has the Shall be compliant with RFC 5280 rules
capability to strictly follow RFC 5280 for conforming CAs.
verification rules.
tbsCertificate.signature.algorithm May verify only if the verifier has the Shall contain defined OID in algorithm
capability to strictly follow RFC 5280 attribute. Shall not contain parameters
verification rules. attribute.
tbsCertificate.(issuer | subject) May verify only if the verifier has the Shall issue certificates chain with valid
rdnSequence capability to strictly follow RFC 5280 issuer/subject name chaining as per RFC
path validation and issuer/subject name verification rules. 5280.
chaining
tbsCertificate.(issuer | subject) Shall accept multiple Shall contain only 1
rdnSequence RelativeDistinguishedName. RelativeDistinguishedName.
tbsCertificate.(issuer | subject) Shall accept multiple The RelativeDistinguishedName shall
rdnSequence.[].[].type AttributeTypeAndValue per contain only 1 AttributeTypeAndValue.
RelativeDistinguishedName.
tbsCertificate.(issuer | subject) May verify only if the verifier has the OID shall be CommonName.
rdnSe- capability to strictly follow RFC 5280
verification rules.
tbsCertificate.(issuer | subject) May verify only if the verifier has the Shall be PrintableString or UTF8String.
rdnSequence.[].[].value capability to strictly follow RFC 5280
item type verification rules.
tbsCertificate.(issuer | subject) May verify only if the verifier has the Item type for issuer field in child
rdnSequence.[].[].value capability to strictly follow RFC 5280 certificate shall be the same type as
item type verification rules. subject of parent certificate.
tbsCertificate.(issuer | subject) May verify only if the verifier has the Content length shall not exceed 30 bytes.
rdnSequence.[].[].value capability to strictly follow RFC 5280
item content verification rules.
tbsCertificate.validitytime item type Shall accept UTCTime or Shall be compliant with RFC 5280 rules
GeneralizedTime time types for conforming CAs.
independently of the represented date.
The expiration of the endpoint certificate
shall not be checked.
tbsCertificate.validitytime item content Should not verify unless verifier has a Shall be compliant with RFC 5280 rules
trusted source of time. for conforming CAs.
If tag DBh was present and set to a non-
zero value in owner trackKey request (see
Section 6.3.4.4), Instance CA needs to be
verified if the verifier is the vehicle OEM
Server. Where certificate must be issued
(not_before field of the certificate) within
value of DBh in hours before current
verifier time.
1 Table A-2: Issuer and Verifier Rules For Extensions Common to External CA, Instance CA and Endpoint
Item Verifier Rule Issuer Rule
tbsCertificate.extensions Unrecognized extensions shall be handled Extensions not listed in this specification
handling of unrecognized extensions as per RFC 5280 rules. shall be marked as non-critical.
tbsCertificate.extensions Shall reject if OIDs are not compliant with Shall only issue OIDs compliant with
OIDs of unrecognized extensions RFC 5280 OID format rules. RFC 5280 format rules.
tbsCertificate.extensions Shall reject if 2 extensions or more have Shall not issue with 2 or more extensions
handling of duplicate extensions the same OID. having the same OID.
tbsCertificate.extensions handling of Shall accept any extension order. Extensions can be ordered arbitrarily.
extension order
tbsCertificate.extensions.[].Authority- Shall reject if AuthorityKeyIdentifier Shall contain a AuthorityKeyIdentifier
KeyIdentifier extension is not present. Shall accept if extension with the defined extnValue.
extension is marked as critical. Shall be marked as non-critical.
tbsCertificate.extensions.[].KeyUsage Shall reject if KeyUsage extension is not Shall contain a KeyUsage extension with
present. Shall reject if extnValue is the defined extnValue. Shall be marked as
different from the defined one. Shall reject critical.
if extension is not marked as critical.
2
3 Table A-3: Issuer and Verifier Rules For Extensions Specific to External CA
Item Verifier Rule Issuer Rule
tbsCertificate.extensions.[].externalCA Shall reject if extension is not present. Shall contain an extension with the
Shall reject if extnValue format or content defined OID. Shall contain an extension
is different from the defined one. Shall with defined format and content. Shall be
reject if extension is not marked as marked as critical.
critical.
tbsCertificate.extensions.[].SubjectKey- Shall reject if SubjectKeyIdentifier Shall contain a SubjectKeyIdentifier
Identifier extension is not present. Shall also accept extension with the defined extnValue.
if the extension is marked as critical. Shall be marked as non-critical.
tbsCertificate.extensions.[].Basic- Shall reject if BasicConstraints extension Shall contain a BasicConstraints
Constraints is not present. Shall reject if extnValue extension. The extnValue attribute shall
format or content is not the defined one. comply with the defined format and
Shall reject if extension is not marked as content. Shall be marked as critical.
critical.
4
1 Table A-4: Issuer and Verifier Rules For Extensions Specific to Instance CA
Item Verifier Rule Issuer Rule
tbsCertificate.extensions.[].instanceCA Shall reject if extension is not present. Shall contain an extension with the
Shall reject if extnValue format or content defined OID. Shall contain an extension
is different from the defined one. Shall with defined format and content. Shall be
reject if the extension is not marked as marked as critical.
critical.
tbsCertificate.extensions.[].SubjectKey- Shall reject if SubjectKeyIdentifier Shall contain a SubjectKeyIdentifier
Identifier extension is not present. Shall accept if the extension with the defined extnValue.
extension is marked as critical. Shall be marked as non-critical.
tbsCertificate.extensions.[].Basic- Shall reject if BasicConstraints extension Shall contain a BasicConstraints
Constraints is not present. Shall reject if extnValue extension. The extnValue attribute shall
format or content is not the defined one. comply with the defined format and
Shall reject if the extension is not marked content. Shall be marked as critical.
as critical.
2
3 Table A-5: Issuer and Verifier Rules For Extensions Specific to Endpoint
Item Verifier Rule Issuer Rule
tbsCertificate.extensions.[].endpoint Shall reject if extension is not present. Shall contain an extension with the
Shall reject if extnValue format or content defined OID. Shall contain an extension
is different from the defined one. Shall with defined format and content. Shall be
reject if the extension is not marked as marked as critical.
critical.
tbsCertificate.extensions.[].Basic- Shall accept if BasicConstraints extension Shall contain a BasicConstraints
Constraints is absent. Shall reject if extnValue format extension. The extnValue attribute shall
or content is not the defined one. Shall comply with the defined format and
reject if the extension is not marked as content. Shall be marked as critical.
critical.
4
5 Vehicle Public Key Certificate [K], intermediate CA, Vehicle OEM CA Certificate (signed by
6 Device OEM) [M], and vehicle OEM CA (sub)root certificates shall follow the same rules as the
7 external CA certificate with the following exceptions:
8 For the Vehicle OEM Root CA certificate:
9 Table A-6: Issuer and Verifier Rules for Vehicle OEM Root CA certificate
Item Verifier Rule Issuer Rule
tbsCertificate.extensions.[].- Shall not verify presence or May contain a
AuthorityKeyIdentifier content of this field. AuthorityKeyIdentifier extension
with the defined extnValue. If
present it shall be marked as non-
critical.
tbsCertificate.extensions.[].Key- Shall not verify presence or May contain a KeyUsage
Usage content of this field. extension with the defined
extnValue. If present it shall be
marked as critical.
1 APPENDIX B
1 1.3.6.1.4.1.41577.5.8
2 Vehicle OEM CA Certificate [J]
3 1.3.6.1.4.1.41577.5.9
4 Vehicle OEM CA Certificate (Signed by Device OEM CA) [M] (optional as only used by some
5 implemenation)
6 1.3.6.1.4.1.41577.5.10
7 Extensions with the above OIDs shall be marked as critical.
1 Subject (CN):
2 <Vehicle OEM defined>-INTERMEDIATE-<region>-<environment>
3 Example:
4 Vehicle OEM CA-INTERMEDIATE-WW-P
7 Endpoint Certificate
8 not before = issuance date and time
9 not after = 99991231235959Z (as defined in [3])
10 The expiration date of the endpoint certificate should not be checked anywhere in the system.
11 Note: The validity definition in the friend's attestation package determines the lifetime of the key
12 in the system.
1 APPENDIX C
1 E6:97:50:57:10:09:13:C3:AB:07:29:D4:53:3F:4E:11:29:9A:34:83
2 X509v3 Basic Constraints: critical
3 CA:TRUE, pathlen:0
4 1.3.6.1.4.1.41577.5.8: critical
5 0....
6 X509v3 Key Usage: critical
7 Certificate Sign
8 Signature Algorithm: ecdsa-with-SHA256
9 30:45:02:20:08:b4:7d:06:3f:c8:f0:27:95:5d:5d:99:62:ee:
10 92:91:5e:79:5d:99:4a:4b:5a:a7:6a:f4:2b:6c:16:1d:8c:85:
11 02:21:00:d8:34:99:b3:49:3c:5b:ee:55:39:98:0b:64:9f:58:
12 f1:43:54:e6:04:de:a3:9d:22:b3:cc:01:ad:a7:e2:40:04
1 key-
2 id:E6:97:50:57:10:09:13:C3:AB:07:29:D4:53:3F:4E:11:29:9A:34:83
3
4 X509v3 Subject Key Identifier:
5 57:11:1D:D5:E7:5E:24:75:AB:5F:07:BC:96:FB:69:89:FB:7D:0E:AA
6 X509v3 Basic Constraints: critical
7 CA:FALSE
8 1.3.6.1.4.1.41577.5.1: critical
9 0....
10 X509v3 Key Usage: critical
11 Digital Signature
12 Signature Algorithm: ecdsa-with-SHA256
13 30:44:02:20:48:95:c3:bb:16:d0:32:bb:15:c3:0e:2d:50:22:
14 cd:f8:78:a1:4e:87:6c:6b:08:71:09:12:91:fe:48:ba:cf:12:
15 02:20:43:17:ca:c5:d4:4c:67:53:52:7a:f9:d0:64:cb:fb:83:
16 4e:01:78:a0:b5:53:1f:af:83:3d:38:9b:f9:64:ed:b3
1 75:7a:34:a9:16:25:99:81:6a:12:df:17:f4:85:84:
2 ad:77:ee:81:c7:d4:7f:8e:2d:50:29:27:4e:58:32:
3 ac:69:0a:52:0d:20:22:fb:84:6a:75:c6:a1:fd:e4:
4 45:ef:d6:a9:b0
5 ASN1 OID: prime256v1
6 NIST CURVE: P-256
7 X509v3 extensions:
8 X509v3 Authority Key Identifier:
9 key-
10 id:23:18:E5:56:71:F0:8E:AE:21:21:42:A8:17:72:0F:B8:17:EE:93:BF
11
12 X509v3 Subject Key Identifier:
13 29:F8:B9:AE:B8:4A:19:76:CF:90:A6:61:D3:0F:49:24:34:6E:31:EC
14 X509v3 Basic Constraints: critical
15 CA:FALSE
16 1.3.6.1.4.1.41577.5.6: critical
17 0....
18 X509v3 Key Usage: critical
19 Digital Signature
20 Signature Algorithm: ecdsa-with-SHA256
21 30:45:02:20:3d:d9:06:f8:f6:c0:be:c1:af:88:3c:7f:97:7d:
22 ad:7c:ad:ee:e7:62:09:71:7f:8f:4d:7c:cd:1f:19:d1:85:70:
23 02:21:00:89:bc:ad:9a:60:8a:b9:49:85:97:9e:d8:e1:5c:25:
24 f7:c9:55:82:7e:9a:b7:18:9c:5a:2e:ed:d5:fe:d0:e8:c9
12 Results
13 dk: (full 80 bytes)
14 6408161bbc64a41827cf072c62efdae535739e51
15 3ad3050e66a9f53eb69c15bb3c220f0acb5f7f02
16 dd008ce70d974431369ef8e569dee33977fa9fd2
17 e13a55c8c80c244a05559264b0498c1f5216f327
18 z0: (left 40 bytes)
19 6408161bbc64a41827cf072c62efdae535739e51
20 3ad3050e66a9f53eb69c15bb3c220f0acb5f7f02
21 z1: (right 40 bytes)
22 dd008ce70d974431369ef8e569dee33977fa9fd2
23 e13a55c8c80c244a05559264b0498c1f5216f327
4 Results
5 w0: (32 bytes)
6 e433ab43428320b24fab82f915d1db11 4acd72f8a4bf4fbf3c712b94bcc2f013
7 w1: (32 bytes)
8 44363d157f471221b1e75e596ff4714a
9 712b9578301665d84ec17004952523a8
10 D.3 Computation of L
11 Only computed on the Vehicle OEM Server.
12 L = w1 × G
13 L is the result of scalar multiplication on curve NIST P-256. G is the base point as defined for
14 NIST P-256.
15 Parameters
16 w1: (32 bytes)
17 44363d157f471221b1e75e596ff4714a
18 712b9578301665d84ec17004952523a8
19 G.x: (32 bytes)
20 6b17d1f2e12c4247f8bce6e563a440f2 77037d812deb33a0f4a13945d898c296
21 G.y: (32 bytes)
22 4fe342e2fe1a7f9b8ee7eb4a7c0f9e16 2bce33576b315ececbb6406837bf51f5
23 Results
24 L.x: (32 bytes)
25 ff69eb6086938b3cce2c9e64dcacea1a 925918e75e8c17948d316322d370123f
26 L.y: (32 bytes)
27 69132aed7398919e6e6614f7627b0a54
28 060c5a8c0d93d2754166ab10fea6a8ff
29 D.4 Computation of X
30 Computed by the device.
31 X = x × G + w0 × M
32 x is a random scalar. G is the base point as defined for NIST P-256 and M a fixed point as
33 defined by the spec.
34 Parameters
35 x: (32 bytes)
1 000102030405060708090a0b0c0d0e0f
2 101112131415161718191a1b1c1d1e1f
3 w0: (32 bytes)
4 e433ab43428320b24fab82f915d1db11
5 4acd72f8a4bf4fbf3c712b94bcc2f013
6 G.x: (32 bytes)
7 6b17d1f2e12c4247f8bce6e563a440f2
8 77037d812deb33a0f4a13945d898c296
9 G.y: (32 bytes)
10 4fe342e2fe1a7f9b8ee7eb4a7c0f9e16
11 2bce33576b315ececbb6406837bf51f5
12 M: (65 bytes)
13 04
14 886e2f97ace46e55ba9dd7242579f299
15 3b64e16ef3dcab95afd497333d8fa12f
16 5ff355163e43ce224e0b0e65ff02ac8e
17 5c7be09419c785e0ca547d55a12e2d20
18 Results
19 xG.x: (32 bytes)
20 7a593180860c4037c83c12749845c8ee
21 1424dd297fadcb895e358255d2c7d2b2
22 xG.y: (32 bytes)
23 a8ca25580f2626fe579062ff1b99ff91 c24a0da06fb32b5be20148c9249f5650
24 w0M.x: (32 bytes)
25 0d556afe7d4cf1b87a9baa429ab9fb57 5de4f36d412cbd7d0dc095779590f5aa
26 w0M.y: (32 bytes)
27 5f941aae1286700e4dab2ff38b4eeb2d 6ceb5dd3f7072bc84ee74360d0f7ad0c
28 X.x: (32 bytes)
29 f44555207a617fd90900dba5c8e6f81e ddbd87590873a63b9057dda9f138dbc1
30 X.y: (32 bytes)
31 6f453195f6452ce71d399052435952b8
32 9a10b927435574f5e3707eae031c40e0
33 D.5 Computation of Y
34 Computed by the vehicle.
35 Y = y × G + w0 × N
36 y is a random scalar. G is the base point as defined for NIST P-256 and N a fixed point as
37 defined by the spec.
1 Parameters
2 y: (32 bytes)
3 f1e1d1c1b1a191817161514131211101
4 f0e0d0c0b0a090807060504030201000
5 w0: (32 bytes)
6 e433ab43428320b24fab82f915d1db11
7 4acd72f8a4bf4fbf3c712b94bcc2f013
8 G.x: (32 bytes)
9 6b17d1f2e12c4247f8bce6e563a440f2
10 77037d812deb33a0f4a13945d898c296
11 G.y: (32 bytes)
12 4fe342e2fe1a7f9b8ee7eb4a7c0f9e16
13 2bce33576b315ececbb6406837bf51f5
14 N: (65 bytes)
15 04
16 d8bbd6c639c62937b04d997f38c37707
17 19c629d7014d49a24b4f98baa1292b49
18 07d60aa6bfade45008a636337f5168c6
19 4d9bd36034808cd564490b1e656edbe7
20 Results
21 yG.x: (32 bytes)
22 d05d3f33d7a67710f70275600e2905e4
23 4f436e3331a1f479f7de0b650f679d12
24 yG.y: (32 bytes)
25 1c404aa84e6f75fb75d0526ff48e004b 4ea689d7fc619a05e0ba37dfbef340bf
26 w0N.x: (32 bytes)
27 4f8cd0a6e01386dac1b2e1af01e1e56a 65d7beccfcb7ed39437308f4bd99d3b6
28 w0N.y: (32 bytes)
29 e89a7da518b37a32f9acfe497da5fd16 05b80820b4ce92406569de793811d938
30 Y.x: (32 bytes)
31 b6fdaf3f6949869d68f667108b75e4ce 74847e8953d1e3c6aae21699e8027211
32 Y.y: (32 bytes)
33 c2d9b2b2a906cc7ea7020715dec44e95 659e3fc8994f635b95e7c9ea5c362cbe
1 V = w1 × T
2 Parameters
3 x: (32 bytes)
4 000102030405060708090a0b0c0d0e0f
5 101112131415161718191a1b1c1d1e1f
6 w0: (32 bytes)
7 e433ab43428320b24fab82f915d1db11
8 4acd72f8a4bf4fbf3c712b94bcc2f013
9 w1: (32 bytes)
10 44363d157f471221b1e75e596ff4714a
11 712b9578301665d84ec17004952523a8
12 Y: (65 bytes)
13 04
14 b6fdaf3f6949869d68f667108b75e4ce
15 74847e8953d1e3c6aae21699e8027211
16 c2d9b2b2a906cc7ea7020715dec44e95
17 659e3fc8994f635b95e7c9ea5c362cbe
18 N: (65 bytes)
19 04
20 d8bbd6c639c62937b04d997f38c37707
21 19c629d7014d49a24b4f98baa1292b49
22 07d60aa6bfade45008a636337f5168c6
23 4d9bd36034808cd564490b1e656edbe7
24 Results
25 T.x: (32 bytes)
26 d05d3f33d7a67710f70275600e2905e4
27 4f436e3331a1f479f7de0b650f679d12
28 T.y: (32 bytes)
29 1c404aa84e6f75fb75d0526ff48e004b
30 4ea689d7fc619a05e0ba37dfbef340bf
31 Z.x: (32 bytes)
32 89af176e8122e67c00dbcea089bc4993 5634132b1b226030d2b14f16b3e73351
33 Z.y: (32 bytes)
34 c2254b1b62477fdc976379f5ae7c57c6 ac2b31ef9a032c33e4677c5c3acbb1d3
35 V.x: (32 bytes)
36 2f229f13e1ebfb6442a67eebdafb23b2 f6e656597384035a8a1e50ad95d24211
37 V.y: (32 bytes)
38 339e90a669dd8a56fb2524fb6e6c784b 89019c1130c2def98143fb46dcc507d2
30 Results
31 Z.x: (32 bytes)
32 89af176e8122e67c00dbcea089bc4993
33 5634132b1b226030d2b14f16b3e73351
34 Z.y: (32 bytes)
35 c2254b1b62477fdc976379f5ae7c57c6
36 ac2b31ef9a032c33e4677c5c3acbb1d3
37 V.x: (32 bytes)
38 2f229f13e1ebfb6442a67eebdafb23b2
1 f6e656597384035a8a1e50ad95d24211
2 V.y: (32 bytes)
3 339e90a669dd8a56fb2524fb6e6c784b
4 89019c1130c2def98143fb46dcc507d2
1 89019c1130c2def98143fb46dcc507d2
2 len(X/Y/Z/V): (8 bytes)
3 4100000000000000
4 Results
5 K: (32 bytes)
6 381fc44894aedc0fd37257fdca763ee4
7 9f695017ba5e1df74a1b8bbf27fe1e0d
8 CK: (16 bytes)
9 381fc44894aedc0fd37257fdca763ee4
10 SK: (16 bytes)
11 9f695017ba5e1df74a1b8bbf27fe1e0d
22 Results
23 K1: (16 bytes)
24 ab667caeffe27505265d0f2026e146ea
25 K2: (16 bytes)
26 af679bf88b734e1cb7cd0243fb21a589
27 Note that this calculation is an example of key derivation that uses an undefined protocol version
28 0101. Its intent is to show the key derivation algorithm in principle.
15 Results
16 M1: (16 bytes)
17 110d49f8c5a896e11d4dde4c3b9704d2
18 M2: (16 bytes)
19 23d1a618ad3acbfd7a9bd19fd1737107
27 Results
28 Kenc: (16 bytes)
29 161886cb9ae7403d8dbccfe36b8a0426
30 Kmac: (16 bytes)
31 6387ba65479cb7eb9df97bd48ac33159
32 Krmac: (16 bytes)
33 41677fb6398459199f1e569760df91c1
34 LONG_TERM_SHARED_SECRET: (16 bytes)
35 5c4e19da553524e386fa1eca91e8ad0e
2 E.1 Introduction
3 This Appendix defines a protocol to perform the contactless transactions defined in this
4 document over NFC-F.
5 Support for NFC-F is an optional feature of the Digital Key protocol. The requirements in this
6 appendix apply only if an implementation supports this option.
7 Implementation may include support for NFC-F to be able to use NFC-F devices for holding
8 Digital Keys or if the contactless transactions defined in this document are used as part of a
9 larger NFC-F transaction.
10 The protocol in this appendix defines how the device exchanges APDUs with the vehicle over
11 NFC-F. The APDU-based message exchanges defined in this document are not modified in any
12 way when run over NFC-F. Support for NFC-F only affects the contactless interface; it has no
13 impact on the device-internal interfaces to communicate between the Digital Key applet and
14 Digital Key framework or on the communication with the Device OEM Server or Vehicle OEM
15 Server.
16 The following definitions are specific to this appendix:
17 • Protocol Error: Receiving a response with a wrong syntax or receiving a correct
18 response when it is not expected.
19 • Timeout Error: No response has been received within the defined waiting time.
20 • Transmission Error: Error caused by the receipt of an incorrect frame. This includes the
21 case that the CRC in the NFC-F frame is not correct.
22 The following abbreviations are specific to this appendix:
23 RW_ACK Acknowledge send from vehicle to device
24 DEVICE_ACK Acknowledge send from device to vehicle
25 C-APDU Command APDU as defined in [1]
26 fc Carrier Frequency
27 NACK Negative acknowledgement
28 NFC-F NFC Type F RF Technology
29 NFCID2 NFC-F identifier as defined in [DIGITAL].
30 R-APDU Response APDU as defined in [1]
31 RWT Response waiting time
32 RWTI Response waiting time integer
1 • The Digital Key applet shall register the System Code ACCCh as part of its contactless
2 protocol parameters for Type F (Sub-tag 80h of the Type F anti-collision parameters entry
3 tag A0h; see [21]).
4 • The device shall configure the NFC controller to route frames containing the NFCID2 of
5 System Code ACCCh to the SE that hosts the Digital Key applet.
6 • The Digital Key applet shall register an NFCID2 (as defined in [DIGITAL]) as part of its
7 contactless protocol parameters for Type F. The NFCID2 is registered as the “PICC
8 Identifier” contained in sub-tag 81h of the Type F anti-collision parameters entry tag A0h
9 (see [21]).
10 • The following applies only if owner pairing over NFC-F has to be supported:
11 o The protocol defined in this appendix shall be implemented by the Digital Key
12 framework
13 o The Digital Key framework shall use the System Code 4CCCh for NFC-F.
14 o The Digital Key framework shall use an NFCID2 in the range of
15 02FE000000000000h to 02FEFFFFFFFFFFFFh. The PAD0 field in the
16 SENSF_RES as defined in [17] shall be configured to be 01FEh.
17 o The device shall configure the NFC controller to route frames containing the
18 NFCID2 of System Code 4CCCh to the host with the Digital Key framework.
19 To support NFC-F, the following requirements apply on the vehicle side:
20 • The vehicle shall implement the protocol defined in this appendix. The protocol shall be
21 available for communication on the door NFC readers and console NFC reader.
22 • If configured to support NFC-F, the NFC readers shall include polling for NFC-F. The
23 polling shall use the system code for the Digital Key applet except in case of owner
24 pairing, in which case the system code for the Digital Key framework shall be used.
25 Note: As only devices that support the requested system code will respond to the polling, there is
26 no risk that the NFC link is established using NFC-F technology without the Digital Key
27 protocol being available.
28 On either side, the APDUs exchanged as part of the Digital Key protocol shall be encapsulated
29 as defined in the following sections before sending and shall be extracted accordingly after
30 receiving.
31 E.3 Preconditions
32 This specification is based on NFC-F technology, more specifically on the Type 3 Tag Platform
33 as defined in [17] and [18].
34 The vehicle and the device shall be able to send and receive NFC-F frames as defined in [17].
35 The device shall be able to respond to a SENSF_REQ command as defined in [17].
1 The LEN byte and the CRC are not included in these format definitions. The LEN field has to be
2 prepended and the CRC to be appended to obtain the content for the data field of an NFC-F
3 frame.
4 The LEN field is supposed to be part of the command or response and therefore constitutes the
5 first byte of each command and response.
10 P1
11 The P1 field shall be formatted as defined in Table E-2.
12 Table E-2: Format of the P1 field
b8 b7 b6 b5 b4 b3 b2 b1 Meaning
Message Type Message Features
0 0 0 0 0 0 0 CAPDU_DATA
x Chaining, if set to 1b
0 0 0 1 0 0 0 0 RW_ACK
0 0 1 0 0 0 0 0 NACK
Any other value RFU
13 In the following sections, the name in the “Meaning” column is often used to refer to an
14 ENCAPSULATION_CMD with a specific “Message Type” value.
15 Chaining set to 1b indicates that the Payload field contains a segment of a larger data. If chaining
16 is set to 1b, the Command is referred to as “CAPDU_DATA indicating chaining.” If “indicating
17 chaining” is not explicitly mentioned, the bit is set to 0b.
18 The device shall ignore commands that have an RFU value.
19 NFCID2
20 The vehicle shall set the NFCID2 to the value included in the SENSF_RES response of the
21 targeted device. The device shall compare the NFCID2 contained in this command with its own
22 NFCID2. If they are not equal, the device shall not respond to this command.
23 PAYLOAD
24 For RW_ACK and NACK messages, the Payload field shall be empty.
25 The content of the Payload field for CAPDU_DATA is specified in Appendix E-5.
5 P1
6 The P1 field shall be formatted as defined in Table E-4.
7 Table E-4: Format of the P1 field
b8 b7 b6 b5 b4 b3 b2 b1 Meaning
Message Type Message Features
0 0 0 0 0 0 0 RAPDU_DATA
x Chaining, if set to 1b
0 0 0 1 0 0 0 0 DEVICE_ACK
Any other value RFU
8 In the following sections, the name in the “Meaning” column is often used to refer to an
9 ENCAPSULATION_RSP with a specific “Message Type” value.
10 Chaining set to 1b indicates that the Payload field contains a segment of a larger data. If chaining
11 is set to 1b, the response is referred to as “RAPDU_DATA indicating chaining.”. If “indicating
12 chaining” is not explicitly mentioned, the bit is set to 0b.
13 NFCID2
14 The device shall set the NFCID2 to its own NFCID2. The vehicle shall verify that the NFCID2
15 in the response is the same as the one sent in the previous command. If the NFCID2 is different,
16 the vehicle shall ignore the response.
17 PAYLOAD
18 For DEVICE_ACK messages, the Payload field shall be empty.
19 The content of the Payload field for RAPDU_DATA is specified in Appendix E.5.
10 E.5.3 Chaining
11 The chaining feature allows transmitting APDUs that do not fit in a single command or response
12 by dividing it into segments. Each segment is transmitted in a separate command or response.
13 C-APDU
14 If the length of the C-APDU is above 244 bytes, the C-APDU shall be segmented and transferred
15 in multiple CAPDU_DATA messages.
16 All but the last segment shall be transported in the Payload field of a CAPDU_DATA message
17 indicating chaining as defined in Appendix E.4.1. C-APDU segments that are transported in a
18 CAPDU_DATA message indicating chaining shall have a Payload field with a size of 244 bytes.
19 The last segment shall be transported in the Payload field of a CAPDU_DATA message
20 indicating no chaining.
21 The vehicle shall send the first segment of the C-APDU in a CAPDU_DATA message indicating
22 chaining. After receiving a CAPDU_DATA message indicating chaining, the device shall
23 acknowledge the receipt of the segment by sending a DEVICE_ACK as defined in Appendix
24 E.4.2. After receiving a DEVICE_ACK, the vehicle shall send the next segment in a
25 CAPDU_DATA message indicating chaining, or, if it is the last segment, in a CAPDU_DATA
26 message indicating no chaining.
27 R-APDU
28 If the length of the R-APDU is greater than 244 bytes, the R-APDU shall be segmented and
29 transferred in multiple RAPDU_DATA messages.
30 All but the last segment shall be transported in the Payload field of an RAPDU_DATA message
31 indicating chaining as defined in Appendix E.4.2. R-APDU segments that are transported in an
32 RAPDU_DATA message indicating chaining shall have a Payload field with a size of 244 bytes.
33 The last segment shall be transported in the Payload field of an RAPDU_DATA message
34 indicating no chaining.
35 The device shall send the first segment of the R-APDU in an RAPDU_DATA message
36 indicating chaining. After receiving an RAPDU_DATA message indicating chaining, the vehicle
37 shall acknowledge receipt of the segment by sending a RW_ACK as defined in Appendix E.4.1.
38 After receiving a RW_ACK, the device shall send the next segment in an RAPDU_DATA
39 message indicating chaining, or, if it is the last segment, in an RAPDU_DATA message
40 indicating no chaining.
6 In this specification, Byte 17 (PAD2) is referred to as RWTI. The device shall use a value for
7 RWTI that reflects the maximum time it requires to respond to a CAPDU_DATA message.
8 The Digital Key applet shall register its RWTI as part of its contactless protocol parameters for
9 Type F. The RWTI corresponds to the last byte of the “Response Time Descriptor” contained in
10 Sub-tag 81h of the Type F anti-collision parameters entry tag A0h (see [21]. The recommended
11 value for the first two bytes of the “Response Time Descriptor” (PAD0 of the SENSF_RES) is
12 01FFh.
13 The format of the RWTI byte shall be as defined in Table E-6:
14 Table E-6: Format of RWTI
b7 b6 b5 b4 b3 b2 b1 b0 Meaning
x x x Parameter A
x x x Parameter B
x x Parameter E
15
16 The RWT shall be calculated according to the following formula:
17 RWT = T × ((A+1) + 8 × (B+1)) × 4E
18 where T is a fixed duration with the following value: T = 256 × 16/fc (~0.3020 ms).
19 After receiving the last byte of a ENCAPSULATION_CMD message, the device shall wait no
20 longer than RWT before sending the first byte of an ENCAPSULATION_RSP (which is the
21 LEN byte). If the vehicle does not receive the first byte of an ENCAPSULATION_RSP within
22 RWT + ∆RWT, the vehicle shall treat this as a timeout error.
23 The value of ∆RWT shall be 20 ms.
25 Device
26 The device shall not attempt any error recovery. The device shall stay in receive mode when it
27 detects an error.
28 Vehicle
29 If a timeout error occurs, the vehicle shall resend the last command.
1 If the vehicle can detect transmission errors and if it receives a response with a transmission
2 error, the vehicle shall send a NACK as defined in Appendix E.4.1.
3 After receiving a NACK, the device shall resend the last ENCAPSULATION_RSP.
4 The vehicle shall attempt sequential error recovery (without receiving a valid response in
5 between) up to a maximum of two times.
6 If not specified otherwise, the handling of protocol errors by the vehicle is implementation-
7 specific.
3 F.1 Overview
4 The API requirements specified in this document enable mobile applications to access the Digital
5 Key framework running the Android system in mobile devices. This specification provides
6 interface definitions for an application developer to allow implementation on Android mobile
7 platforms. The Android APIs are defined in Android Digital Key Framework API [29].
1 o Read/write information related to Digital Key (e.g., information stored in private mailbox
2 and Instance CA ID).
3 • RKE Functionality
4 o Trigger event based RKE action
5 o Trigger enduring RKE action
6 ▪ Callback providing the arbitrary data from request continuation confirmation
7 while action endures
8 ▪ Sending of arbitrary data in confirm continuation message as answer to the
9 request above
10 • Vehicle Management
11 o Retrieve vehicle state
12 ▪ subscribing to a certain function id range
13 ▪ requesting a certain function status value from the vehicle
14 ▪ reading the stored status data.
1 APPENDIX G
8 • k
NSlot_per_Round Î{6,8,9,12,16,18,24,32,36,48,72,96}
9 • k
NSlot_per_Round Î{6,8,9,12,16,18}when the number of responder in each ranging round
10 k
N Responder ≤ 10.
11 Table G-1 shows which combinations of N Chap_per_Slot
k and NSlot_per_Round
k result in valid ranging
12 session configurations. During the handshake process for the k-th ranging session over the
13 Bluetooth LE control channel (for details see Section 20.5.2), the Table G-1 is used to negotiate
k
14 a valid ranging session configuration that maximizes the number of hopping rounds N Round for a
15 given set of constraint parameters N Chap_per_Slot
k and NSlot_per_Round
k k
. With N Responder ≤10, the only the
16 shaded part of the Table G-1 below will be used during this handshake process.
17 Table G-1: Number of Valid Ranging Rounds per 96 ms.
Number of Slots (per 96 ms) NkSlot_per_Round
k
N Chap_per_Slot k
Resulting TSlot 6 8 9 12 16 18 24 32 36 48 72 96
9 3.000 ms N/A 4 N/A N/A 2 N/A N/A 1 N/A N/A N/A N/A
12 4.000 ms 4 3 N/A 2 N/A N/A 1 N/A N/A N/A N/A N/A
24 8.000 ms 2 N/A N/A 1 N/A N/A N/A N/A N/A N/A N/A N/A
k
1 For the k-th ranging session with N Round ranging rounds per block and hoping key
k
2 HOP _ Key _ RW , the following function is used to generate the hopping round Sk index for
3 ranging block i:
( )
ææ
(( ) ) ( )ö÷ø N ö
2
4 S k i, HOP _ Key _ RW k , N Round
k
= ç ç i + HOP _ Key _ RW k & 0xFFFF mod 216 -15 k
÷ø >> 16
èè Round
5 The initiator shall generate and send the hopping key HOP _ Key _ RW k to the responder-device
6 during the ranging session initiation process (see Section 20.5.2).
13 (
S k i, HOP_ Key _ RW k , N Round
k
=) (((AES(i, HOP _ Key _ RW ) &0xFFFF) Nk k
Round ) >> 16)
14 For the AES function, AES-128 shall be used. Here, the notation AES(plaintext, key) is used
15 where the AES() operation pads each of the inputs to the left with 0x00 to reach the AES block
16 size.
1 APPENDIX H [WCC3]
2 The following Python code is contributed to IEEE Mentor as in [36] and implements a
3 minimum-phase conversion from [34].
4 def min_phase(firseq, fft_pts):
5 """A function to convert a FIR impulse response to min-phase
6
7 A function that calculates the minimum-phase equivalent of a
8 FIR
9 impulse response based on a Discrete Hilbert Transform
10 applied in the frequency domain.
11 """
12 # Recommended fft_pts >= 32768
13 #
14 # For guidelines on the required number of FFT points, see:
15 # N. Damera-Venkata, B. L. Evans and S. R. McCaslin,
16 # "Design of optimal minimum-phase digital FIR filters using
17 # discrete Hilbert transforms," in IEEE Transactions on
18 Signal
19 # Processing, vol. 48, no. 5, pp. 1491-1495, May 2000.
20 max_phase = np.real(np.fft.ifft( \
21 np.exp(hilbert(np.real(np.log(np.fft.fft( \
22 firseq, fft_pts)))))))
23 tmp_min_phase = max_phase[::-1] # reverse max phase
24 return tmp_min_phase[0:len(firseq)] # maintain length
25
1 APPENDIX I [WCC3]
2 Pulse shapes using β of 0.45 with 32x oversampling per chip with total span of 8 chips are
3 provided here for informative reference only. The samples are left to right, row by row from
4 early to late samples. PulseShape 0x0 follows the mathematical equation in Section 21.5 and
5 PulseShape 0x1 is converted from PulseShape 0x0 with the code shown in Appendix H.
6 Implementation may choose to gradually smooth the edge samples toward zero.
13
20
1 APPENDIX J [WCC3]
1 0000000000010101000100010100010101010000010101000101010100010001
2 URSK_KT: ebd253fbf2c57294284de578fee5de984f3489d740e6fd5ee50af537c714af6e
3 dURSK: 9d40e2080db7d2cda114838189d7ae9f
4 dUDSK: 011adc74ba889e7e59a8ee61889d3fec
1 A2 AB 2B AE DE C2 E5 B4 D1 42 9B AF 4D 48 2F 9B
2 E5 2E A2 52 9C 05 9F DD 0F 78 B9 BB A5 54 4D B8
3 CB 2A A9 D5 17 55 E2 40 00 93 E1 78 86 5F 63 D2
4 T: CB 2A A9 D5 17 55 E2 40
5 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 00 06 00 00
6 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 00 06 00 01
7 C: 4A 87 F6 F8 FD EC EF EA EA 19 34 00 43 4D CC 06
8 S0: 11 43 A9 A2 0F F6 E6 C3 B6 CE 61 6C 47 85 65 96
9 CipherText: 32 D1 C2 EA EB 21 B4 ED EA 19 34 00 43
10 U: DA 69 00 77 18 A3 04 83
11 PrePoll encrypted Payload: 32 D1 C2 EA EB 21 B4 ED EA 19 34 00 43
12 DA 69 00 77 18 A3 04 83
13 STS-V for POLL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 4F DB 1C DD 34 F8 –
14 1C DD 35 17
15 STS for POLL PPDU: E8 AE 41 D3 4E 61 87 10 95 A6 2B 65 EF 1F 15 50 ..
16 9D 5F 97 B1 EB 2B 09 55 40 B2 87 72 4B D6 88 76
17 STS-V for 1. RESPONSE PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 4F DC 1C DD 34 F8 –
18 1C DD 35 17
19 STS for 1. RESPONSE PPDU: FA 26 6A E7 77 40 FA 4A E6 81 2A F3 E9 69 9D A2 ..
20 1D 71 EA 7E 7D 0E A1 47 CC EB F3 18 DF 1D EC 9A
21 STS-V for FINAL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 4F DD 1C DD 34 F8 –
22 1C DD 35 17
23 STS for FINAL PPDU: 51 76 79 08 78 9D 7D B7 49 1C 87 4B 8E 2E AF 7E ..
24 87 8E C1 D3 3E D9 79 80 E5 E3 2D 7E 17 97 46 E0
25 FinaData MHR: 49 2B D9 09 16 01 00 00 00 77 8B 07 9D AA 05 00
26 69 DF 04 02 19 80 3F
27 FinaData Payload: 78 56 34 12 00 00 00 00 00 18 CD 5B 07 00 00 3C
28 0F 01 00 FF 04 9E 07 29 00
29 AES-CCM* key K: 93 2E 0F 6D 9B B3 93 09 6F E2 4C C7 9A 70 44 47
30 Nonce N: AF 2C 32 43 20 AF B5 30 00 00 00 01 06
31 AddAuthData: 00 17 49 2B D9 09 16 01 00 00 00 77 8B 07 9D AA
32 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
33 PlainTextData: 78 56 34 12 00 00 00 00 00 18 CD 5B 07 00 00 3C
34 0F 01 00 FF 04 9E 07 29 00 00 00 00 00 00 00 00
35 AuthData: 00 17 49 2B D9 09 16 01 00 00 00 77 8B 07 9D AA
36 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
37 78 56 34 12 00 00 00 00 00 18 CD 5B 07 00 00 3C
38 0F 01 00 FF 04 9E 07 29 00 00 00 00 00 00 00 00
39 B0: 59 AF 2C 32 43 20 AF B5 30 00 00 00 01 06 00 19
1 X: 1A C5 15 F3 E1 77 DB A3 1D 20 DC 57 35 10 69 AD
2 3A 51 46 95 AD A3 CB 01 EC 16 C4 BB E2 3F 28 D5
3 BA CC 1B 33 47 D5 13 BB 39 40 56 13 78 AC C9 77
4 8B EF 16 7F BC DA 85 BD AF B6 BB 8B 80 F0 4C E3
5 B0 DA 6F BE 11 35 0C 2F 5C 80 50 DF 0B 7C CF D0
6 T: B0 DA 6F BE 11 35 0C 2F
7 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 01 06 00 00
8 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 01 06 00 01
9 A2: 01 AF 2C 32 43 20 AF B5 30 00 00 00 01 06 00 02
10 C: E2 55 9D 5B EA 8C 3E 87 44 4C 08 F3 7B 2D 5F 10
11 3C F2 DB 4A AB 57 E7 43 B7 78 D5 4D C2 AD C6 38
12 S0: 2B 36 52 7B F4 57 8F FD CB C0 82 81 DD CD BB 6F
13 CipherText: 9A 03 A9 49 EA 8C 3E 87 44 54 C5 A8 7C 2D 5F 2C
14 33 F3 DB B5 AF C9 E0 6A B7
15 U: 9B EC 3D C5 E5 62 83 D2
16 FinaData encrypted Payload: 9A 03 A9 49 EA 8C 3E 87 44 54 C5 A8 7C 2D 5F 2C
17 33 F3 DB B5 AF C9 E0 6A B7 9B EC 3D C5 E5 62 83 D2
18 Second Ranging block:
19 STS_Index for Pre Poll: 07 5B CE F5
20 Frame Counter for Pre Poll: 00 00 00 02
21 CMAC-Data(URSK_KT): 00 00 00 01 55 52 53 4B 5F 4B 54 00 00 00 00 00
22 00 01 01 01 00 01 00 01 01 00 01 01 01 01 00 00
23 01 01 01 00 01 01 01 01 00 01 00 01 00 00 01 00
24 CMAC-Data(URSK_KT): 00 00 00 02 55 52 53 4B 5F 4B 54 00 00 00 00 00
25 00 01 01 01 00 01 00 01 01 00 01 01 01 01 00 00
26 01 01 01 00 01 01 01 01 00 01 00 01 00 00 01 00
27 URSK_KT: EB D2 53 FB F2 C5 72 94 28 4D E5 78 FE E5 DE 98
28 4F 34 89 D7 40 E6 FD 5E E5 0A F5 37 C7 14 AF 6E
29 CMAC-Data(URSK): 00 00 00 01 55 52 53 4B 00 79 E8 65 18 6C BD 86
30 4B 95 56 82 C5 1C DD 34 F8 00 00 00 00 00 00 80
31 dURSK: 9D 40 E2 08 0D B7 D2 CD A1 14 83 81 89 D7 AE 9F
32 CMAC-Data(UDSK): 00 00 00 01 55 44 53 4B 00 79 E8 65 18 6C BD 86
33 4B 95 56 82 C5 1C DD 34 F8 00 00 00 00 00 00 80
34 dUDSK: 01 1A DC 74 BA 88 9E 7E 59 A8 EE 61 88 9D 3F EC
35 PrePoll MHR: 49 2B D9 09 16 02 00 00 00 77 8B 07 9D AA 05 00
36 69 DF 04 01 0D 80 3F
37 PrePoll Payload: 78 56 34 12 F6 CE 5B 07 01 00 00 00 00
38 AES-CCM* key K: 94 CE 7A 78 B6 43 D0 CA C4 E2 E4 F8 B5 F5 5A 4D
39 Nonce N: AF 2C 32 43 20 AF B5 30 00 00 00 02 06
1 AddAuthData: 00 17 49 2B D9 09 16 02 00 00 00 77 8B 07 9D AA
2 05 00 69 DF 04 01 0D 80 3F 00 00 00 00 00 00 00
3 PlainTextData: 78 56 34 12 F6 CE 5B 07 01 00 00 00 00 00 00 00
4 AuthData: 00 17 49 2B D9 09 16 02 00 00 00 77 8B 07 9D AA
5 05 00 69 DF 04 01 0D 80 3F 00 00 00 00 00 00 00
6 78 56 34 12 F6 CE 5B 07 01 00 00 00 00 00 00 00
7 B0: 59 AF 2C 32 43 20 AF B5 30 00 00 00 02 06 00 0D
8 X: 2F A9 D9 44 AA 74 A0 6F C7 CD AD 33 25 74 8A 5D
9 7E 8C 86 E7 4D 2D EF 05 8F AC AE 3C 02 88 3C 85
10 BC 7F 2D BB EE FE 33 9B 1B 77 F0 85 CE B1 0A AD
11 94 EF E7 D4 A6 04 BE 54 1F 47 96 EE E7 23 BA 94
12 T: 94 EF E7 D4 A6 04 BE 54
13 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 02 06 00 00
14 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 02 06 00 01
15 C: BA 38 C2 2E 8C E7 D5 C8 DC 89 27 31 E7 77 D0 84
16 S0: 6B 6D EE 0F 3E D9 56 7B C1 69 45 5B 33 14 8F 4D
17 CipherText: C2 6E F6 3C 7A 29 8E CF DD 89 27 31 E7
18 U: FF 82 09 DB 98 DD E8 2F
19 PrePoll encrypted Payload: C2 6E F6 3C 7A 29 8E CF DD 89 27 31 E7
20 FF 82 09 DB 98 DD E8 2F
21 STS-V for POLL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 51 BB 1C DD 34 F8 –
22 1C DD 35 17
23 STS for POLL PPDU: BE 4E 6F 9D 5B 1C 4B 76 51 AF 10 47 40 BA 22 C3 ..
24 45 24 6A 04 FB AE 29 81 58 D2 70 E9 1D EB F6 C3
25 STS-V for 1. RESPONSE PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 51 BC 1C DD 34 F8 –
26 1C DD 35 17
27 STS for 1. RESPONSE PPDU: 68 D3 38 09 A2 6A 26 08 47 0E D7 CC 14 67 2F D1 ..
28 59 F4 F9 EE 2D EC DB CE 03 0D 76 4C 75 A1 7C FA
29 STS-V for FINAL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 51 BD 1C DD 34 F8 –
30 1C DD 35 17
31 STS for FINAL PPDU: C0 B1 17 8D 50 60 C2 D6 70 0C C2 18 29 F6 BC 45 ..
32 B7 26 0E C9 6E 2C DE BB 1E 2E 2D 42 D3 58 26 39
33 FinaData MHR: 49 2B D9 09 16 03 00 00 00 77 8B 07 9D AA 05 00
34 69 DF 04 02 19 80 3F
35 FinaData Payload: 78 56 34 12 01 00 00 00 00 F8 CE 5B 07 00 00 3C
36 0F 01 00 04 05 9E 07 29 00
37 AES-CCM* key K: 01 1A DC 74 BA 88 9E 7E 59 A8 EE 61 88 9D 3F EC
38 Nonce N: AF 2C 32 43 20 AF B5 30 00 00 00 03 06
39 AddAuthData: 00 17 49 2B D9 09 16 03 00 00 00 77 8B 07 9D AA
1 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
2 PlainTextData: 78 56 34 12 01 00 00 00 00 F8 CE 5B 07 00 00 3C
3 0F 01 00 04 05 9E 07 29 00 00 00 00 00 00 00 00
4 AuthData: 00 17 49 2B D9 09 16 03 00 00 00 77 8B 07 9D AA
5 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
6 78 56 34 12 01 00 00 00 00 F8 CE 5B 07 00 00 3C
7 0F 01 00 04 05 9E 07 29 00 00 00 00 00 00 00 00
8 B0: 59 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 19
9 X: AA 21 1A C9 71 A4 FA B8 39 20 22 11 DA 71 B8 B1
10 44 44 62 2D E7 20 05 78 AF F1 86 A8 30 6C 5C B8
11 A8 00 46 D8 0A 92 EB F0 3D CD F5 AD F3 E3 92 F2
12 B0 77 A4 86 F9 E3 0D AE EB AC C8 67 BF 6A 45 32
13 42 DF 7B 1E B6 60 4B 9A 95 DC D0 49 82 33 93 B3
14 T: 42 DF 7B 1E B6 60 4B 9A
15 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 00
16 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 01
17 A2: 01 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 02
18 C: 89 E7 B9 4F 63 EA 41 AC BA 5A BF 44 41 71 6C 01
19 0C C4 F9 0B CC 09 FB 62 66 80 74 6F 8E 5A 76 F0
20 S0: 09 7D 64 94 03 79 2F 64 E3 48 D8 DC BA 59 AC A5
21 CipherText: F1 B1 8D 5D 62 EA 41 AC BA A2 71 1F 46 71 6C 3D
22 03 C5 F9 0F C9 97 FC 4B 66
23 U: 4B A2 1F 8A B5 19 64 FE
24 FinaData encrypted Payload: F1 B1 8D 5D 62 EA 41 AC BA A2 71 1F 46 71 6C 3D
25 03 C5 F9 0F C9 97 FC 4B 66 4B A2 1F 8A B5 19 64 FE
1 00 01 01 01 00 01 00 01 01 00 01 01 01 01 00 00
2 01 01 00 01 00 00 00 01 00 01 00 01 00 00 01 00
3 URSK_KT: D8 C9 51 CA 60 29 A8 FF 5C 89 19 9B 6A E0 73 87
4 30 10 56 AC 34 62 F9 3D B1 AF B2 00 9C D8 9D 2F
5 CMAC-Data(URSK): 00 00 00 01 55 52 53 4B 00 79 E8 65 18 6C BD 86
6 4B 95 56 82 C5 1C DD 34 F8 00 00 00 00 00 00 80
7 dURSK: 45 78 AA 54 D6 63 CB 5A A8 80 70 CD 01 C6 04 A7
8 CMAC-Data(UDSK): 00 00 00 01 55 44 53 4B 00 79 E8 65 18 6C BD 86
9 4B 95 56 82 C5 1C DD 34 F8 00 00 00 00 00 00 80
10 dUDSK: 93 2E 0F 6D 9B B3 93 09 6F E2 4C C7 9A 70 44 47
11 PrePoll MHR: 49 2B D9 09 16 00 00 00 00 77 8B 07 9D AA 05 00
12 69 DF 04 01 0D 80 3F
13 PrePoll Payload: 78 56 34 12 16 CD 5B 07 00 00 00 00 00
14 AES-CCM* key K: 94 CE 7A 78 B6 43 D0 CA C4 E2 E4 F8 B5 F5 5A 4D
15 Nonce N: AF 2C 32 43 20 AF B5 30 00 00 00 00 06
16 AddAuthData: 00 17 49 2B D9 09 16 00 00 00 00 77 8B 07 9D AA
17 05 00 69 DF 04 01 0D 80 3F 00 00 00 00 00 00 00
18 PlainTextData: 78 56 34 12 16 CD 5B 07 00 00 00 00 00 00 00 00
19 AuthData: 00 17 49 2B D9 09 16 00 00 00 00 77 8B 07 9D AA
20 05 00 69 DF 04 01 0D 80 3F 00 00 00 00 00 00 00
21 78 56 34 12 16 CD 5B 07 00 00 00 00 00 00 00 00
22 B0: 59 AF 2C 32 43 20 AF B5 30 00 00 00 00 06 00 0D
23 X: DD 38 D8 1E 45 5A 1B AD A3 58 8C 62 6C 90 EF E7
24 A2 AB 2B AE DE C2 E5 B4 D1 42 9B AF 4D 48 2F 9B
25 E5 2E A2 52 9C 05 9F DD 0F 78 B9 BB A5 54 4D B8
26 CB 2A A9 D5 17 55 E2 40 00 93 E1 78 86 5F 63 D2
27 T: CB 2A A9 D5 17 55 E2 40
28 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 00 06 00 00
29 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 00 06 00 01
30 C: 4A 87 F6 F8 FD EC EF EA EA 19 34 00 43 4D CC 06
31 S0: 11 43 A9 A2 0F F6 E6 C3 B6 CE 61 6C 47 85 65 96
32 CipherText: 32 D1 C2 EA EB 21 B4 ED EA 19 34 00 43
33 U: DA 69 00 77 18 A3 04 83
34 PrePoll encrypted Payload: 32 D1 C2 EA EB 21 B4 ED EA 19 34 00 43
35 DA 69 00 77 18 A3 04 83
36 STS-V for POLL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 4F DB 1C DD 34 F8 –
37 1C DD 35 17
38 STS for POLL PPDU: E8 AE 41 D3 4E 61 87 10 95 A6 2B 65 EF 1F 15 50 ..
39 9D 5F 97 B1 EB 2B 09 55 40 B2 87 72 4B D6 88 76
1 S0: 6B 6D EE 0F 3E D9 56 7B C1 69 45 5B 33 14 8F 4D
2 CipherText: C2 6E F6 3C E6 37 8E CF DD 89 26 0F E7
3 U: 26 7D 7A 43 08 0E 95 CF
4 PrePoll encrypted Payload: C2 6E F6 3C E6 37 8E CF DD 89 26 0F E7
5 26 7D 7A 43 08 0E 95 CF
6 STS-V for POLL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 53 2F 1C DD 34 F8 –
7 1C DD 35 17
8 STS for POLL PPDU: 8F 33 3E 3D D2 5C 0F 57 EB 8B 25 9D 3D 73 DB BC ..
9 F4 12 FA A3 01 20 83 02 FF E0 04 AC 43 60 D3 C5
10 STS-V for 1. RESPONSE PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 53 30 1C DD 34 F8 –
11 1C DD 35 17
12 STS for 1. RESPONSE PPDU: C7 2B 1A 1B CE 0C 86 C8 E8 28 2A 0B 44 3F F5 FB ..
13 B3 CE 69 49 6D FD 40 61 D8 DA B9 DA 6A FA 88 D5
14 STS-V for FINAL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 53 31 1C DD 34 F8 –
15 1C DD 35 17
16 STS for FINAL PPDU: 41 B5 25 D1 2F DE 4A DC 74 02 F5 EB F8 15 28 AB ..
17 B2 58 5D 96 82 ED 93 A8 E3 2C FE A4 37 EA 00 D5
18 Round Index of next Ranging Block (Default Hopping): 00 25
19 FinaData MHR: 49 2B D9 09 16 03 00 00 00 77 8B 07 9D AA 05 00
20 69 DF 04 02 19 80 3F
21 FinaData Payload: 78 56 34 12 01 00 01 25 00 6C D0 5B 07 00 00 3C
22 0F 01 00 B1 04 9E 07 2C 00
23 AES-CCM* key K: 42 C8 4F 42 03 CE 36 DF 09 58 FF 21 CB 39 F2 F0
24 Nonce N: AF 2C 32 43 20 AF B5 30 00 00 00 03 06
25 AddAuthData: 00 17 49 2B D9 09 16 03 00 00 00 77 8B 07 9D AA
26 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
27 PlainTextData: 78 56 34 12 01 00 01 25 00 6C D0 5B 07 00 00 3C
28 0F 01 00 B1 04 9E 07 2C 00 00 00 00 00 00 00 00
29 AuthData: 00 17 49 2B D9 09 16 03 00 00 00 77 8B 07 9D AA
30 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
31 78 56 34 12 01 00 01 25 00 6C D0 5B 07 00 00 3C
32 0F 01 00 B1 04 9E 07 2C 00 00 00 00 00 00 00 00
33 B0: 59 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 19
34 X: F1 F4 F4 BB 98 C3 45 B1 A1 39 09 05 50 0C 89 B2
35 BB 2C B1 43 80 48 6B E5 2B BD E6 E4 70 72 ED EA
36 62 26 07 E2 92 0C B7 C0 C8 5A 3C 75 04 5F 2C D7
37 C8 67 6D FA 41 A6 3A 92 B5 8B 9D 63 7F B1 9E C8
38 4B BD B3 37 B3 B0 89 34 E2 15 B7 48 14 42 64 65
39 T: 4B BD B3 37 B3 B0 89 34
1 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 00
2 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 01
3 A2: 01 AF 2C 32 43 20 AF B5 30 00 00 00 03 06 00 02
4 C: 5F 13 1C E8 FF C1 D0 C6 9B 92 4E 47 B5 27 09 4C
5 2B C8 5C F0 57 B9 1D E5 9B 33 4E 9A 31 81 D2 46
6 S0: C8 E7 95 98 8E 7B 1A 69 48 2A 3B EF CE 43 C5 A7
7 CipherText: 27 45 28 FA FE C1 D1 E3 9B FE 9E 1C B2 27 09 70
8 24 C9 5C 41 53 27 1A C9 9B
9 U: 83 5A 26 AF 3D CB 93 5D
10 FinaData encrypted Payload: 27 45 28 FA FE C1 D1 E3 9B FE 9E 1C B2 27 09 70
11 24 C9 5C 41 53 27 1A C9 9B 83 5A 26 AF 3D CB 93 5D
12 Third Ranging block:
13 STS_Index for Pre Poll: 07 5B D1 B3
14 Frame Counter for Pre Poll: 00 00 00 04
15 CMAC-Data(URSK_KT): 00 00 00 01 55 52 53 4B 5F 4B 54 00 00 00 00 00
16 00 01 01 01 00 01 00 01 01 00 01 01 01 01 00 01
17 00 00 00 01 01 00 01 01 00 00 01 01 00 00 01 00
18 CMAC-Data(URSK_KT): 00 00 00 02 55 52 53 4B 5F 4B 54 00 00 00 00 00
19 00 01 01 01 00 01 00 01 01 00 01 01 01 01 00 01
20 00 00 00 01 01 00 01 01 00 00 01 01 00 00 01 00
21 URSK_KT: 2F B7 E8 39 2D E1 00 6E 6C CB 83 83 AB 12 B5 C0
22 29 85 F4 87 65 F1 C0 B7 89 7F 61 1C B1 67 D8 0D
23 CMAC-Data(URSK): 00 00 00 01 55 52 53 4B 00 79 E8 65 18 6C BD 86
24 4B 95 56 82 C5 1C DD 34 F8 00 00 00 00 00 00 80
25 dURSK: A2 B7 89 A9 27 0E 74 85 D5 D9 48 D1 73 1B 92 4B
26 CMAC-Data(UDSK): 00 00 00 01 55 44 53 4B 00 79 E8 65 18 6C BD 86
27 4B 95 56 82 C5 1C DD 34 F8 00 00 00 00 00 00 80
28 dUDSK: CF 27 C7 7E 15 B9 E6 B9 88 62 90 32 FF 9D EE C9
29 PrePoll MHR: 49 2B D9 09 16 04 00 00 00 77 8B 07 9D AA 05 00
30 69 DF 04 01 0D 80 3F
31 PrePoll Payload: 78 56 34 12 B4 D1 5B 07 02 00 01 25 00
32 AES-CCM* key K: 94 CE 7A 78 B6 43 D0 CA C4 E2 E4 F8 B5 F5 5A 4D
33 Nonce N: AF 2C 32 43 20 AF B5 30 00 00 00 04 06
34 AddAuthData: 00 17 49 2B D9 09 16 04 00 00 00 77 8B 07 9D AA
35 05 00 69 DF 04 01 0D 80 3F 00 00 00 00 00 00 00
36 PlainTextData: 78 56 34 12 B4 D1 5B 07 02 00 01 25 00 00 00 00
37 AuthData: 00 17 49 2B D9 09 16 04 00 00 00 77 8B 07 9D AA
38 05 00 69 DF 04 01 0D 80 3F 00 00 00 00 00 00 00
39 78 56 34 12 B4 D1 5B 07 02 00 01 25 00 00 00 00
1 B0: 59 AF 2C 32 43 20 AF B5 30 00 00 00 04 06 00 0D
2 X: 77 6D 21 76 CF AA D5 17 95 E7 C1 A0 D0 09 48 18
3 D5 5F B6 8F 77 C3 87 E6 31 CD A1 0C 49 C9 97 87
4 05 62 09 AD 05 80 F9 5B 25 76 7A A8 91 01 53 69
5 88 8E 6E 6E 50 AD FA 4D 36 31 F1 A6 7B A4 7C CA
6 T: 88 8E 6E 6E 50 AD FA 4D
7 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 04 06 00 00
8 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 04 06 00 01
9 C: AA 3A 5F C4 60 B9 7D 9D 43 60 01 22 99 E7 DF 11
10 S0: 49 68 F9 C5 37 C4 FD C6 D3 50 6F 48 65 D7 72 37
11 CipherText: D2 6C 6B D6 D4 68 26 9A 41 60 00 07 99
12 U: C1 E6 97 AB 67 69 07 8B
13 PrePoll encrypted Payload: D2 6C 6B D6 D4 68 26 9A 41 60 00 07 99 C1 E6 97
14 AB 67 69 07 8B
15 STS-V for POLL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 54 79 1C DD 34 F8 –
16 1C DD 35 17
17 STS for POLL PPDU: D9 9B 10 0A C2 38 BB 61 3C 9E 26 94 57 9D C9 C6 ..
18 CF C4 28 0D E1 09 5E 22 80 54 64 38 B0 75 CC 30
19 STS-V for 1. RESPONSE PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 54 7A 1C DD 34 F8 –
20 1C DD 35 17
21 STS for 1. RESPONSE PPDU: DD 39 EC 72 E6 CD AC FF E1 17 3B AA 3E 77 3C B3 ..
22 4C F1 78 CB 1C 47 68 E8 9C 74 17 A0 25 5B 17 3D
23 STS-V for FINAL PPDU: 79 E8 65 18 6C BD 86 4B 9C B2 54 7B 1C DD 34 F8 –
24 1C DD 35 17
25 STS for FINAL PPDU: 2F FD 4E F7 3A 8B EC 9E 6D 62 FF F8 B1 34 A0 7A ..
26 53 D8 A3 FB 00 23 05 D7 AE 7D 5A DE 87 EB 87 C4
27 Round Index of next Ranging Block (Default Hopping): 00 0C
28 FinaData MHR: 49 2B D9 09 16 05 00 00 00 77 8B 07 9D AA 05 00
29 69 DF 04 02 19 80 3F
30 FinaData Payload: 78 56 34 12 02 00 01 0C 00 B6 D1 5B 07 00 00 3C
31 0F 01 00 C0 04 9E 07 2C 00
32 AES-CCM* key K: CF 27 C7 7E 15 B9 E6 B9 88 62 90 32 FF 9D EE C9
33 Nonce N: AF 2C 32 43 20 AF B5 30 00 00 00 05 06
34 AddAuthData: 00 17 49 2B D9 09 16 05 00 00 00 77 8B 07 9D AA
35 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
36 PlainTextData: 78 56 34 12 02 00 01 0C 00 B6 D1 5B 07 00 00 3C
37 0F 01 00 C0 04 9E 07 2C 00 00 00 00 00 00 00 00
38 AuthData: 00 17 49 2B D9 09 16 05 00 00 00 77 8B 07 9D AA
39 05 00 69 DF 04 02 19 80 3F 00 00 00 00 00 00 00
1 78 56 34 12 02 00 01 0C 00 B6 D1 5B 07 00 00 3C
2 0F 01 00 C0 04 9E 07 2C 00 00 00 00 00 00 00 00
3 B0: 59 AF 2C 32 43 20 AF B5 30 00 00 00 05 06 00 19
4 X: 70 B8 B0 47 F2 D5 2F CF 2C CB E6 9E 75 08 FE FE
5 51 1C 21 74 E3 D8 D9 70 39 5D F6 6B 9E AB 49 7A
6 B7 49 31 26 50 97 E6 06 5E 77 67 5F 33 9E 52 3F
7 23 00 69 8F 0D EA 5A D7 82 72 86 09 D3 36 6A 96
8 46 09 CE AE 51 E6 AF 42 7A 3D B2 C0 AD 68 E6 B1
9 T: 46 09 CE AE 51 E6 AF 42
10 A0: 01 AF 2C 32 43 20 AF B5 30 00 00 00 05 06 00 00
11 A1: 01 AF 2C 32 43 20 AF B5 30 00 00 00 05 06 00 01
12 A2: 01 AF 2C 32 43 20 AF B5 30 00 00 00 05 06 00 02
13 C: 1E 33 E7 49 01 D8 64 E1 DB 6C 6B E0 6C 3B CF 1D
14 41 77 C7 8E 21 A1 52 FE D5 67 DA 56 3A 1B B9 C4
15 S0: E5 07 B5 67 1A A8 DB 47 51 92 17 AB 6B D7 AC 21
16 CipherText: 66 65 D3 5B 03 D8 65 ED DB DA BA BB 6B 3B CF 21
17 4E 76 C7 4E 25 3F 55 D2 D5
18 U: A3 0E 7B C9 4B 4E 74 05
19 FinaData encrypted Payload: 66 65 D3 5B 03 D8 65 ED DB DA BA BB 6B 3B CF 21
20 4E 76 C7 4E 25 3F 55 D2 D5 A3 0E 7B C9 4B 4E 74 05
21