Secondo PSD2 gli elementi dell'autenticazione a più fattori devono essere indipendenti, quindi il compromesso di un elemento non compromette l'altro.
Ecco l'articolo dalla direttiva:
*Article 9
Independence of the elements,
- Payment service providers shall ensure that the use of the elements of strong customer authentication referred to in Articles 6, 7 and 8 shall be subject to measures in terms of technology, algorithms and parameters, which ensure that the breach of one of the elements does not compromise the reliability of the other elements.
- Where any of the elements of strong customer authentication or the authentication code is used through a multi-purpose device including mobile phones and tablets, payment service providers shall adopt security measures to mitigate the risk resulting from the multi-purpose device being compromised.
- For the purposes of paragraph 2, the mitigating measures shall include each of the following: (a) the use of separated secure execution environments through the software installed inside the multi-purpose device; (b) mechanisms to ensure that the software or device has not been altered by the payer or by a third party or mechanisms to mitigate the consequences of such alteration where this has taken place.*
La domanda è cosa potrebbe essere considerato indipendente in questo caso?
Immaginiamo il seguente scenario:
Il cliente utilizza il browser del suo telefono per accedere al sito web di banking online. La password e un altro elemento (basato sul possesso) sono richiesti per l'autenticazione.
Nel caso in cui il secondo fattore sia una password monouso inviata via SMS al telefono, un singolo malware è sufficiente per compromettere il telefono, installare un keylogger per rubare la password e rubare l'SMS non appena arriva.
Basato su questo OTP via SMS è un no.
Ora supponiamo che lo SMS OTP sia sostituito da una notifica push (il cliente dovrebbe installare in precedenza l'applicazione mobile della Banca). Ci sono poche possibilità per l'esatta implementazione:
-
un OTP viene inviato tramite push
-
viene visualizzata una finestra di approvazione e l'utente deve toccare il pulsante Approve (proprio come fa Google)
-
viene visualizzato un CAPTCHA e l'utente deve risolverlo
-
Generazione OTP con token software
-
ecc.
In caso di una delle soluzioni sopra menzionate, se l'utente malintenzionato può sfruttare una vulnerabilità nel sistema operativo del telefono e ottenere il permesso di root, è in grado di rubare la password del cliente e convalidare la transazione con il secondo fattore di autenticazione almeno teoricamente ( installando un qualche tipo di strumento di accesso remoto).
I token rigidi sono un no go anche a causa dei motivi dell'esperienza utente.
La sandbox separata utilizzata da Android e iOS potrebbe essere considerata un ambiente di esecuzione sicuro che rispetterebbe la seguente parte della direttiva?
The use of separated secure execution environments through the software installed inside the multi-purpose device
Quale potrebbe essere una soluzione efficace che rispetti il regolamento e sia anche conveniente per il cliente?