SMS sĂ”numid on ĂŒhed populaarseimad kahefaasilise autentimise (2FA) meetodid. Neid kasutavad pangad, elektroonilised ja krĂŒptorahakotid, e-posti teenused ja mitmesugused teenused; .
Selline sĂŒndmuste kĂ€ik tekitab minus pahameelt, sest see meetod ei ole ohutu. Telefoninumbri ĂŒleminekut ĂŒhest SIM-kaardist teise hakati tegema juba mobiiliaja alguses â nii taastatakse number SIM-kaardi kadumise korral. "Digitaalsete raha varguste spetsialistid" on mĂ”istnud, et SIM-kaardi "uuesti kirjutamise" funktsiooni saab kasutada petuskeemides. Sest see, kes kontrollib SIM-kaarti, saab hallata nii teiste online-pangandust, elektroonilisi rahakotte kui ka isegi krĂŒptoraha. Ja kellegi teise numbri saamisesse saab sattuda, kaaludes telekomitöötaja Ă€raostmist, petuskeemide ja vale dokumentidega.

Sadu SIM-kaardi vahetusega seotud petuskeeme on paljastatud â just nii nimetatakse seda pettuse skeemi. HĂ€da ulatus rÀÀgib, et peagi loobutakse 2FA kasutamisest SMS-iga. Kuid seda ei toimu â ĂŒtlevad, et 2FA meetodi valivad mitte kasutajad, vaid teenuste omanikud.
Pakume vĂ€lja kasutada turvalist 2FA meetodit, kus ĂŒhekordsed koodid edastatakse plokiahela kaudu, ning rÀÀgime, kuidas teenuse omanik saab seda sisse lĂŒlitada.
Jutt kÀib miljonitest
2019. aastal kasvas SIM-kaardi vahetamise pettus Londonis 63% vÔrra, keskmine rikkauspetja kÀtte saadud summa oli 4,000 GBP. Venemaal ei leidnud statistikat, kuid arvan, et see on veel hullem.
SIM-kaardi vahetust kasutatakse populaarsete kontode varastamiseks Twitteris, Instagramis, Facebookis, VK-s, pangakontode varastamiseks, ning hiljuti on jĂ”udnud ka krĂŒptorahani â bitcoini ettevĂ”tja Joby Wicks'i sĂ”nade kohaselt. Karmid juhtumid, kus SIM-kaardi vahetamise kaudu on varastatud krĂŒptoraha, on ajakirjanduses ilmunud alates 2016. aastast; 2019. aastal toimus tĂ”eline tipphetk.
Mai kuu USA prokuratuur Michigani idapiirkonnas ĂŒheksale noormehele, kelle vanus on vahemikus 19 kuni 26 aastat: nad kuuluvad kahtlustatava hĂ€kkerite grupi âThe Communityâ ("Kogukond") alla. Grupile on esitatud sĂŒĂŒdistus seitsmes vahetamise rĂŒnnakus, mille tulemusel varastasid hĂ€kkerid krĂŒptoraha summas ĂŒle 2,4 miljoni dollari. Ja aprillis sai Kaliforniast pĂ€rit tudeng Joel Ortiz 10 aastat vangistust SIM-kaardi vahetamise eest; tema saagiks oli 7,5 miljonit dollarit krĂŒptorahades.

Foto Joel Ortizest pressikonverentsil ĂŒlikoolis. Kaks aastat hiljem viib ta kaootomĂŒĂŒge tĂ”ttu kinni.
SIM-kaardi vahetuse tööpÔhimÔte
"Vahetus" tĂ€hendab vahetumist. KĂ”ikides sarnastes skeemides omandavad kurjategijad ohvri telefoninumbri, tavaliselt SIM-kaardi uue vĂ€ljastamise kaudu, ja kasutavad seda parooli lĂ€htestamiseks. TĂŒĂŒpiline SIM-kaardi vahetus nĂ€eb vĂ€lja selline:
- Uurimine. Petturid saavad ohvri isikuandmed: nimi ja telefon. Need on vÔimalik leida avalikest allikatest (sotsiaalmeedia, sÔbrad) vÔi saada kaasosalise kaudu - mobiilsideoperaatori töötaja.
- Blokeerimine. Ohvri SIM-kaart deaktiveeritakse; selleks piisab, kui helistada teenindusse, öelda oma number ja teatada, et telefon kadus.
- Numbrite ĂŒleviimine oma SIM-kaardile. Seda tehakse tavaliselt ka kaasosalise kaudu telekomiettevĂ”ttes vĂ”i dokumentide valevĂ€ljastamisega.
Reaalses elus on olukord veelgi karmim. Kurjategijad valivad ohvri ja jĂ€lgivad pĂ€evapĂ€evalt telefoni asukohta - ĂŒks taotlus teabe saamiseks, et abonent lĂ€heb rĂ€ndamiseks, maksab 1-2 senti. Niisiis, kui SIM-kaardi omanik on vĂ€lismaal, lepivad nad sidepoes juhiga kokku uue SIM-kaardi vĂ€ljastamises. See maksab umbes 50 dollarit (olen leidnud teavet - erinevates riikides ja erinevatelt operaatoritelt maksab see 20 kuni 100 dollarit), samas halvimates olukordades vallandatakse juhi, kuid selle eest ei ole vastutust.
NĂŒĂŒd saavad kĂ”ik SMSâid kurjategijad, samas kui telefoni omanik ei saa sellega midagi teha - ta on vĂ€lismaal. Edasi saavad kurjategijad juurdepÀÀsu kĂ”igile ohvri kontodele ja vajadusel muudavad paroolid.
VÔimalused varastatud raha tagasi saada
Pangad mĂ”nikord toetavad ohvreid ja tagastavad nende kontodelt tehtud ĂŒlekanded. SeetĂ”ttu on kasvĂ”i fiatraha tagastamine vĂ”imalik, isegi kui kurjategijat ei leita. Kuid krĂŒptorahakottidega on olukord keerulisem - ja tehniliselt, ja seadusandlikult. Siiani ei ole ĂŒkski vahetuspunkt/rahakott maksnud kompensatsiooni vahetuse ohvritele.
Kui kannatanud soovivad oma raha kohtus kaitsta, siis sĂŒĂŒdistavad nad operaatorit: see lĂ”i tingimused raha varastamiseks kontolt. Just nii kĂ€itus , kes kaotas vahetuse tĂ”ttu 224 miljonit dollarit. Praegu kaebab ta telekommunikatsiooniettevĂ”tet AT&T.

Praegu ei ole ĂŒheski riigis kehtivaid skeeme, et seaduslikult kaitsta krĂŒptovaluutade omanikke. Oma kapitali kindlustamine vĂ”i selle kaotuse hĂŒvitamine on vĂ”imatu. SeetĂ”ttu on swapsi rĂŒnnaku Ă€rahoidmine lihtsam kui selle tagajĂ€rgedega tegelemine. KĂ”ige ilmsem viis on kasutada usaldusvÀÀrsemat "teist tegurit" 2FA jaoks.
SIM-swap on ainus probleem 2FA SMS-i kaudu.
Kinnituskoode SMS-is ei ole turvaline kasutada ka tehniliselt. Teateid saab pealt kuulata Signaling System 7 (SS7) sĂŒsteemis esinevate lahendamatu haavatavuste tĂ”ttu. SMS-i pĂ”hine 2FA on ametlikult tunnustatud ebaturvaliseks (USA Rahvuslik Standardite ja Tehnoloogia Instituut rÀÀgib sellest oma ).
Samuti toob 2FA olemasolu sageli kasutajale vale turvatunde ja ta valib lihtsama parooli. SeetÔttu ei muuda selline autentimine kurjategija pÀÀsu kontole keerulisemaks, vaid kergemaks.
Ja tihti saabuvad SMS-id suure viivitusega vĂ”i ei tule ĂŒldse.
Teised 2FA meetodid.
Muidugi ei piirdunud 2FA vaid nutitelefonide ja SMS-idega. On ka teisi 2FA meetodeid. NĂ€iteks ĂŒhekordsed TAN-koodid: see meetod on primitiivne, kuid toimib â seda kasutatakse endiselt mĂ”nedes pankades. On ka sĂŒsteeme, mis kasutavad biomeetrilisi andmeid: sĂ”rmejĂ€lgi, vĂ”rkkesta skaneeringuid. Veel ĂŒks valik, mis tundub mĂ”istlik kompromiss mugavuse, turvalisuse ja hinna osas, on spetsiaalsed 2FA rakendused: RSA Token, Google Authenticator. Ja muidugi on olemas fĂŒĂŒsilised vĂ”tmed ja teised meetodid.
Teoorias tundub kÔik loogiline ja usaldusvÀÀrne. Kuid praktikas on kaasaegsetel 2FA lahendustel probleeme ning nende tÔttu erineb reaalsus ootustest.
Vastavalt , 2FA kasutamine on iseenesest ebamugav ning 2FA SMS-i populaarsust seletatakse "vĂ€iksema ebamugavuse vĂ”rreldes teiste meetoditega" â ĂŒhekordsete koodide saamine on kasutajale arusaadav.
Paljusid 2FA meetodeid seostavad kasutajad hirmuga, et juurdepÀÀs vĂ”ib kaduda. FĂŒĂŒsilist vĂ”tit vĂ”i TAN-paroolide loendit saab kaotada vĂ”i varastada. Isiklikult olen kogenud negatiivset kogemust Google Authenticatoriga. Minu esimene nutitelefon, millel see rakendus oli, purunes â hindake mu vaeva oma kontodele juurdepÀÀsu taastamise nimel. Teine probleem on ĂŒleminek uuele seadmele. Google Authenticator ei vĂ”imalda eksportimist turvakaalutluste tĂ”ttu (kui vĂ”tmed on eksportitavad, mis siis turvalisusest rÀÀgib?). Kord olen ma vĂ”tmed kĂ€sitsi ĂŒle viinud ja seejĂ€rel otsustasin, et on lihtsam jĂ€tta vana nutitelefon karpi riiulile.
2FA meetod peab olema:
- Turvaline â juurdepÀÀs kontole peaks olema ainult teil, mitte kurjategijatel
- UsaldusvÀÀrne â pÀÀsete kontole alati, kui seda vajate
- Mugav ja kergesti kĂ€ttesaadav â 2FA kasutamine on arusaadav ja vĂ”tab minimaalset aega
- Odav
Me arvame, et plokiahel on sobiv lahendus.
Kasutage 2FA plokiahelas
Kasutajale nĂ€eb 2FA plokiahelas vĂ€lja tĂ€pselt nagu ĂŒhekordsete koodide saamine SMS-iga. Erinevus on ainult kohaletoimetamise kanalis. 2FA-koodi saamise viis sĂ”ltub sellest, mida plokiahel pakub. Meie projektis (teave on minu profiilis) on see veebirakendus, Tor, iOS, Android, Linux, Windows, MacOS.
Teenust genereerib ĂŒhekordse koodi ja saadab selle plokiahela sĂ”numiteenusesse. Edasi â klassikaline protseduur: kasutaja sisestab saadud koodi teenuse liidesesse ja autentib end.

Artiklis Ma kirjutasin, et plokiahel tagab sÔnumite edastamise turvalisuse ja privaatsuse. 2FA koodide saatmise osas toon vÀlja:
- Ăks klikk konto loomiseks â ei mingeid telefone ega e-posti aadresse.
- KĂ”ik 2FA koodide sĂ”numid on krĂŒpteeritud End-to-End curve25519xsalsa20poly1305.
- MITM-rĂŒnnakud on vĂ€listatud â iga 2FA koodiga sĂ”num on plokiahela tehing ja allkirjastatud Ed25519 EdDSA-ga.
- 2FA koodiga sÔnum jÔuab oma blokki. Blokkide jÀrjestust ja ajatemplit ei saa muuta, seega ka sÔnumite jÀrjekorda.
- Keskset struktuuri, mis kontrollib sĂ”numi "usaldusvÀÀrsust", ei ole. Selle teeb jaotatud sĂ”lmede sĂŒsteem konsensuse pĂ”hjal, ja see kuulub kasutajatele.
- VĂ”imetus luua lukustust â kontosid ei saa blokeerida ja sĂ”numeid kustutada.
- 2FA koodide juurdepÀÀs igalt seadmelt igal ajal.
- 2FA koodi sĂ”numi kohaletoimetamise kinnitamine. Teenus, mis saadab ĂŒhekordse parooli, teab tĂ€pselt, et see on kĂ€tte toimetatud. Ei mingeid 'Saada veel kord' nuppe.
MÔningate teiste 2FA meetoditega vÔrdlemiseks koostasin tabeli:

Konto plokiahela sĂ”numivahetajas koodide saamiseks luuakse sekunditega â sisenemiseks kasutatakse ainult paroolifaasi. SeetĂ”ttu vĂ”ivad rakendused olla erinevad: saab kasutada ĂŒhte kontot koodide saamiseks kĂ”igi teenuste jaoks vĂ”i luua iga teenuse jaoks eraldi konto.
On ka ebamugavust â konto peab olema vĂ€hemalt ĂŒhe tehinguga. Selleks, et kasutaja saaks ĆĄifreeritud sĂ”numi koodiga, tuleb teada tema avalikku vĂ”tme, mis ilmub plokiahelas alles pĂ€rast esimest tehingut. Me leidsime lahenduse: andsime vĂ”imaluse saada rahakotis tasuta tokeneid. Kuid Ă”igem lahendus oleks kutsuda kontot avalikuks vĂ”tmemiseks. (VĂ”rdluseks, meie konto number U1467838112172792705 on tuletatud avalikust vĂ”tmedest cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. SĂ”numivahetaja jaoks on see mugavam ja loetavam, kuid 2FA-koodide saatmise sĂŒsteemi jaoks on see piirang). Arvan, et tulevikus keegi leiab sellise lahenduse ja toob "Mugavuse ja kergesti ligipÀÀsetavuse" rohelisse tsooni.
2FA-koodi saatmise hind on tĂ”eliselt madal â 0.001 ADM, see on praegu 0.00001 USD. JĂ€lle, saate tĂ”sta oma plokiahela ja muuta hinna nulliks.
Kuidas ĂŒhendada 2FA plokiahelas oma teenusega
Loodan, et suutsin huvitada mÔnda lugejat, et lisada plokiahela autentimine nende teenustele.
RÀÀgin, kuidas seda teha meie sÔnumivahetaja nÀitel, ja sarnaste pÔhimÔtete alusel saate kasutada ka teist plokiahela. DemonÀidis 2FA-s kasutame postgresql10 kontoinfo salvestamiseks.
Ăhendamise etapid:
- Looge plokiahelas konto, millest saate saata 2FA koode. Saate paroolifaasi, mida kasutatakse sÔnumite ƥifreerimise ja tehingute allkirjastamise jaoks.
- Lisage oma serverisse skript 2FA koodide genereerimiseks. Kui te juba kasutate mĂ”nda muud 2FA meetodit ĂŒhekordsete paroolide saatmiseks, on see etapp teil juba tehtud.
- Lisage oma serverisse skript koodide saatmiseks kasutajale plokiahela sÔnumivahetajasse.
- Looge kasutajaliides 2FA koodi saatmiseks ja sisestamiseks. Kui te juba kasutate mĂ”nda muud 2FA meetodit ĂŒhekordsete paroolide saatmiseks, on see etapp teil juba tehtud.
1 Konto loomine
Konto loomine plokiahelas hÔlmab privaatse vÔtme, avaliku vÔtme ja sellest tuleneva konto aadressi genereerimist.

Esmalt genereeritakse BIP39 fraas, mille pÔhjal arvutatakse SHA-256 rÀsi. RÀsi kasutatakse privaatse vÔtme ks ja avaliku vÔtme kp genereerimiseks. Avalikust vÔtmetest saame sama SHA-256 ja pöördenÀites plokiahela aadressi.
Kui soovite iga kord uue konto alt 2FA koode saata, tuleb konto loomise jaoks vajalik kood lisada serverisse:
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()
}Demonstreerivas rakenduses oleme selle lihtsustanud - oleme loonud ĂŒhe konto veebirakenduses ja saadame koodid sellelt. Enamasti on see kasutajale mugavam: ta teab, et teenus saadab 2FA koode konkreetselt mÀÀratud kontolt ning vĂ”ib selle nimeta.

2 2FA koodide genereerimine
2FA kood tuleb genereerida iga kord, kui kasutaja siseneb. Kasutame teeki , kuid vÔite valida ka muu.
const hotp = speakeasy.hotp({
counter,
secret: account.seSecretAscii,
});
Kasutaja sisestatud 2FA koodi kehtivuse kontrollimine:
se2faVerified = speakeasy.hotp.verify({
counter: this.seCounter,
secret: this.seSecretAscii,
token: hotp,
});
3 2FA koodi saatmine
2FA koodi saatmiseks saab kasutada plokiahela sÔlme API-d, JS API teeki vÔi konsooli. Selles nÀites kasutame konsooli - see on kÀsurealiides, tööriist, mis lihtsustab plokiahelaga suhtlemist. 2FA koodiga sÔnumi saatmiseks tuleb kasutada kÀsku send message konsoolis.
const util = require('util');
const exec = util.promisify(require('child_process').exec);
âŠ
const command = `adm send message ${adamantAddress} "2FA kood: ${hotp}"`;
let { error, stdout, stderr } = await exec(command);
Alternatiivne viis sÔnumite saatmiseks - kasutada meetodit send JS API teegis.
4 Kasutajaliides
Kasutajale tuleb anda vÔimalus sisestada 2FA kood, mida saab teha erinevates formaadis, sÔltuvalt teie rakenduse platvormist. Meie nÀites on see Vue.

Kahefaasilise autentimise demonstraatsiooni rakenduse lÀhtekoodi saab vaadata . Readme-s on link Live demo'le, et proovida.
Allikas: habr.com
