Kaay Display-TAN

Display-TAN Version 2

This page is a description of the version 2 of the Display-TAN interface between bank server/smartphone and card.

Compared with version 1 we have the following extensions:

Software Extensions
  1. AES128 encryption/decryption.
    • Purpose: Defense against sniffing, for example by colleagues or neighbors. Moreover, it represents a server authentication at the card for the seed perso function.
  2. Up to 8 visualized sub-challenges can be shown to the user (instead of exactly 2).
    • Purpose: More flexibility, for example for IBAN.
    • The special case with 0 visualized sub-challenges is a challenge/response methode, for example for login without typing the OTP.
    • Any printable ASCII characters are allowed. Note that only the ones presentable with 7 segments are shown.
  3. Additional event-based OTP
    • Purpose: Login, other kinds of transactions, etc.
  4. Seed perso
    • Purpose: seed perso via Bluetooth. With it, a final seed perso of the card via the user's smartphone is possible.


General Protocol

The general protocol is the following.

Both smartphone and card are sending BLE signals that they are ready.
The bank server sends via smartphone to the card a query Q
a) if Q = ''PERSO_QUERYID'' (unencrypted), then the card executes the Query-ID Workflow;
otherwise Q is decrypted with the current AES-key to decr(Q)
b) if decr(Q) = ''OCRA~<F>~<N>~<C1>~...~<Cn>~ENDOCRA'', then the card executes the OCRA Workflow;
c) if decr(Q) = ''PERSO_SETSEED~s~k~ENDPERSO'', then the card executes the Set-Seed Workflow;
d) in any other case the card answers ''ERROR''.



OCRA Workflow

1)The bank server sends via smartphone to the card the encrypted query
The card decrypts and will show the n sub-challenges <C1>,...,<Cn> to the bank customer successively for confirmation (the flags <F> and the nonce <N> are not shown). In case the bank customer confirms every single sub-challenge the card will generate the 8-digit TAN
2)and will send it to the smartphone as an 8-digit string.

Here is an IBAN money transfer as an example. See the image to the right what is shown and confirmed on the card.

1)smartphone to card (will be encrypted): OCRA~~123456abcXYZ~DE41~60391310  ~0757292001~EUR   98,00~ENDOCRA
2)card to smartphone: 91696086

The syntax of the <Ci>, and <N> is decribed below. But first, here is an online test interface.

Test Interface

Data string transmitted via BLE from smartphone to display card (paste a valid query):

OCRA computation steps:

1)qdata string:OCRA~~123456abcXYZ~DE41~60391310  ~0757292001~EUR   98,00~ENDOCRA
Fatal error: Uncaught Error: Call to undefined function mcrypt_encrypt() in /homepages/5/d407972601/htdocs/display-tan/ocra/V2.php:139 Stack trace: #0 {main} thrown in /homepages/5/d407972601/htdocs/display-tan/ocra/V2.php on line 139