• [^] # Re: Banques

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Webo0.b. Évalué à 10.

    Hello,

    la fameuse calculette qui semble si étrangères aux français est pourtant diablement répandue dans le monde (belgique, uk, luxembourg…) et c'est un bête OTP tout con. Elle existe sous plusieurs formes : application mobile, application desktop, web, lecteur de carte à puce, calculette simple, ou juste un bouton avec un écran.

    Comment ça marche ?

    C'est simple : la calculette contient une horloge temps réel et une batterie. Quand on veut s'identifier chez sa banque la calculette (ou terminal) renvoie un code secret (un truc basé sur la carte à puce pour les lecteurs à carte à puce, ou un numéro unique stocké dans la puce dans les autres cas) combiné à l'heure courante, chiffré avec un algo standard (DES, 3-DES ou AES, ça dépends du terminal et de la banque).

    Parfois l'heure est remplacée par un numéro qui s'incrémente à chaque demande de mot de passe, ou une combinaison numéro + heure. C'est très similaire à S/Key, c'est rien de très nouveau.

    La banque de son côté connaît le même code secret (c'est un secret partagé), et connaît aussi l'heure courante, et va donc comparer ce qu'elle obtient par crypt(code + heure) à ce que le client a renvoyé.

    Ça c'est l'utilisation basique. Normalement, et si la banque est intelligente, on peut aussi signer ses transactions (virements par exemple) avec le terminal. C'est à dire qu'une fois la demande de virement faite sur le site de la banque, au lieu de recevoir un SMS (bouh honte aux banques françaises), le site nous donne une suite de chiffre à taper sur le terminal. On rentre les chiffres, on valide avec le code secret, et ça ressort une autre suite de chiffres. C'est une signature électronique assez simple mais relativement efficace.

    Bon je détaille pas tout mais comme vous vous en doutez le code renvoyé pour l'identification contient aussi quelques bits qui servent à resynchroniser banque et terminal, car l'horloge interne du terminal ne sera jamais à la même heure exacte. De même le temps est tout relatif pour le terminal, pour simplifier justement il ne compte pas en secondes, mais par intervalles de X secondes (de 32 à 256 secondes je crois).

    Un petit topo est dispo ici : http://users.swing.be/michel.hoffmann/faq.htm

    Pour Weboob la calculette n'est pas un obstacle. Tenter de recréer son fonctionnement serait à mon avis une perte de temps, car il faudrait obtenir le secret partagé entre banque et terminal. La banque ne nous le donnera pas, et le terminal, si c'est un truc à carte à puce vous pouvez être sûr que ça dépends d'un truc proprio EMV (Eurocard/Mastercard/Visa) et donc de gros intérêts financiers qui ne voudront pas vous dire comment y accéder. Sans compter que si chaque personne doit avoir un lecteur de carte à puce connecté à son PC pour récupérer ce secret, ça va être tendu.

    Bref le plus simple est d'intégrer le processus de la calculette dans le backend et dans les interfaces, et quand on veut accéder à ce compte ça demande de taper le code. Je sais pas comment fonctionne boobank pour les banques où il faut valider par SMS/Mail, pas encore eu l'occaze de tester, mais si ça existe déjà ça devrait pas être très dur de gérer aussi la signature de virement.

    Par contre ça bloque la possibilité d'automatiser ces backends, mais c'est aussi le principe de ce moyen de sécurisation.

    « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)