Dit is een app om gebruikers te authenticeren via hun mobiele telefoon, door het decoderen van een eenmalig wachtwoord versleuteld door de server met behulp van een publieke sleutel. De app is geschikt voor ieder web-service die deze wijze van verificatie implementeert.
(Zie de github tracker voor meer informatie over hoe u dit authenticatie op de server-side te voeren)
De app kan worden gebruikt met een onbeperkt aantal vertrouwende partijen, als dezelfde publieke sleutel wordt gebruikt met alle partijen. Zodra de app is ingeschreven, de app genereert een apparaat-specifieke sleutelpaar die aanwezig voor de hele levensduur van de app is (tot haar geïnstalleerde). Het bijwerken van de app zal de sleutel echter niet gewist.
Github Tracker: https://github.com/sebastiannielsen/QRSA
Vereisten voor het uitvoeren van de app:
1. De telefoon moet hardware gebaseerde opslag te ondersteunen. Dit is een opslag die een "Security chip" gebruikt in de telefoon, waardoor het onmogelijk is om de sleutel van de telefoon kopiëren.
2. De winkel moet worden geïnitialiseerd. Soms is het mogelijk om de winkel te initialiseren door het opzetten van een PIN-lock-scherm, en dan gewoon het genereren van een sleutel. Het verwijderen van het slot scherm zal meestal houden de sleutel, tenzij de belangrijkste eigenschappen is opgezet om lock-scherm nodig hebben.
3. In sommige gevallen moet een veilige lock-scherm worden gebruikt. Dit is afhankelijk van type telefoon.
4. De beveiligde chip in de telefoon, dient te ondersteunen op basis van 2048-bits RSA / ECB / PKCS1.5
5. In sommige gevallen kan een geworteld telefoon permanent de beveiligings-chip om veiligheidsredenen uit te schakelen.
// E vanuit een browser of gelijkaardig: om in te schrijven, moet je de URL qrsa lanceren. U kunt ook inschrijven via een callback URL, met behulp van qrsa: // u. Om u te gebruiken, moet u eerst toevoegen van een "s" als u wilt HTTPS, of iets anders voor HTTP gebruiken. Dan is het hele URL te noemen, zonder de regeling, in URLSafe Base64 formaat. De publieke sleutel wordt toegevoegd aan het einde van de URL. Als het apparaat niet compatibel, zal INCOMPATIBLE_DEVICE en is het uw verantwoordelijkheid weer een zinvolle foutbericht terug naar de gebruiker.
Te authenticeren, lanceer je de url qrsa: // s of qrsa: // c gevolgd door URLSafe Base64 gecodeerde gegevens van de RSA publieke sleutel versleutelde tekst in het formaat PADDING :: OTP :: BERICHT :: HASH :: PADDING. De "s" actie is bedoeld voor gescande evenementen en zal te zien zijn als OTP tekst op het scherm. De "c" actie is bedoeld voor click evenementen. Het verschil is dat de klik gebeurtenissen zal de OTP code worden gezet in het klembord van de gebruiker in plaats daarvan, zodat de gebruiker direct kan overgaan tot de code binnen het veld OTP plakken.
Hash wordt gebouwd door het creëren van een MD5 van OTP + BERICHT + OTP, waarbij + geeft tekenreekssamenvoegingsoperator. Dit HASH beschermt tegen een aantal ruwe vormen van maakbaarheid aanvallen op de versleutelde tekst. De ingeklemd constructie voorkomt dat een aanvaller van het verplaatsen van de scheiding tussen OTP en boodschap.
Merk op dat de screenshots van de app met opzet is gecensureerd om te voorkomen dat handelsmerken en / of inbreuken op het auteursrecht (UI van Android en andere apps zijn auteursrechtelijk beschermd), zoals de interactie in de app wordt geleverd via een dialoogvenster dat op de top van de roeping verschijnen app die ervoor zorgde dat de authenticatie te gebeuren.
Als er problemen op de app, kunt u bijvoorbeeld code en meer instructies op de openbare GitHub pagina vinden, want deze app is Open Source.
Ook voel je vrij om eventuele problemen in de publieke GitHub tracker te creëren.