Skip to content

Commit

Permalink
restored protocols.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
frankmorgner committed Jun 7, 2023
1 parent c53c5bd commit cb22794
Showing 1 changed file with 245 additions and 0 deletions.
245 changes: 245 additions & 0 deletions src/docs/protocols.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
.. _protocols:

.. |PACE| replace:: :abbr:`PACE (Password Authenticated Connection Establishment)`
.. |TA| replace:: :abbr:`TA (Terminal Authenticatation)`
.. |CA| replace:: :abbr:`CA (Chip Authentication)`
.. |EAC| replace:: :abbr:`EAC (Extended Access Control)`

#####################################
Extended Access Control Specification
#####################################

Extended Access Control version 2 (EAC) defined by the `Federal Office for
Information Security (BSI)`_ in the `Technical Guideline TR-03110`_. It is
designed to be compatible and submitted to be standardized with `ICAO Machine
Readable Travel Documents Doc 9303`_. |EAC| consists of three subsequent
steps:

1. `Password Authenticated Connection Establishment`_ (PACE)
2. `Terminal Authentication`_ (TA)
3. `Chip Authentication`_ (CA)

The following description of |PACE|, |TA| and |CA| is cited from BSI TR-03110
(Version 2.05). With Terminal or PCD and MRTD chip or PICC we denote the two
parties involved in |EAC|.


***********************************************
Password Authenticated Connection Establishment
***********************************************

The PACE Protocol is a password authenticated Diffie-Hellman key agreement
protocol that provides secure communication and explicit password-based
authentication of the MRTD chip and the terminal (i.e. MRTD chip and terminal
share the same password :math:`\pi`).

Protocol Specification
======================

The following steps are performed by the terminal and the MRTD chip:

1. The MRTD chip randomly and uniformly chooses a nonce :math:`s`, encrypts the
nonce to :math:`z=\operatorname{E} ( K_\pi , s)`, where
:math:`K_\pi=\operatorname{KDF}_\pi(\pi)` is derived from the shared
password :math:`\pi`, and sends the ciphertext :math:`z` together with the
static domain parameters :math:`D_{\text{PICC}}` to the terminal.
2. The terminal recovers the plaintext :math:`s=\operatorname{D}( K_\pi , z )`
with the help of the shared password :math:`\pi`.
3. Both the MRTD chip and the terminal perform the following steps:

a. They compute the ephemeral domain parameters :math:`\widetilde{D}
=\operatorname{Map}( D_{\text{PICC}} , s )`.
b. They perform an anonymous Diffie-Hellman key agreement based on the
ephemeral domain parameters and generate the shared secret.

.. math::

K =\operatorname{KA} ( \widetilde{SK_{\text{PICC}}} ,
\widetilde{PK_{\text{PCD}}} , \widetilde{D}) =\operatorname{KA} (
\widetilde{SK_{\text{PCD}}} , \widetilde{PK_{\text{PICC}}} ,
\widetilde{D} )

During Diffie-Hellman key agreement, each party SHOULD check that the
two public keys :math:`\widetilde{PK_{\text{PICC}}}` and
:math:`\widetilde{PK_{\text{PCD}}}` differ.

c. They derive session keys.

.. math::

K_{\text{MAC}} =\operatorname{KDF}_{\text{MAC}} ( K )\text{ and }
K_{\text{Enc}}=\operatorname{KDF}_{\text{Enc}} ( K )

d. They exchange and verify the authentication token.

.. math::

T_{\text{PCD}} =\operatorname{\text{MAC}}( K_{\text{MAC}} ,
\widetilde{PK_{\text{PICC}}} )\text{ and }T_{\text{PICC}}
=\operatorname{\text{MAC}}( K_{\text{MAC}} ,
\widetilde{PK_{\text{PCD}}} )

ECDH Mapping
============

Let :math:`G` and :math:`\widetilde{G}` be the static and an ephemeral base
point on the elliptic curve.

Generic Mapping
---------------

The function :math:`\operatorname{Map}:G \mapsto \widetilde{G}` is defined as
:math:`\widetilde{G} =s\cdot G+H`, where :math:`H \in \langle G \rangle` is
chosen s.th. :math:`\log_G H` is unknown. The point :math:`H` SHALL be
calculated by an anonymous Diffie-Hellman Key Agreement.

Note: The key agreement algorithm ECKA prevents small subgroup attacks by using
compatible cofactor multiplication.

Integrated Mapping
------------------

The Integrated ECDH Mapping is specified by ICAO.

DH Mapping
==========

Let :math:`g` and :math:`\widetilde{g}` be the static and an ephemeral
generator.

Generic Mapping
---------------

The function :math:`\operatorname{Map}: g \mapsto \widetilde{g}` is defined as
:math:`\widetilde{g} =g^s \cdot h`, where :math:`h \in \langle g \rangle` is
chosen s.th. :math:`\log_g h` is unknown. The group element :math:`h` SHALL be
calculated by an anonymous Diffie-Hellman Key Agreement.

Note: The public key validation method described in RFC 2631 MUST be used to
prevent small subgroup attacks.

Integrated Mapping
------------------

The Integrated DH Mapping is specified by ICAO.


***********************
Terminal Authentication
***********************

The Terminal Authentication Protocol is a two move challenge-response
protocol that provides explicit unilateral authentication of the terminal.

In this protocol :math:`ID_{\text{PICC}}` is an identifier of the MRTD chip:

- If BAC is used :math:`ID_{\text{PICC}}` is the MRTD chip’s Document Number as
contained in the MRZ including the check digit.
- If PACE is used :math:`ID_{\text{PICC}}` is computed using the MRTD chip’s
ephemeral PACE public key, i.e. :math:`ID_{\text{PICC}} =\operatorname{Comp}
(\widetilde{PK_{\text{PICC}}})`

Note: All messages MUST be transmitted with Secure Messaging in
Encrypt-then-Authenticate mode using session keys derived from PACE or Chip
Authentication.

Protocol Specification
======================

The following steps are performed by the terminal and the MRTD chip.

1. The terminal sends a certificate chain to the MRTD chip. The chain starts
with a certificate verifiable with the CVCA public key stored on the chip
and ends with the Terminal Certificate.
2. The MRTD chip verifies the certificates and extracts the terminal’s public
key :math:`PK_{\text{PCD}}`.
3. Version 2 only:

a. The terminal generates an ephemeral Diffie-Hellman key pair
:math:`(\widetilde{SK_{\text{PCD}}} , \widetilde{PK_{\text{PCD}}} ,
D_{\text{PICC}} )`, and sends the compressed ephemeral public key
:math:`\operatorname{Comp}( \widetilde{PK_{\text{PCD}}})` to the MRTD chip.
b. The terminal may send auxiliary data :math:`A_{\text{PCD}}` to the MRTD
chip.

4. The MRTD chip randomly chooses a challenge :math:`r_{\text{PICC}}` and sends
it to the terminal.
5. The terminal responds with the signature.

.. math::

s_{\text{PCD}} =\operatorname{Sign}( SK_{\text{PCD}} , ID_{\text{PICC}}
\parallel r_{\text{PICC}} \parallel
\operatorname{Comp}(\widetilde{PK_{\text{PCD}}})\parallel
A_{\text{PCD}} )

6. The MRTD chip checks that

.. math::

\operatorname{Verify} ( PK_{\text{PCD}} , s_{\text{PCD}} ,
ID_{\text{PICC}}\parallel r_{\text{PICC}}\parallel
\operatorname{Comp}(\widetilde{PK_{\text{PCD}}})\parallel
A_{\text{PCD}} ) = \operatorname{true}


*******************
Chip Authentication
*******************

The Chip Authentication Protocol is an ephemeral-static Diffie-Hellman key
agreement protocol that provides secure communication and unilateral
authentication of the MRTD chip.

The protocol provides explicit authentication of the MRTD chip by verifying
the authentication token and implicit authentication of the stored data by
performing Secure Messaging using the new session keys.

Protocol Specification
======================

In this version Terminal Authentication MUST be performed before Chip
Authentication, as the terminal's ephemeral key pair
:math:`(\widetilde{SK_{\text{PCD}}}, \widetilde{PK_{\text{PCD}}},
\widetilde{D_{\text{PICC}}})` is generated as part of Terminal Authentication.

1. The MRTD chip sends its static Diffie-Hellman public key
:math:`PK_{\text{PICC}}` and the domain parameters :math:`D_{\text{PICC}}`
to the terminal.
2. The terminal sends the ephemeral public key
:math:`\widetilde{PK_{\text{PCD}}}` to the MRTD chip.
3. The MRTD chip computes the terminal’s compressed ephemeral public key
:math:`\operatorname{Comp}(\widetilde{PK_{\text{PCD}}})` and compares this
to the compressed public key received in Terminal Authentication.
4. Both the MRTD chip and the terminal compute the shared
secret.

.. math::

K=\operatorname{KA}(SK_{\text{PICC}}, \widetilde{PK_{\text{PCD}}},
D_{\text{PICC}})=\operatorname{KA}(\widetilde{SK_{\text{PCD}}},
PK_{\text{PICC}}, D_{\text{PICC}})

5. The MRTD chip randomly chooses a nonce :math:`r_{\text{PICC}}`, derives
session keys :math:`K_{\text{MAC}}=\operatorname{KDF}_{\text{MAC}}(K,
r_{\text{PICC}})` and :math:`K_{\text{Enc}} =
\operatorname{KDF}_{\text{Enc}} ( K , r_{\text{PICC}} )` for Secure
Messaging from :math:`K` and :math:`r_{\text{PICC}}`, computes the
authentication token :math:`T_{\text{PICC}} =\operatorname{\text{MAC}}(
K_{\text{MAC}} , \widetilde{PK_{\text{PCD}}})` and sends
:math:`r_{\text{PICC}}` and :math:`T_{\text{PICC}}` to the terminal.
6. The terminal derives session keys :math:`K_{\text{MAC}}
=\operatorname{KDF}_{\text{MAC}} ( K , r_{\text{PICC}})` and
:math:`K_{\text{Enc}} =\operatorname{KDF}_{\text{Enc}} ( K , r_{\text{PICC}}
)` for Secure Messaging from :math:`K` and :math:`r_{\text{PICC}}` and
verifies the authentication token :math:`T_{\text{PICC}}`.

To verify the authenticity of the :math:`PK_{\text{PICC}}` the terminal SHALL
perform Passive Authentication.


.. target-notes::

.. _`Federal Office for Information Security (BSI)`: https://www.bsi.bund.de
.. _`Technical Guideline TR-03110`: https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/TR03110/BSITR03110.html
.. _`ICAO Machine Readable Travel Documents Doc 9303`: http://www.icao.int/Security/mrtd/Pages/Doc9393.aspx

0 comments on commit cb22794

Please sign in to comment.