Az SMS-üzenetek a kétfaktoros hitelesítés (2FA) legnépszerűbb módszere. Bankok, elektronikus és kriptopénztárcák, postafiókok és mindenféle szolgáltatás használják;
Felháborít ez a forgatókönyv, mert ez a módszer nem biztonságos. A számok átrendelése egyik SIM-kártyáról a másikra a mobilkorszak elején kezdődött – így áll vissza a szám, ha elveszik a SIM-kártyát. A „digitális pénzlopás-specialisták” rájöttek, hogy a „SIM-kártya átírása” lehetőség csalárd konstrukciókban is használható. Hiszen az, aki a SIM-kártyát kezeli, irányíthatja mások online banki tevékenységét, elektronikus pénztárcáját és még a kriptovalutát is. És birtokba veheti egy másik személy számát egy távközlési alkalmazott megvesztegetésével, megtévesztéssel vagy hamisított dokumentumokkal.
A SIM-csere több ezer epizódját tárták fel, ahogy ezt a csalási sémát nevezik. A katasztrófa mértéke azt sugallja, hogy a világ hamarosan elhagyja a 2FA-t SMS-ben. De ez nem történik meg - in
Javasoljuk a biztonságos 2FA módszer használatát az egyszeri kódok blokkláncon keresztül történő kézbesítésével, és elmondjuk, hogyan kapcsolhatja be a szolgáltatás tulajdonosa.
A szám milliósra rúg
2019-ben a SIM-csere-csalás 63%-kal nőtt a londoni rendőrség szerint, és egy támadó „átlagszámlája” 4,000 GBP volt. Nem találtam statisztikát Oroszországban, de feltételezem, hogy még rosszabbak.
A SIM-cserével népszerű Twitter, Instagram, Facebook, VK-fiókokat, bankszámlákat, sőt mostanában kriptovalutákat is ellopnak –
Májusban az Egyesült Államok Michigan keleti körzetének ügyészsége
Joel Ortiz fotója egy egyetemi sajtótájékoztatón. Két évvel később számítógépes csalás miatt fogva tartják.
Hogyan működik a SIM-csere
A „csere” cserét jelent. Minden ilyen sémában a bűnözők átveszik az áldozat telefonszámát, általában a SIM-kártya újbóli kibocsátásával, és ezzel állítják vissza a jelszót. Egy tipikus SIM-csere elméletben így néz ki:
- Hírszerző szolgálat. A csalók megtudják az áldozat személyes adatait: nevét és telefonszámát. Megtalálhatók nyílt forrásokból (közösségi hálózatok, barátok), vagy egy bűntárstól - egy mobilszolgáltató alkalmazottjától - kaphatók.
- Blokkolás. Az áldozat SIM-kártyája deaktiválva van; Ehhez csak hívja a szolgáltató műszaki támogatását, adja meg a számot, és mondja ki, hogy a telefon elveszett.
- Rögzítse, vigye át a számot a SIM-kártyára. Általában ez is egy távközlési cég cinkostársán vagy okirat-hamisításon keresztül történik.
A való életben a dolgok még súlyosabbak. A támadók kiválasztanak egy áldozatot, majd naponta nyomon követik a telefon helyét – egy kérés, hogy megkapja az információt, hogy az előfizető roamingra váltott, 1-2 centbe kerül. Amint a SIM-kártya tulajdonosa külföldre ment, a kommunikációs üzlet vezetőjével egyeztetnek az új SIM-kártya kiadásáról. Körülbelül 50 dollárba kerül (találtam információkat - különböző országokban és különböző szolgáltatóknál 20 és 100 dollár között), és a legrosszabb esetben a menedzsert elbocsátják - ezért nincs felelősség.
Most minden SMS-t megkapnak a támadók, és a telefon tulajdonosa nem fog tudni mit kezdeni – külföldön tartózkodik. Ezután a gazemberek hozzáférnek az áldozat összes fiókjához, és szükség esetén megváltoztatják a jelszavakat.
Az ellopott javak visszaszolgáltatásának esélye
A bankok néha félúton szállásolják el az áldozatokat, és levonják az átutalásokat a számlájukról. Ezért a fiat pénzt akkor is vissza lehet adni, ha a bűnözőt nem találják meg. De a kriptovaluta pénztárcákkal minden bonyolultabb - és technikailagés jogalkotási. Eddig egyetlen váltó/pénztárca sem fizetett kártérítést a csere áldozatainak.
Ha az áldozatok bíróság előtt akarják megvédeni pénzüket, az üzemeltetőt hibáztatják: ő teremtette meg a feltételeket a számláról történő pénzlopáshoz. Pontosan ezt tettem
Eddig egyetlen állam sem rendelkezik működő rendszerrel a kriptovaluta-tulajdonosok jogi védelmére. Lehetetlen a tőkéjét biztosítani, vagy kártérítést kapni a veszteségéért. Ezért egy cseretámadást könnyebb megelőzni, mint a következményeit kezelni. A legkézenfekvőbb módszer egy megbízhatóbb "második tényező" használata a 2FA-hoz.
A SIM-csere nem az egyetlen probléma a 2FA-val SMS-ben
Az SMS-ben lévő visszaigazoló kódok technikai szempontból sem biztonságosak. Az üzenetek elfoghatók a Signaling System 7 (SS7) javítatlan biztonsági rései miatt. Az SMS-en keresztüli 2FA hivatalosan nem biztonságos (az Egyesült Államok Nemzeti Szabványügyi és Technológiai Intézete ezt mondja
Ugyanakkor a 2FA jelenléte gyakran hamis biztonságérzetet kelt a felhasználóban, és egyszerűbb jelszót választ. Ezért az ilyen hitelesítés nem nehezíti meg, de megkönnyíti a támadó számára a fiókhoz való hozzáférést.
És gyakran az SMS-ek nagy késéssel vagy egyáltalán nem érkeznek meg.
Egyéb 2FA módszerek
Természetesen az okostelefonokon és az SMS-eken nem konvergált a fény. Vannak más 2FA-módszerek is. Például az egyszeri TAN kódok: primitív módszer, de működik - egyes bankokban még mindig használják. Vannak biometrikus adatokat használó rendszerek: ujjlenyomatok, retinaszkennelés. Egy másik lehetőség, amely ésszerű kompromisszumnak tűnik a kényelem, a megbízhatóság és az ár tekintetében, a 2FA speciális alkalmazásai: RSA Token, Google Authenticator. Vannak fizikai kulcsok és egyéb módszerek is.
Elméletileg minden logikusnak és megbízhatónak tűnik. De a gyakorlatban a modern 2FA megoldásoknak vannak problémái, és ezek miatt a valóság eltér az elvárásoktól.
Szerint
A felhasználók sok 2FA módszert azzal a félelemmel társítanak, hogy a hozzáférés elveszik. A fizikai kulcs vagy a TAN-jelszavak listája elveszhet vagy ellopható. Nekem személy szerint rossz tapasztalataim vannak a Google Authenticatorral. Elromlott az első okostelefonom ezzel az alkalmazással – köszönjük a fiókjaimhoz való hozzáférés visszaállítására irányuló erőfeszítéseimet. Egy másik probléma az új eszközre való váltás. A Google Authenticator biztonsági okokból nem rendelkezik exportálási lehetőséggel (ha a kulcsok exportálhatók, milyen biztonságról van szó?). Egyszer manuálisan vittem a kulcsokat, aztán úgy döntöttem, hogy a régi okostelefont könnyebb dobozban hagyni a polcon.
A 2FA módszernek a következőnek kell lennie:
- Biztonságos – csak Ön férhet hozzá fiókjához, a támadók nem
- Megbízható – bármikor hozzáférhet fiókjához, amikor szüksége van rá
- Kényelmes és hozzáférhető – a 2FA használata egyértelmű és minimális időt vesz igénybe
- Olcsó
Hiszünk abban, hogy a blokklánc a megfelelő megoldás.
Használjon 2FA-t a blokkláncon
A felhasználó számára a 2FA a blokkláncon ugyanúgy néz ki, mint az egyszeri kódok SMS-ben történő fogadása. Az egyetlen különbség a szállítási csatorna. A 2FA kód megszerzésének módja attól függ, hogy mit kínál a blokklánc. Projektünkben (információ a profilomban) ez egy webes alkalmazás, Tor, iOS, Android, Linux, Windows, MacOS.
A szolgáltatás egy egyszeri kódot generál, és elküldi a blokkláncon lévő messengernek. Ezután kövesse a klasszikusokat: a felhasználó beírja a kapott kódot a szolgáltatási felületen, és bejelentkezik.
A cikk
- Egy kattintással hozhat létre fiókot – nincs telefon vagy e-mail.
- Minden 2FA kódot tartalmazó üzenet titkosítva van. End-to-End curve25519xsalsa20poly1305.
- A MITM támadás kizárt – minden 2FA kódot tartalmazó üzenet tranzakció a blokkláncon, és az Ed25519 EdDSA aláírja.
- A 2FA kódot tartalmazó üzenet a saját blokkjába kerül. A blokkok sorrendje és időbélyege nem javítható, így az üzenetek sorrendje sem.
- Nincs olyan központi struktúra, amely ellenőrizné az üzenet „hitelességét”. Ezt konszenzuson alapuló elosztott csomópontrendszer végzi, és a felhasználók tulajdonában van.
- Nem lehet letiltani – a fiókokat nem lehet letiltani, és az üzeneteket nem lehet törölni.
- Bármikor elérheti a 2FA kódokat bármely eszközről.
- Az üzenet kézbesítésének megerősítése 2FA kóddal. Az egyszeri jelszót küldő szolgáltatás biztosan tudja, hogy azt kézbesítették. Nincsenek „Küldés újra” gombok.
Néhány más 2FA módszerrel való összehasonlításhoz készítettem egy táblázatot:
A felhasználó fiókot kap a blockchain messengerben, hogy egy másodperc alatt megkapja a kódokat - csak egy jelszót használnak a bejelentkezéshez. Emiatt az igénylés módjai eltérőek lehetnek: egy fiókkal minden szolgáltatáshoz kódot kaphat, vagy minden szolgáltatáshoz külön fiókot hozhat létre.
Van egy kellemetlenség is - a számlán legalább egy tranzakciónak kell lennie. Ahhoz, hogy a felhasználó kódot tartalmazó titkosított üzenetet kapjon, ismernie kell a nyilvános kulcsát, és az csak az első tranzakciónál jelenik meg a blokkláncban. Így sikerült kilépnünk belőle: lehetőséget adtunk nekik, hogy ingyenes tokeneket kapjanak a pénztárcájukba. Jobb megoldás azonban, ha a fiókot nyilvános kulcsnak nevezi el. (Összehasonlításképpen megvan a számlaszám U1467838112172792705 a nyilvános kulcs származéka cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. A messenger számára ez kényelmesebb és olvashatóbb, de a 2FA kódok küldésére szolgáló rendszer számára ez korlátozás). Szerintem a jövőben valaki meghoz egy ilyen döntést, és áthelyezi a „Kényelmet és akadálymentesítést” a zöld zónába.
A 2FA kód küldésének ára nagyon alacsony - 0.001 ADM, most 0.00001 USD. Ismét megemelheti a blokkláncot, és nullázhatja az árat.
Hogyan csatlakoztasd a 2FA-t a blokkláncon a szolgáltatásodhoz
Remélem sikerült felkelteni néhány olvasót, hogy blokklánc-engedélyezést adjanak szolgáltatásaikhoz.
Elmondom, hogyan kell ezt megtenni a messengerünkkel példaként, és analógia útján használhat egy másik blokkláncot. A 2FA demóalkalmazásban postgresql10-et használunk a fiókadatok tárolására.
Csatlakozási szakaszok:
- Hozzon létre egy fiókot a blokkláncon, amelyből 2FA kódot küld. Kap egy jelszót, amelyet privát kulcsként használnak az üzenetek kódokkal történő titkosításához és a tranzakciók aláírásához.
- Adjon hozzá egy szkriptet a szerveréhez a 2FA kódok generálásához. Ha már más 2FA-módszert használ egyszeri jelszókézbesítéssel, akkor ezt a lépést már elvégezte.
- Adjon hozzá egy szkriptet a szerveréhez, hogy kódokat küldjön a felhasználónak a blokklánc üzenetküldőben.
- Hozzon létre egy felhasználói felületet a 2FA kód küldéséhez és beviteléhez. Ha már más 2FA-módszert használ egyszeri jelszókézbesítéssel, akkor ezt a lépést már elvégezte.
1 Fiók létrehozása
A fiók létrehozása a blokkláncban egy privát kulcs, egy nyilvános kulcs és egy származtatott fiókcím létrehozását jelenti.
Először a BIP39 jelmondatot állítják elő, és ebből számítják ki az SHA-256 hash-t. A hash a ks privát kulcs és a kp nyilvános kulcs generálására szolgál. A nyilvános kulcsból, ugyanazt az SHA-256-ot használva inverzióval, megkapjuk a címet a blokkláncban.
Ha minden alkalommal 2FA kódot szeretne küldeni egy új fiókból, akkor a fiók létrehozási kódját hozzá kell adni a szerverhez:
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()
}
A demo alkalmazásban leegyszerűsítettük - létrehoztunk egy fiókot a webes alkalmazásban, és kódokat küldtünk belőle. A legtöbb esetben ez a felhasználó számára is kényelmesebb: tudja, hogy a szolgáltatás 2FA kódot küld egy adott fiókból, és el tudja nevezni azt.
2 2FA kód generálása
Minden egyes felhasználói bejelentkezéshez létre kell hozni egy 2FA kódot. Használjuk a könyvtárat
const hotp = speakeasy.hotp({
counter,
secret: account.seSecretAscii,
});
A felhasználó által beírt 2FA kód érvényességének ellenőrzése:
se2faVerified = speakeasy.hotp.verify({
counter: this.seCounter,
secret: this.seSecretAscii,
token: hotp,
});
3 2FA kód küldése
A 2FA kód beküldéséhez használhatja a blokklánc csomópont API-t, a JS API könyvtárat vagy a konzolt. Ebben a példában a konzolt használjuk - ez a Command Line Interface, egy segédprogram, amely leegyszerűsíti a blokklánccal való interakciót. Ha 2FA kóddal szeretne üzenetet küldeni, akkor a parancsot kell használnia send message
konzolok.
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);
Az üzenetküldés másik módja a módszer használata send
a JS API könyvtárban.
4 Felhasználói felület
A felhasználónak lehetőséget kell adni a 2FA kód megadására, ez az alkalmazás platformjától függően többféleképpen is megtehető. Példánkban ez a Vue.
A blokklánc kéttényezős hitelesítés demóalkalmazásának forráskódja megtekinthető a címen
Forrás: will.com