Mesazhet SMS janë një nga mënyrat më të njohura të autentifikimit me dy faktorë (2FA). Ato përdoren nga bankat, portofolat elektronike dhe kripto, kutitë e postës dhe shërbime të ndryshme; .
Ky zhvillim ngjall shqetĂ«sim, sepse kjo metodĂ« nuk Ă«shtĂ« e sigurt. Rishpallja e numrit nga njĂ« kartĂ« SIM nĂ« njĂ« tjetĂ«r filloi qĂ« nĂ« epokĂ«n e parĂ« tĂ« celularĂ«ve â kĂ«shtu rikuperohet numri kur humbet SIM. âSpecialistĂ«t e vjedhjes sĂ« parave digjitaleâ kuptuan se mund tĂ« pĂ«rdorin opsionin e ârishkruarjes sĂ« SIM-itâ nĂ« skemata mashtruese. Sepse ai qĂ« kontrollon kartĂ«n SIM, mund tĂ« menaxhojĂ« edhe bankat online tĂ« tĂ« tjerĂ«ve, si dhe portofolat elektronike dhe madje kriptovalutat. PĂ«r tĂ« marrĂ« numrin e dikujt tjetĂ«r, mund tĂ« pĂ«rdoret ryshfeti ndaj njĂ« punonjĂ«si tĂ« telekomit, mashtrimi ose dokumentet e falsifikuara.

JanĂ« zbuluar mijĂ«ra episode tĂ« SIM-swap-it, siç quhet kjo skemĂ« mashtrimi. Shtrirja e kĂ«tij problemi tregon se shpejt bota do tĂ« heqĂ« dorĂ« nga 2FA me SMS. Por kjo nuk po ndodh â shpjegojnĂ« se metoda 2FA nuk zgjidhet nga pĂ«rdoruesit, por nga pronarĂ«t e shĂ«rbimeve.
Ne ofrojmë një metodë të sigurt 2FA me dërgimin e kodit të vlefshëm përmes blockchain-it dhe do t'ju tregojmë si ta aktivizoni atë si pronar i shërbimit.
Numri po shkon në miliona
NĂ« vitin 2019, mashtrimi i SIM-swap-it u rrit me 63% sipas policisĂ« londineze, dhe âçmimi mesatarâ i kriminelĂ«ve ishte 4,000 GBP. Nuk kam gjetur statistikĂ« pĂ«r RusinĂ«, por besohet se Ă«shtĂ« edhe mĂ« keq.
SIM-swap-i pĂ«rdoret pĂ«r vjedhjen e llogarive popullore nĂ« Twitter, Instagram, Facebook, VK, llogarive bankare, dhe sĂ« fundmi ka arritur edhe nĂ« kriptovaluta â sipariĆ nga sipĂ«rmarrĂ«si i bitcoin, Joby Wix. Raste tĂ« bujshme tĂ« vjedhjes sĂ« kriptovalutave pĂ«rmes SIM-swap-it kanĂ« dalĂ« nĂ« shtyp qĂ« nga viti 2016; vitin 2019 pĂ«rputhet me pikun e vĂ«rtet.
NĂ« maj, prokuroria e Shteteve tĂ« Bashkuara nĂ« distriktin lindor tĂ« Michigan-it ndaj nĂ«ntĂ« tĂ« rinjve tĂ« moshĂ«s nga 19 deri nĂ« 26 vjeç: ata dyshohet se bĂ«jnĂ« pjesĂ« nĂ« njĂ« bandĂ« hackera tĂ« quajtur âThe Communityâ («Komuniteti»). BandĂ«s i janĂ« caktuar shtatĂ« sulme swap-i, rezultati i tĂ« cilave hackerĂ«t i janĂ« vjedhur kriptovaluta me vlerĂ« mbi $2.4 million. Dhe nĂ« prill, njĂ« student nga Kalifornia, Joel Ortiz, mori 10 vjet burg pĂ«r SIM-swap; pasuria e tij ishte $7.5 milion nĂ« kriptovaluta.

Fotografia e Joel Ortiz në konferencën për shtyp në universitet. Pas dy vjetësh, ai do të arrestohet për mashtrim kibernetik.
Parimi i funksionimit të SIM-swapping
«Swapping» do të thotë shkëmbim. Në të gjitha skemat e tilla, kriminelët shfrytëzojnë numrin e telefonit të viktimës, zakonisht përmes rishkallëzimit të kartës SIM, dhe e përdorin atë për të rikuperuar fjalëkalimin. Një SIM-swapping tipik në teori duket kështu:
- Inteligjenca. KriminelĂ«t mĂ«sojnĂ« tĂ« dhĂ«nat personale tĂ« viktimĂ«s: emrin dhe telefonin. Ato mund tĂ« gjenden nĂ« burime tĂ« hapura (rrjetet sociale, miqtĂ«) ose tĂ« merren nga njĂ« ndihmĂ«s â njĂ« punonjĂ«s i operatorit tĂ« telefonisĂ« celulare.
- Bllokimi. Karta SIM e viktimës deaktivizohet; për këtë mjafton të telefononi në mbështetje dhe të raportoni numrin, duke thënë se telefoni është humbur.
- Kapja, ndryshimi i numrit në SIM-in e tij. Kjo zakonisht bëhet gjithashtu përmes një ndihmësi në kompaninë telekomunikative apo me ndihmën e falsifikimit të dokumenteve.
NĂ« jetĂ«n reale, gjithçka Ă«shtĂ« edhe mĂ« e ashpĂ«r. KĂ«ta individĂ« zgjedhin viktimĂ«n, dhe pastaj ndjekin çdo ditĂ« lokacionin e telefonit â njĂ« kĂ«rkesĂ« pĂ«r informacion se sa i angazhuar Ă«shtĂ« aboneja nĂ« roaming kushton 1-2 cent. Sapo pronari i kartĂ«s SIM tĂ« jetĂ« larguar jashtĂ« vendit, ata bien dakord me njĂ« menaxher nĂ« dyqan pĂ«r tĂ« marrĂ« njĂ« kartĂ« SIM tĂ« re. Kostoja Ă«shtĂ« rreth 50 $ (kam gjetur informacione â nĂ« vende tĂ« ndryshme dhe te operatorĂ« tĂ« ndryshĂ«m nga 20 $ deri nĂ« 100 $), me menaxherin qĂ« nĂ« rastin mĂ« tĂ« keq do tĂ« shkarkohet â pĂ«r kĂ«tĂ« nuk ka ndonjĂ« pĂ«rgjegjĂ«si.
Tani tĂ« gjitha SMS-tĂ« do tĂ« vinĂ« tek kriminelĂ«t, ndĂ«rsa pronari i telefonit nuk do tĂ« mund tĂ« bĂ«jĂ« asgjĂ« pĂ«r kĂ«tĂ« â ai Ă«shtĂ« jashtĂ« vendit. Pastaj, ata pĂ«rfitojnĂ« qasje nĂ« tĂ« gjitha llogaritĂ« e viktimĂ«s dhe, nĂ«se dĂ«shirojnĂ«, ndĂ«rrojnĂ« fjalĂ«kalimet.
Shanset për të rikuperuar të vjedhurat
Bankat ndonjĂ«herĂ« i japin dorĂ« viktimave dhe anullojnĂ« transferimet nga llogaritĂ« e tyre. Prandaj, rikthimi i parave fiata Ă«shtĂ« i mundur, edhe nĂ«se krimineli nuk kapet. Por me portofolat e kriptomonedhave, gjithçka Ă«shtĂ« mĂ« e komplikuar â nĂ« aspektin teknik,dhe ligjor. Deri tani, asnjĂ« shkĂ«mbim/portofol nuk ka paguar kompensim viktimave tĂ« swapping.
Nëse viktimat duan të mbrojnë paratë e tyre në gjykatë, ato i akuzojnë operatorin: ai krijoi kushte për vjedhjen e parave nga llogaria. Kështu ka vepruar , i cili humbi për shkak të swapping 224 milion $ . Tani ai po e padit kompaninë telekomunikuese AT&T.

Deritë asnjë nga shtetet nuk ka skema efektive për të mbrojtur ligjërisht pronarët e kriptovalutave. Nuk është e mundur të sigurohet kapitali ose të merret kompensim për humbjen e tij. Prandaj, parandalimi i një sulmi me swapping është më i lehtë sesa të luftosh pasojat e tij. Mënyra më e dukshme është të përdorësh një "faktor të dytë" më të besueshëm për 2FA.
SIM-swap është jo vetëm problemi i vetëm i 2FA përmes SMS
Kodet e konfirmimit në SMS janë të pasigurta edhe nga ana teknike. Mesazhet mund të kapen për shkak të dobësive të pazgjidhura në sistemin e sinjalizimit Signaling System 7 (SS7). 2FA përmes SMS është njohur zyrtarisht si e pasigurt (Instituti Kombëtar i Standardeve dhe Teknologjisë në SHBA thotë këtë në udhëzimin e tij ).
Megjithatë, prania e 2FA shpesh i jep përdoruesit një ndjenjë të rreme të sigurisë, duke e shtyrë atë të zgjedhë një fjalëkalim më të thjeshtë. Prandaj, kjo autentifikim nuk e vështirëson, përkundrazi, e lehtëson qasjen e keqbërësit në llogari.
Po ashtu, shpesh mesazhet SMS mbërrijnë me vonesë të madhe ose nuk mbërrijnë fare.
Mënyra të tjera të 2FA
Natyrisht, nĂ« smartphone dhe SMS nuk Ă«shtĂ« gjithçka. Ka edhe mĂ«nyra tĂ« tjera pĂ«r 2FA. PĂ«r shembull, kodet e TAN tĂ« njĂ«hershĂ«m: njĂ« metodĂ« primitive, por funksionuese â ajo ende pĂ«rdoret nĂ« disa banka. Ka sisteme qĂ« pĂ«rdorin tĂ« dhĂ«na biometrike: gjurmĂ«t e gishtave, skanat e retinĂ«s. NjĂ« opsion tjetĂ«r qĂ« duket si njĂ« kompromis i arsyeshĂ«m nĂ« komoditet, siguri dhe çmim janĂ« aplikacionet speciale pĂ«r 2FA: RSA Token, Google Authenticator. Po ashtu, ekzistojnĂ« çelĂ«sa fizikĂ« dhe metoda tĂ« tjera.
Në teori, gjithçka duket logjike dhe e sigurt. Por në praktikë, zgjidhjet moderne 2FA kanë probleme, dhe për këtë arsye realiteti ndryshon nga pritshmëritë.
Sipas , pĂ«rdorimi i 2FA Ă«shtĂ« njĂ« shqetĂ«sim nĂ« parim, dhe popullariteti i 2FA pĂ«r SMS shpjegohet me "mĂ« pak shqetĂ«sim nĂ« krahasim me metodat e tjera" â marrja e kodit tĂ« pĂ«rkohshĂ«m Ă«shtĂ« e qartĂ« pĂ«r pĂ«rdoruesin.
ShumĂ« pĂ«rdorues lidhin metodat e 2FA me frikĂ«n se do tĂ« humbasin aksesin. NjĂ« çelĂ«s fizik ose njĂ« listĂ« TAN-kodesh mund tĂ« humbasin ose tĂ« vidhen. Personalish, kam pĂ«rvojĂ« negative me Google Authenticator. Smartfoni im i parĂ« me kĂ«tĂ« aplikacion u prish â vlerĂ«soni pĂ«rpjekjet e mia pĂ«r tĂ« rikuperuar aksesin nĂ« llogari. NjĂ« problem tjetĂ«r Ă«shtĂ« kalimi nĂ« njĂ« pajisje tĂ« re. Google Authenticator nuk ka mundĂ«si eksporte pĂ«r arsye sigurie (nĂ«se çelĂ«sat mund tĂ« eksportohen, cila Ă«shtĂ« kĂ«tu siguria?). NjĂ« herĂ« kam transferuar çelĂ«sat manualisht, e mĂ« pas vendosa se ishte mĂ« e lehtĂ« tĂ« mbaja smartfonin e vjetĂ«r nĂ« kutinĂ« e tij nĂ« rafte.
Metoda 2FA duhet të jetë:
- E sigurt â aksesin nĂ« llogari duhet ta ketĂ« vetĂ«m ju, e jo keqbĂ«rĂ«sit
- E besueshme â ju keni akses nĂ« llogarinĂ« tuaj gjithmonĂ« kur ju nevojitet
- E lehtĂ« dhe e aksesueshme â pĂ«rdorimi i 2FA Ă«shtĂ« i kuptueshĂ«m dhe merr minimumin e kohĂ«s
- E lirë
Ne mendojmë se blockchain është zgjidhja e duhur.
Përdorni 2FA në blockchain
Për përdoruesin, 2FA në blockchain duket si marrja e kodeve njëherësh përmes SMS. Ndryshimi është vetëm në kanalin e dorëzimit. Mënyra e marrjes së kodit 2FA varet nga ajo që ofron blockchain. Në projektin tonë (informacioni është në profilin tim) është një aplikacion në Web, Tor, iOS, Android, Linux, Windows, MacOS.
ShĂ«rbimi gjeneron njĂ« kod njĂ«herĂ«sh dhe e dĂ«rgon atĂ« nĂ« mesazhin nĂ« blockchain. Pastaj â sipas standardeve: pĂ«rdoruesi fut kodin e marrĂ« nĂ« ndĂ«rfaqen e shĂ«rbimit dhe autorizohet.

Në artikullin kam shkruar se blockchain siguron siguri dhe privatësi në dërgimin e mesazheve. Në lidhje me dërgimin e kodeve 2FA, do të theksoj:
- NjĂ« klikim pĂ«r tĂ« krijuar llogarinĂ« â asnjĂ« telefon dhe email.
- Të gjitha mesazhet me kodet 2FA janë të koduara End-to-End curve25519xsalsa20poly1305.
- Sulmi MITM Ă«shtĂ« i eliminuar â çdo mesazh me kod 2FA Ă«shtĂ« njĂ« transaksion nĂ« blockchain dhe nĂ«nshkruhet me Ed25519 EdDSA.
- Mesazhi me kodin 2FA hyn në bllokun e tij. Renditja dhe timestamp e blloqeve nuk mund të ndryshohen, ndoshta dhe rendi i mesazheve.
- Nuk ka njĂ« strukturĂ« qendrore qĂ« bĂ«n verifikimet pĂ«r âvĂ«rtetĂ«sinĂ«â e mesazhit. Kjo bĂ«het nga njĂ« sistem i shpĂ«rndarĂ« nyjesh bazuar nĂ« konsensus, dhe i pĂ«rket pĂ«rdoruesve.
- PamundĂ«sia pĂ«r tĂ« bllokuar â llogaritĂ« nuk mund tĂ« bllokohen dhe mesazhet nuk mund tĂ« fshihen.
- Akses në kodet 2FA nga çdo pajisje në çdo kohë.
- Konfirmimi i dorĂ«zimit tĂ« mesazhit me kodin 2FA. ShĂ«rbimi qĂ« dĂ«rgon kodin njĂ«herĂ«sh e di saktĂ«sisht se ai Ă«shtĂ« dorĂ«zuar. AsnjĂ« buton âDĂ«rgo pĂ«rsĂ«riâ.
Për krahasim me disa metoda të tjera për 2FA, kam krijuar një tabelë:

Një llogari në mesazhin blockchain për të marrë kodet e përdoruesit merret në sekondë - për hyrje përdoret vetëm pasfrazë. Prandaj, mënyrat e përdorimit mund të jenë të ndryshme: mund të përdorni një llogari për të marrë kodet për të gjitha shërbimet, ose mund të krijoni një llogari të veçantë për çdo shërbim.
Ka edhe një disavantazh - llogaria duhet të ketë të paktën një transaksion. Për të marrë një mesazh të enkriptuar me kodin, duhen njohur çelësi i tij publik, i cili shfaqet në blockchain vetëm me transaksionin e parë. Ne arritëm të gjejmë një zgjidhje: ofruam mundësinë për të marrë monedha falas në portofol. Megjithatë, zgjidhja më e saktë do të ishte të emërtohej llogaria me çelësin publik. (Për krahasim, numri i llogarisë tonë U1467838112172792705 është një derivat i çelësit publik cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. Për mesazhin, kjo është më e lehtë dhe më e lexueshme, por për sistemin e dërgimit të kodit 2FA është një kufizim). Mendoj se në të ardhmen dikush do të krijojë një zgjidhje të tillë dhe do ta transferojë "Komoditet dhe qasjen" në zonën e gjelbër.
Ămimi i dĂ«rgimit tĂ« kodit 2FA Ă«shtĂ« realisht i ulĂ«t - 0.001 ADM, tani Ă«shtĂ« 0.00001 USD. Po ashtu, Ă«shtĂ« e mundur tĂ« ngrini blockchain tuaj dhe ta bĂ«ni çmimin zero.
Si të lidhni 2FA në blockchain me shërbimin tuaj
Shpresoj se kam arritur të tërheq disa lexues për të shtuar autorizimin në blockchain në shërbimet e tyre.
Do të tregoj si ta bëni këtë duke marrë si shembull mesazhin tonë, dhe me analogji mund të përdorni një blockchain tjetër. Në aplikacionin demo 2FA ne përdorim postgresql10 për të ruajtur informacionin mbi llogaritë.
Hapat e lidhjes:
- Krijoni një llogari në blockchain nga e cila do të dërgoni kodet 2FA. Do të merrni një pasfrazë, e cila përdoret si çelësi privat për enkriptimin e mesazheve me kodet dhe për nënshkrimin e transaksioneve.
- Shtoni në serverin tuaj një skenarat për gjenerimin e kodit 2FA. Nëse tashmë përdorni ndonjë metodë tjetër 2FA me dorëzimin e fjalëkalimeve një herë, ky hap është përfunduar.
- Shtoni në serverin tuaj një skenarat për dërgimin e kodit përdoruesit në mesazhin blockchain.
- Krijoni një ndërfaqe për përdoruesin për dërgimin dhe hyrjen e kodit 2FA. Nëse tashmë përdorni ndonjë metodë tjetër 2FA me dorëzimin e fjalëkalimeve një herë, ky hap është përfunduar.
1 Krijimi i llogarisë
Krijimi i llogarisë në blockchain përfshin gjenerimin e një çelësi privat, një çelësi publik dhe një adresë të dedikuar nga ky çelës.

Fillimisht gjenerohet një frazë kalimi BIP39, nga e cila llogaritet një hash SHA-256. Hashi përdoret për të gjeneruar çelësin privat ks dhe çelësin publik kp. Nga çelësi publik, me të njëjtin SHA-256 dhe inverzimin, merret adresa në blockchain.
Nëse dëshironi të dërgoni kodet 2FA gjithmonë nga një llogari e re, kodi për krijimin e llogarisë duhet të shtohet në server:
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()
}NĂ« aplikacionin demo ne e kemi thjeshtuar â krijuam njĂ« llogari nĂ« aplikacionin web dhe dĂ«rgojmĂ« kodet nga ajo. NĂ« shumicĂ«n e rasteve, kjo Ă«shtĂ« mĂ« e pĂ«rshtatshme pĂ«r pĂ«rdoruesin: ai e di se shĂ«rbimi dĂ«rgon kodet 2FA nga njĂ« llogari e caktuar dhe mund ta emĂ«rtojĂ« atĂ«.

2 Gjenerimi i kodëve 2FA
Kodi 2FA duhet të gjenerohet për çdo hyrje të përdoruesit. Ne përdorim bibliotekën , por mund të zgjidhni ndonjë tjetër.
const hotp = speakeasy.hotp({
counter,
secret: account.seSecretAscii,
});
Verifikimi i vlefshmërisë së kodit 2FA, të futur nga përdoruesi:
se2faVerified = speakeasy.hotp.verify({
counter: this.seCounter,
secret: this.seSecretAscii,
token: hotp,
});
3 Dërgimi i kodit 2FA
PĂ«r tĂ« dĂ«rguar kodin 2FA, mund tĂ« pĂ«rdorni API-nĂ« e nodit blockchain, bibliotekĂ«n JS API ose konsolĂ«n. NĂ« kĂ«tĂ« shembull, ne pĂ«rdorim konsolĂ«n â kjo Ă«shtĂ« Interfejsi i LinjĂ«s sĂ« KomandĂ«s, njĂ« utilitar qĂ« thjeshton ndĂ«rveprimin me blockchain. PĂ«r tĂ« dĂ«rguar njĂ« mesazh me kodin 2FA, duhet tĂ« pĂ«rdorni komandĂ«n dĂ«rgo mesazh nĂ« konsolĂ«.
const util = require('util');
const exec = util.promisify(require('child_process').exec);
âŠ
const command = `adm dërgo mesazh ${adamantAddress} "Kodi 2FA: ${hotp}"`;
let { error, stdout, stderr } = await exec(command);
Një mënyrë alternative për të dërguar mesazhe është përdorimi i metodës dërgo në bibliotekën JS API.
4 Ndërfaqja e përdoruesit
Përdoruesi duhet të ketë mundësinë të futë kodin 2FA, dhe kjo mund të bëhet në mënyra të ndryshme në varësi të platformës së aplikacionit tuaj. Në shembullin tonë, është Vue.

Kodu burimor i aplikacionit demonstrues të dyfishtë autentifikimit në blockchain mund të shihet në . Në Readme ka një lidhje për Live demo, për ta provuar.
Burimi: habr.com
