SMS-Nachrichten sind die beliebteste Methode zur Zwei-Faktor-Authentifizierung (2FA). Es wird von Banken, elektronischen und Krypto-Geldbörsen, Postfächern und allen Arten von Diensten verwendet.
Die Anzahl der Benutzer der Methode nähert sich 100% .
Ich habe so einen Ausbruch von Ereignissen ist empörend, weil diese Methode unsicher ist. Die Neuzuweisung der Nummer von einer SIM-Karte zu einer anderen begann zu Beginn des mobilen Zeitalters - auf diese Weise wird die Nummer wiederhergestellt, wenn die SIM-Karte verloren geht. "Digital Money Weaning Specialists" realisiert: Die Option "SIM-Karten überschreiben" kann in betrügerischen Schemata eingesetzt werden. Schließlich kann derjenige, der die SIM-Karte kontrolliert, das Online-Banking, die E-Wallets und sogar die Kryptowährung anderer verwalten. Und Sie können die Nummer einer anderen Person übernehmen, indem Sie einen Telekommunikationsmitarbeiter mit Betrug oder gefälschten Dokumenten bestechen.

Tausende von SIM-Tausch-Episoden wurden aufgedeckt - so wurde dieses Betrugsschema bezeichnet. Das Ausmaß der Katastrophe lässt darauf schließen, dass die Welt die 2FA bald per SMS aufgeben wird. Dies ist jedoch nicht der Fall - der
Studie zufolge entscheiden sich nicht die Benutzer für die 2FA-Methode, sondern die Dienstleister.
Wir empfehlen die Verwendung der sicheren 2FA-Methode mit der Übermittlung von Einmalcodes über die Blockchain. Anschließend erfahren Sie, wie Sie die Verbindung zum Service-Eigentümer herstellen können.
Die Rechnung geht an Millionen
Im Jahr 2019 stieg der SIM-Tauschbetrug nach Angaben der Londoner Polizei um 63%, und der „durchschnittliche Scheck“ des Angreifers betrug 4.000 GBP. Ich habe in Russland keine Statistiken gefunden, aber ich gehe davon aus, dass es noch schlimmer ist.
SIM-Tausch wird verwendet, um beliebte Twitter-, Instagram-, Facebook-, VK- und Bankkonten zu stehlen, und hat kürzlich Kryptowährungen erhalten,
berichtet die
Zeitung Times vom Bitcoin-Unternehmer Joby Weeks. Seit 2016 tauchen in der Presse bekannte Fälle von Diebstahl von Kryptowährungen mit Hilfe von SIM-Tausch auf. 2019 kam ein echter Höhepunkt.
Im Mai verurteilten US-Staatsanwälte im Osten von Michigan neun Jugendliche im Alter von 19 bis 26 Jahren, die angeblich Teil einer Hacker-Bande namens „The Community“ waren. Die Bande wird wegen sieben Swap-Angriffen angeklagt, wodurch Hacker Kryptowährung im Wert von mehr als 2,4 Millionen US-Dollar aneigneten. Und im April wurde ein Student aus Kalifornien, Joel Ortiz, wegen SIM-Wechsels zu 10 Jahren Haft verurteilt. Kryptowährungen in Höhe von 7,5 Millionen Dollar wurden zu seiner Beute.
Foto von Joel Ortiz auf einer Pressekonferenz der Universität. Zwei Jahre später wird er wegen Cyberbetrugs inhaftiert.Das Prinzip des SIM-Wechsels
Swap bedeutet Austausch. In all diesen Fällen weisen Kriminelle die Telefonnummer eines Opfers zu, in der Regel durch erneute Ausgabe einer SIM-Karte, und setzen damit ein Passwort zurück. Ein typischer SIM-Tausch sieht theoretisch so aus:
- Intelligenz. Betrüger erfahren die persönlichen Daten des Opfers: Name und Telefon. Sie können in offenen Quellen (sozialen Netzwerken, Freunden) gefunden oder von einem Komplizen - einem Mitarbeiter eines Mobilfunkbetreibers - bezogen werden.
- Blockieren. Die SIM-Karte des Opfers ist deaktiviert. Rufen Sie dazu einfach den technischen Support des Anbieters an, geben Sie die Nummer an und sagen Sie, dass das Telefon verloren gegangen ist.
- Erfassen, Übertragen von Nummern auf Ihre SIM-Karte. In der Regel geschieht dies auch durch einen Komplizen in einem Telekommunikationsunternehmen oder durch Fälschen von Dokumenten.
Im wirklichen Leben ist es noch schlimmer. Angreifer wählen ein Opfer aus und überwachen dann täglich den Standort des Telefons. Eine Informationsanfrage, die der Abonnent auf Roaming umgestellt hat, kostet 1-2 Cent. Sobald der Inhaber der SIM-Karte ins Ausland gegangen ist, stimmt er mit dem Vorgesetzten im Kommunikationssalon der Herausgabe einer neuen SIM-Karte zu. Es kostet ungefähr 50 US-Dollar (ich habe Informationen gefunden - in verschiedenen Ländern und von verschiedenen Betreibern von 20 bis 100 US-Dollar), während der Manager im schlimmsten Fall entlassen wird - es besteht keine Verantwortung.
Jetzt erhalten alle Eindringlinge alle SMS, und der Besitzer des Telefons kann nichts dagegen tun - er ist im Ausland. Und dann erhalten die Bösewichte Zugriff auf alle Konten des Opfers und ändern auf Wunsch die Passwörter.
Die Chancen, gestohlene Waren zurückzugeben
Banken gehen manchmal auf die Opfer zu und ziehen Überweisungen von ihren Konten ab. Daher ist es möglich, fiat Geld zurückzugeben, auch wenn der Täter nicht gefunden wird. Bei Cryptocurrency Wallets ist jedoch alles komplizierter - sowohl
technisch als auch rechtlich. Bisher hat kein Geldbeutel eine Entschädigung für Swap-Opfer gezahlt.
Wenn die Opfer ihr Geld vor Gericht verteidigen wollen, beschuldigen sie den Betreiber: Er hat die Bedingungen für den Diebstahl von Geld vom Konto geschaffen. Genau das hat
Michael Turpin getan , der durch den Tausch 224 Millionen US-Dollar verloren hat. Jetzt verklagt er das Telekommunikationsunternehmen AT & T.

Bisher gibt es in keinem Staat Arbeitsschemata zum rechtlichen Schutz von Inhabern von Kryptowährungen. Es ist unmöglich, Ihr Kapital zu versichern oder eine Entschädigung für dessen Verlust zu erhalten. Daher ist es einfacher, einen Tauschangriff zu verhindern, als seine Folgen zu bekämpfen. Der naheliegendste Weg ist die Verwendung eines zuverlässigeren „zweiten Faktors“ für 2FA.
Der SIM-Tausch ist nicht das einzige 2FA-Problem per SMS
Bestätigungscodes in SMS sind auch aus technischer Sicht unsicher. Nachrichten können aufgrund schwerwiegender Sicherheitslücken in Signaling System 7 (SS7) abgefangen werden. 2FA by SMS ist offiziell als unsicher anerkannt (das US National Institute of Standards and Technology spricht darüber in seinem
Digital Authentication Guide ).
Darüber hinaus wird der Benutzer durch das Vorhandensein von 2FA häufig mit einem Gefühl falscher Sicherheit angeregt, und er wählt ein einfacheres Kennwort. Eine solche Authentifizierung erschwert daher nicht, erleichtert jedoch den Zugriff eines Angreifers auf das Konto.
Und oftmals kommen SMS mit großer Verspätung oder gar nicht.
Andere 2FA-Methoden
Auf Smartphones und SMS konvergierte das Licht natürlich nicht. Es gibt andere 2FA-Methoden. Zum Beispiel einmalige TAN-Codes: Die Methode ist primitiv, funktioniert aber - sie wird in einigen Banken immer noch verwendet. Es gibt Systeme, die biometrische Daten verwenden: Fingerabdrücke, Netzhaut-Scans. Eine weitere Option, die hinsichtlich Komfort, Zuverlässigkeit und Preis als angemessener Kompromiss erscheint, sind spezielle Anwendungen für 2FA: RSA Token, Google Authenticator. Und es gibt physikalische Schlüssel und andere Methoden.
Theoretisch sieht alles logisch und zuverlässig aus. In der Praxis haben moderne 2FA-Lösungen jedoch Probleme, und aufgrund dieser Probleme weicht die Realität von den Erwartungen ab.
Laut der
Studie ist die Verwendung von 2FA im Prinzip eine Unannehmlichkeit, und die Beliebtheit von 2FA per SMS erklärt sich aus „weniger Unannehmlichkeit im Vergleich zu anderen Methoden“ - das Empfangen von Einmalcodes ist für den Benutzer verständlich.
Viele Benutzer von 2FA-Methoden gehen mit der Befürchtung einher, dass der Zugriff verloren geht. Ein physischer Schlüssel oder eine Liste von TAN-Passwörtern kann verloren gehen oder gestohlen werden. Ich persönlich habe eine negative Erfahrung mit Google Authenticator. Mein erstes Smartphone mit dieser Anwendung ist kaputt gegangen - bewerten Sie meine Bemühungen, den Zugriff auf Konten wiederherzustellen. Ein weiteres Problem ist der Übergang zu einem neuen Gerät. Google Authenticator kann aufgrund von Sicherheitsbedenken nicht exportieren. (Welche Sicherheitsmaßnahmen gibt es, wenn die Schlüssel exportiert werden können?) Einmal habe ich die Schlüssel manuell übertragen und dann entschieden, dass es einfacher ist, das alte Smartphone in einer Schachtel in einem Regal zu lassen.
Die 2FA-Methode sollte sein:
- Sicher - nur Sie sollten Zugriff auf Ihr Konto erhalten, nicht auf Angreifer
- Zuverlässig - Sie erhalten Zugriff auf Ihr Konto, wann immer Sie es benötigen
- Bequem und erschwinglich - die Verwendung von 2FA ist klar und erfordert nur ein Minimum an Zeit
- Günstig
Wir glauben, dass Blockchain die richtige Lösung ist.
Verwenden Sie 2FA für die Blockchain
Für einen Benutzer entspricht 2FA in der Blockchain dem Empfangen von Einmalcodes per SMS. Der einzige Unterschied besteht im Lieferkanal. Wie Sie einen 2FA-Code erhalten, hängt davon ab, was die Blockchain bietet. In unserem Projekt (die Informationen befinden sich in meinem Profil) ist dies eine Webanwendung, Tor, iOS, Android, Linux, Windows, MacOS.
Der Dienst generiert einen einmaligen Code und sendet ihn an den Messenger in der Blockchain. Weiter nach den Klassikern: Der Benutzer gibt den empfangenen Code in die Serviceschnittstelle ein und meldet sich an.

In dem Artikel
Wie ein dezentraler Messenger in der Blockchain funktioniert, habe ich geschrieben, dass die Blockchain die Sicherheit und den Datenschutz von Nachrichten gewährleistet. Zum Thema Versenden von 2FA-Codes möchte ich Folgendes hervorheben:
- Ein Klick, um ein Konto zu erstellen - keine Telefone oder E-Mails.
- Alle Nachrichten mit 2FA-Codes werden durchgängig verschlüsselt. Curve25519xsalsa20poly1305.
- MITM-Angriff ist ausgeschlossen - jede Nachricht mit einem 2FA-Code ist eine Transaktion in der Blockchain und wird von Ed25519 EdDSA signiert.
- Eine Nachricht mit einem 2FA-Code fällt in ihren Block. Die Reihenfolge und der Zeitstempel der Blöcke und damit die Reihenfolge der Nachrichten können nicht festgelegt werden.
- Es gibt keine zentrale Struktur, die die „Authentizität“ einer Nachricht überprüft. Dies geschieht durch ein konsensbasiertes verteiltes Knotensystem, das den Benutzern gehört.
- Unfähigkeit zu deaktivieren - Konten können nicht gesperrt werden und Nachrichten können gelöscht werden.
- Greifen Sie jederzeit von jedem Gerät auf 2FA-Codes zu.
- Zustellbestätigungsnachricht mit 2FA-Code. Ein Dienst, der ein Einmalkennwort sendet, weiß, dass es übermittelt wurde. Keine Schaltfläche "Erneut senden".
Zum Vergleich mit anderen 2FA-Methoden habe ich eine Tabelle zusammengestellt:

Der Benutzer erhält ein Konto im Blockchain-Messenger, um Codes in einer zweiten Passphrase zu erhalten, die nur zur Eingabe verwendet wird. Daher können die Anwendungsmethoden unterschiedlich sein: Sie können ein Konto verwenden, um Codes für alle Dienste abzurufen, oder Sie können für jeden Dienst ein separates Konto erstellen.
Es gibt auch einen Nachteil - ein Konto muss mindestens eine Transaktion haben. Damit der Benutzer eine verschlüsselte Nachricht mit einem Code erhalten kann, muss er seinen öffentlichen Schlüssel kennen und wird erst bei der ersten Transaktion in der Blockchain angezeigt. Wir sind auf diese Weise rausgekommen: Sie gaben uns die Möglichkeit, kostenlose Jetons in unserer Brieftasche zu bekommen. Eine korrektere Lösung besteht jedoch darin, dem Konto einen öffentlichen Schlüssel zu geben. (Unsere Kontonummer
U1467838112172792705 ist zum Vergleich eine Ableitung des öffentlichen Schlüssels
cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada . Für den Messenger ist dies praktischer und lesbarer, für das sendende System jedoch 2FA-Codes.) Ich denke, in Zukunft wird jemand eine solche Entscheidung treffen und "Bequemlichkeit und Zugänglichkeit" in die grüne Zone transferieren.
Die Kosten für den Versand eines 2FA-Codes sind sehr niedrig - 0,001 ADM, jetzt sind es 0,00001 USD. Auch hier können Sie Ihre Blockchain erhöhen und den Preis auf Null setzen.
So verbinden Sie 2FA in der Blockchain mit Ihrem Dienst
Ich hoffe, ich konnte einige Leser dafür interessieren, ihren Diensten eine Blockchain-Autorisierung hinzuzufügen.
Ich werde Ihnen am Beispiel unseres Boten erklären, wie das geht, und analog dazu können Sie eine andere Blockchain verwenden. In der 2FA-Demo-Anwendung verwenden wir postgresql10, um Kontoinformationen zu speichern.
Verbindungsschritte:
- Erstellen Sie ein Konto in der Blockchain, von der aus Sie 2FA-Codes senden. Sie erhalten ein Passwort, das als privater Schlüssel zum Verschlüsseln von Nachrichten mit Codes und zum Signieren von Transaktionen verwendet wird.
- Fügen Sie Ihrem Server ein Skript hinzu, um 2FA-Codes zu generieren. Wenn Sie bereits eine andere 2FA-Methode mit der Übermittlung von Einmalkennwörtern verwenden, wurde dieser Schritt bereits abgeschlossen.
- Fügen Sie Ihrem Server ein Skript hinzu, um Codes im Blockchain Messenger an den Benutzer zu senden.
- Erstellen Sie eine Benutzeroberfläche zum Senden und Eingeben von 2FA-Code. Wenn Sie bereits eine andere 2FA-Methode mit der Übermittlung von Einmalkennwörtern verwenden, wurde dieser Schritt bereits abgeschlossen.
1 Erstellen Sie ein KontoDas Erstellen eines Kontos in der Blockchain besteht aus der Generierung eines privaten Schlüssels, eines öffentlichen Schlüssels und einer daraus abgeleiteten Kontoadresse.

Zunächst wird die Passphrase BIP39 generiert, aus der der SHA-256-Hash berechnet wird. Der Hash wird verwendet, um den privaten ks-Schlüssel und den öffentlichen kp-Schlüssel zu generieren. Vom öffentlichen Schlüssel mit demselben SHA-256 mit Inversion erhalten wir die Adresse in der Blockchain.
Wenn Sie jedes Mal 2FA-Codes von einem neuen Konto senden möchten, muss der Code zum Erstellen eines Kontos zum 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 - ein Konto in der Webanwendung erstellt und die Codes von dort gesendet. In den meisten Fällen ist dies für den Benutzer bequemer: Er weiß, dass der Dienst 2FA-Codes von einem bestimmten Konto sendet und diesen benennen kann.
2 Erzeugung von 2FA-CodesDer 2FA-Code muss für jede Benutzeranmeldung generiert werden. Wir benutzen die
Speakeasy- Bibliothek, aber Sie können auch eine andere auswählen.
const hotp = speakeasy.hotp({ counter, secret: account.seSecretAscii, });
Validierung des vom Benutzer eingegebenen 2FA-Codes:
se2faVerified = speakeasy.hotp.verify({ counter: this.seCounter, secret: this.seSecretAscii, token: hotp, });
3 Reichen Sie den 2FA-Code einSie können die Blockchain-Knoten-API, die JS-API-Bibliothek oder die Konsole zum Senden von 2FA-Code verwenden. In diesem Beispiel verwenden wir die Konsole - dies ist die Befehlszeilenschnittstelle, ein Dienstprogramm, das die Interaktion mit der Blockchain vereinfacht. Um eine Nachricht mit einem 2FA-Code zu senden, müssen Sie den Befehl
send message
der Konsole verwenden.
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
send
Methode in der JS-API-Bibliothek.
4 BenutzeroberflächeDem Benutzer muss die Möglichkeit gegeben werden, den 2FA-Code einzugeben. Dies kann abhängig von der Plattform Ihrer Anwendung auf verschiedene Arten erfolgen. In unserem Beispiel ist dies Vue.

Der Quellcode der Demo-Anwendung der Zwei-Faktor-Autorisierung in der Blockchain kann auf
GitHub eingesehen werden. In der Readme-Datei finden Sie einen Link zur Live-Demo, über den Sie es ausprobieren können.