SMS-Nachrichten sind die beliebteste Methode der Zwei-Faktor-Authentifizierung (2FA). Sie wird von Banken, elektronischen und Krypto-Wallets, E-Mail-PostfÀchern und verschiedenen Diensten verwendet; .
Ich finde es empörend, dass diese Methode nicht sicher ist. Die Zuweisung einer Telefonnummer von einer SIM-Karte auf eine andere gibt es schon seit den AnfĂ€ngen der Mobilkommunikation â so wird die Nummer bei Verlust der SIM-Karte wiederhergestellt. "Spezialisten fĂŒr den Diebstahl digitaler Geldmittel" haben erkannt, dass man die Option "SIM-Karten-Neuzuweisung" in betrĂŒgerischen Machenschaften nutzen kann. Wer die SIM-Karte kontrolliert, kann auch auf das Online-Banking sowie auf elektronische Wallets und sogar auf KryptowĂ€hrungen zugreifen. Es ist möglich, die Nummer einer anderen Person durch Bestechung eines Telekommitarbeiters, durch TĂ€uschung oder mit gefĂ€lschten Dokumenten zu ĂŒbernehmen.

Tausende Episoden des SIM-Swap-Betrugs wurden aufgedeckt â so nennt man dieses Betrugsschema. Das AusmaĂ der Tragödie deutet darauf hin, dass die Welt bald von SMS-2FA Abstand nehmen wird. Doch das passiert nicht â in wird berichtet, dass nicht die Nutzer, sondern die Inhaber der Dienste die Methode 2FA wĂ€hlen.
Wir bieten eine sichere 2-Faktor-Authentifizierung mit der Lieferung von Einmalcodes ĂŒber die Blockchain an und erklĂ€ren dem Dienstanbieter, wie er diese aktivieren kann.
Es geht um Millionen.
2019 stieg SIM-Swapping-Betrug laut der Londoner Polizei um 63 %, wobei der "Durchschnittsbetrag" des TĂ€ters bei 4.000 GBP lag. Statistiken aus Russland habe ich nicht gefunden, nehme jedoch an, dass es dort noch schlimmer ist.
SIM-Swapping wird verwendet, um beliebte Konten auf Twitter, Instagram, Facebook, VK und Bankkonten zu stehlen. KĂŒrzlich wurden sogar KryptowĂ€hrungen Ziel dieser MaĂnahme. laut dem Bitcoin-Unternehmer Joby Wicks. Seit 2016 tauchen in der Presse immer wieder spektakulĂ€re FĂ€lle von KryptowĂ€hrungsdiebstahl durch SIM-Swapping auf; 2019 war der wirkliche Höhepunkt.
Im Mai erhob die Staatsanwaltschaft der USA im östlichen Bezirk von Michigan Neun junge Menschen im Alter von 19 bis 26 Jahren: Sie gehören vermutlich zu einer Hackergruppe namens âThe Communityâ. Der Bande werden sieben SIM-Swap-Attacken zur Last gelegt, bei denen die Hacker KryptowĂ€hrungen im Wert von ĂŒber 2,4 Millionen Dollar erbeutet haben. Im April wurde der Student aus Kalifornien, Joel Ortiz, zu 10 Jahren GefĂ€ngnis verurteilt, weil er sich durch SIM-Swap 7,5 Millionen Dollar in KryptowĂ€hrungen angeeignet hat.

Foto von Joel Ortiz auf einer Pressekonferenz an der UniversitÀt. Zwei Jahre spÀter wird er wegen Cyberbetrugs festgenommen.
Funktionsweise des SIM-Swapping
âSwappingâ bedeutet Tauschen. Bei solchen BetrugsplĂ€nen nehmen sich die TĂ€ter die Telefonnummer des Opfers, normalerweise durch die Neuausstellung einer SIM-Karte, und nutzen sie zum ZurĂŒcksetzen von Passwörtern. Typisches SIM-Swapping sieht theoretisch so aus:
- Ermittlungen. Die BetrĂŒger erlangen persönliche Daten des Opfers: Name und Telefonnummer. Diese Informationen können in öffentlichen Quellen (Soziale Netzwerke, Freunde) gefunden oder von einem Komplizen â einem Mitarbeiter des Mobilfunkanbieters â erhalten werden.
- Sperrung. Die SIM-Karte des Opfers wird deaktiviert; dazu genĂŒgt ein Anruf beim Kundenservice des Anbieters, wo man die Nummer angibt und erklĂ€rt, dass das Telefon verloren wurde.
- Die Ăbertragung einer Telefonnummer auf eine eigene SIM-Karte erfolgt in der Regel ebenfalls ĂŒber einen Mittelsmann im Telekommunikationsunternehmen oder durch gefĂ€lschte Dokumente.
In der RealitĂ€t ist es noch schwerer. Angreifer wĂ€hlen ihr Opfer aus und verfolgen dann tĂ€glich den Standort des Telefons â eine Anfrage nach Informationen, dass der Abonnent ins Roaming gewechselt ist, kostet 1-2 Cent. Sobald der EigentĂŒmer der SIM-Karte ins Ausland reist, vereinbaren sie mit einem Mitarbeiter im GeschĂ€ft die Herausgabe einer neuen SIM-Karte. Das kostet etwa 50 $ (ich habe Informationen gefunden â in verschiedenen LĂ€ndern und bei verschiedenen Anbietern zwischen 20 $ und 100 $), wobei der Mitarbeiter im schlimmsten Fall entlassen wird â es gibt keine Verantwortung dafĂŒr.
Jetzt erhĂ€lt der Angreifer alle SMS, wĂ€hrend der EigentĂŒmer des Telefons nichts dagegen tun kann â er ist im Ausland. Und dann erhalten die Gauner Zugang zu allen Konten des Opfers und können bei Bedarf die Passwörter Ă€ndern.
Die Chancen, das Gestohlene zurĂŒckzubekommen
Manchmal zeigen Banken VerstĂ€ndnis fĂŒr die Opfer und stornieren Ăberweisungen von deren Konten. Daher ist es möglich, Fiat-Geld zurĂŒckzubekommen, auch wenn der TĂ€ter nicht gefasst wird. Aber mit Krypto-Wallets ist es komplizierter â und technisch, und gesetzlich. Bis jetzt hat keine Börse/Wallet EntschĂ€digungen an die Opfer von Swapping gezahlt.
Wenn die Betroffenen ihr Geld gerichtlich einklagen wollen, beschuldigen sie den Betreiber: Er hat die Bedingungen fĂŒr den Diebstahl von Geldern vom Konto geschaffen. So erging es , der durch Swapping 224 Millionen Dollar verloren hat. Jetzt klagt er gegen das Telekommunikationsunternehmen AT&T.

Bisher gibt es in keinem Land funktionierende Modelle, um die EigentĂŒmer von KryptowĂ€hrungen gesetzlich zu schĂŒtzen. Es ist unmöglich, sein Kapital zu versichern oder eine EntschĂ€digung fĂŒr dessen Verlust zu erhalten. Daher ist es einfacher, einen Swapping-Angriff zu verhindern, als seine Folgen zu bekĂ€mpfen. Der offensichtlichste Weg ist die Verwendung eines zuverlĂ€ssigen 'zweiten Faktors' fĂŒr 2FA.
SIM-Swapping ist nicht das einzige Problem bei 2FA ĂŒber SMS
BestÀtigungscodes in SMS sind unsicher und auch technisch gesehen. Nachrichten können aufgrund von unbehobenen SicherheitsanfÀlligkeiten im Signalisierungssystem Signaling System 7 (SS7) abgefangen werden. 2FA per SMS wird offiziell als unsicher angesehen (das National Institute of Standards and Technology der USA weist in seinem ).
Gleichzeitig vermittelt die Verwendung von 2FA oft ein GefĂŒhl der falschen Sicherheit, sodass Benutzer sich fĂŒr einfachere Passwörter entscheiden. Dadurch erleichtert diese Art der Authentifizierung potenziellen Angreifern den Zugang zum Konto.
AuĂerdem kommen SMS hĂ€ufig mit groĂer Verzögerung an oder erreichen den EmpfĂ€nger ĂŒberhaupt nicht.
Andere Methoden der 2FA
NatĂŒrlich sind Smartphones und SMS nicht die einzigen Mittel. Es gibt auch andere 2FA-Methoden. Zum Beispiel Einmal-TAN-Codes: Diese Methode ist einfach, aber effektiv â sie wird immer noch von einigen Banken verwendet. DarĂŒber hinaus gibt es Systeme, die biometrische Daten nutzen, wie FingerabdrĂŒcke oder Netzhautscans. Eine weitere Option, die einen vernĂŒnftigen Kompromiss zwischen Benutzerfreundlichkeit, Sicherheit und Kosten darstellt, sind spezielle 2FA-Apps wie RSA Token oder Google Authenticator. Und es gibt auch physische SchlĂŒssel und andere Methoden.
In der Theorie klingt alles sinnvoll und sicher. In der Praxis haben moderne 2FA-Lösungen jedoch Probleme, weshalb die RealitÀt von den Erwartungen abweicht.
Laut , der Einsatz von 2FA ist grundsĂ€tzlich eine UmstĂ€ndlichkeit, und die Beliebtheit von 2FA per SMS wird durch das âgeringere Unbehagen im Vergleich zu anderen Methodenâ erklĂ€rt â die Beschaffung von Einmalcodes ist fĂŒr den Nutzer nachvollziehbar.
Viele Nutzer verbinden 2FA-Methoden mit der Angst, den Zugriff zu verlieren. Ein physischer SchlĂŒssel oder eine Liste von TAN-Passwörtern kann verloren gehen oder gestohlen werden. Ich habe persönlich negative Erfahrungen mit Google Authenticator gemacht. Mein erster Smartphone mit dieser App ist kaputtgegangen â schĂ€tzen Sie meinen Aufwand zur Wiederherstellung des Zugriffs auf meine Konten. Ein weiteres Problem ist der Umstieg auf ein neues GerĂ€t. Google Authenticator bietet aus SicherheitsgrĂŒnden keine Exportfunktion (wenn SchlĂŒssel exportiert werden können, wo bleibt da die Sicherheit?). Einmal habe ich die SchlĂŒssel manuell ĂŒbertragen, und danach habe ich beschlossen, dass es einfacher ist, das alte Smartphone in der Schachtel im Regal zu lassen.
Die Methode 2FA sollte sein:
- Sicher â auf Ihr Konto sollten nur Sie Zugriff haben und keine Angreifer.
- ZuverlĂ€ssig â Sie sollten jederzeit Zugriff auf Ihr Konto erhalten, wenn es nötig ist.
- Bequem und zugĂ€nglich â die Nutzung von 2FA sollte leicht nachvollziehbar sein und möglichst wenig Zeit in Anspruch nehmen.
- Preiswert
Wir sind der Meinung, dass Blockchain eine geeignete Lösung ist.
Verwenden Sie 2FA auf der Blockchain
FĂŒr den Nutzer sieht 2FA auf der Blockchain genauso aus wie der Empfang von Einmalcodes per SMS. Der einzige Unterschied liegt im Lieferkanal. Die Art und Weise, wie der 2FA-Code empfangen wird, hĂ€ngt davon ab, was die Blockchain anbietet. In unserem Projekt (Informationen finden Sie in meinem Profil) handelt es sich um eine Web-Anwendung, Tor, iOS, Android, Linux, Windows, MacOS.
Der Dienst generiert einen Einmalcode und sendet ihn an den Messenger auf der Blockchain. Danach â ganz klassisch: Der Nutzer gibt den erhaltenen Code in der BenutzeroberflĂ€che des Dienstes ein und authentifiziert sich.

In dem Artikel habe ich geschrieben, dass die Blockchain Sicherheit und PrivatsphĂ€re bei der Ăbertragung von Nachrichten gewĂ€hrleistet. Zum Thema der Versendung von 2FA-Codes möchte ich hervorheben:
- Ein Klick zur Erstellung eines Kontos â keine Telefonnummern und E-Mail-Adressen erforderlich.
- Alle Nachrichten mit 2FA-Codes werden Ende-zu-Ende mit curve25519xsalsa20poly1305 verschlĂŒsselt.
- MITM-Angriffe sind ausgeschlossen â jede Nachricht mit einem 2FA-Code ist eine Transaktion in der Blockchain und wird mit Ed25519 EdDSA signiert.
- Die Nachricht mit dem 2FA-Code gelangt in ihren Block. Die Reihenfolge und der Zeitstempel der Blöcke können nicht verÀndert werden, somit auch nicht die Reihenfolge der Nachrichten.
- Es gibt keine zentrale Struktur, die die âEchtheitâ der Nachricht ĂŒberprĂŒft. Dies wird von einem verteilten Netz von Knoten auf Basis von Konsens gemacht, das den Benutzern gehört.
- Das Deaktivieren ist nicht möglich â Konten können nicht gesperrt und Nachrichten nicht gelöscht werden.
- Zugriff auf die 2FA-Codes von jedem GerÀt zu jeder Zeit.
- BestÀtigung des Versands der Nachricht mit dem 2FA-Code. Der Dienst, der das Einmalpasswort verschickt, weià genau, dass es zugestellt wurde. Keine SchaltflÀchen wie 'Nochmals senden'.
Zum Vergleich mit einigen anderen 2FA-Methoden habe ich eine Tabelle erstellt:

Ein Konto im Blockchain-Messenger zur Erhaltung von Codes erhĂ€lt der Nutzer in Sekundenschnelle â fĂŒr den Zugang wird nur eine Passphrase verwendet. Daher können die Anwendungsarten unterschiedlich sein: Man kann ein Konto fĂŒr den Erhalt von Codes fĂŒr alle Dienste nutzen oder fĂŒr jeden Dienst ein separates Konto erstellen.
Es gibt jedoch auch eine Unannehmlichkeit â das Konto muss mindestens eine Transaktion haben. Damit der Nutzer eine verschlĂŒsselte Nachricht mit dem Code erhĂ€lt, muss sein öffentlicher SchlĂŒssel bekannt sein, und dieser erscheint in der Blockchain erst mit der ersten Transaktion. Wir haben uns so geholfen: Wir haben die Möglichkeit geschaffen, im Wallet kostenlose Tokens zu erhalten. Eine passendere Lösung wĂ€re jedoch, das Konto nach dem öffentlichen SchlĂŒssel zu benennen. (Zum Vergleich haben wir die Kontonummer U1467838112172792705 ist eine Ableitung des öffentlichen SchlĂŒssels cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. FĂŒr Messenger ist das praktischer und lesbarer, wĂ€hrend es fĂŒr das System zum Versenden von 2FA-Codes eine EinschrĂ€nkung darstellt. Ich denke, in Zukunft wird jemand eine solche Lösung entwickeln und "Komfort und VerfĂŒgbarkeit" in die grĂŒne Zone ĂŒberfĂŒhren.
Die Kosten fĂŒr das Versenden eines 2FA-Codes sind wirklich niedrig - 0,001 ADM, das sind derzeit 0,00001 USD. Auch hier kann man seine eigene Blockchain ĂŒbernehmen und den Preis auf null setzen.
So integrieren Sie 2FA auf der Blockchain in Ihren Dienst
Ich hoffe, ich konnte einige Leser dazu anregen, die Blockchain-Authentiifikation in ihre Dienste einzufĂŒgen.
Ich erklÀre, wie dies am Beispiel unseres Messengers funktioniert, aber Sie können auch andere Blockchains analog verwenden. In der Demoversion der 2FA-App nutzen wir postgresql10 zur Speicherung der Kontoinformationen.
Schritte zur Anbindung:
- Erstellen Sie ein Konto in der Blockchain, von dem Sie die 2FA-Codes versenden werden. Sie erhalten eine Passphrase, die als privater SchlĂŒssel zum VerschlĂŒsseln von Nachrichten mit Codes und zum Unterzeichnen von Transaktionen dient.
- FĂŒgen Sie Ihrem Server ein Skript zur Generierung von 2FA-Codes hinzu. Wenn Sie bereits eine andere Methode zur 2FA mit der Zustellung von Einmalpasswörtern verwenden, ist dieser Schritt bereits erledigt.
- FĂŒgen Sie Ihrem Server ein Skript hinzu, um Codes an den Benutzer im Blockchain-Messenger zu senden.
- Erstellen Sie eine BenutzeroberflÀche zum Senden und Eingeben des 2FA-Codes. Wenn Sie bereits eine andere Methode zur 2FA mit der Zustellung von Einmalpasswörtern verwenden, ist dieser Schritt bereits erledigt.
1 Erstellung eines Kontos
Die Erstellung eines Kontos in der Blockchain besteht aus der Generierung eines privaten SchlĂŒssels, eines öffentlichen SchlĂŒssels und der Ableitung einer Adresse fĂŒr dieses Konto.

ZunĂ€chst wird eine BIP39-Passphrase generiert, aus der der SHA-256-Hash berechnet wird. Der Hash wird verwendet, um den privaten SchlĂŒssel ks und den öffentlichen SchlĂŒssel kp zu erzeugen. Aus dem öffentlichen SchlĂŒssel erhalten wir mit dem gleichen SHA-256-Algorithmus und einer Umkehrung die Adresse in der Blockchain.
Wenn Sie jedes Mal Codes von einem neuen Konto aus senden möchten, muss der Code zur Erstellung des Kontos auf dem Server hinzugefĂŒgt werden:
import Mnemonic from 'bitcore-mnemonic'
this.passphrase = new Mnemonic(Mnemonic.Words.ENGLISH).toString()
âŠ
import * as bip39 from 'bip39'
import crypto from 'crypto'
adamant.createPassphraseHash = function (passphrase) {
const seedHex = bip39.mnemonicToSeedSync(passphrase).toString('hex')
return crypto.createHash('sha256').update(seedHex, 'hex').digest()
}
âŠ
import sodium from 'sodium-browserify-tweetnacl'
adamant.makeKeypair = function (hash) {
var keypair = sodium.crypto_sign_seed_keypair(hash)
return {
publicKey: keypair.publicKey,
privateKey: keypair.secretKey
}
}
âŠ
import crypto from 'crypto'
adamant.getAddressFromPublicKey = function (publicKey) {
const publicKeyHash = crypto.createHash('sha256').update(publicKey, 'hex').digest()
const temp = Buffer.alloc(8)
for (var i = 0; i < 8; i++) {
temp[i] = publicKeyHash[7 - i]
}
return 'U' + bignum.fromBuffer(temp).toString()
}In der Demo-Anwendung haben wir es vereinfacht â wir haben ein Konto in der Webanwendung erstellt und versenden die Codes von diesem Konto. In den meisten FĂ€llen ist das fĂŒr den Benutzer bequemer: Er weiĂ, dass der Dienst 2FA-Codes von einem bestimmten Konto sendet, und kann dieses benennen.

2 Generierung von 2FA-Codes
Der 2FA-Code muss fĂŒr jeden Benutzer-Login generiert werden. Wir verwenden die Bibliothek , aber Sie können eine beliebige andere wĂ€hlen.
const hotp = speakeasy.hotp({
counter,
secret: account.seSecretAscii,
});
ĂberprĂŒfung der GĂŒltigkeit des vom Benutzer eingegebenen 2FA-Codes:
se2faVerified = speakeasy.hotp.verify({
counter: this.seCounter,
secret: this.seSecretAscii,
token: hotp,
});
3 Versenden des 2FA-Codes
FĂŒr das Senden des 2FA-Codes können Sie die API-Knotenpunkte der Blockchain, die JS-API-Bibliothek oder die Konsole verwenden. In diesem Beispiel nutzen wir die Konsole â dies ist das Command Line Interface, ein Tool, das die Interaktion mit der Blockchain vereinfacht. Um eine Nachricht mit dem 2FA-Code zu senden, verwenden Sie den Befehl send message in der Konsole.
const util = require('util');
const exec = util.promisify(require('child_process').exec);
âŠ
const command = `adm send message ${adamantAddress} "2FA Code: ${hotp}"`;
let { error, stdout, stderr } = await exec(command);
Eine alternative Methode zum Senden von Nachrichten ist die Verwendung der Methode send in der JS API-Bibliothek.
4 BenutzeroberflÀche
Der Benutzer sollte die Möglichkeit erhalten, den 2FA-Code einzugeben, was je nach Plattform Ihrer Anwendung auf verschiedene Weise realisiert werden kann. In unserem Beispiel verwenden wir Vue.

Sie können den Quellcode der Demo-Anwendung zur Zwei-Faktor-Authentifizierung auf der Blockchain einsehen . Im Readme gibt es einen Link zur Live-Demo, um es auszuprobieren.
Quelle: habr.com
