Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

SMS ziņas ir vispopulārākā divu faktoru autentifikācijas (2FA) metode. To izmanto bankas, elektroniskie un kriptonauda maki, pastkastes un visa veida pakalpojumi; metodes lietotāju skaits tuvojas 100%.

Esmu saÅ”utis par Å”o scenāriju, jo Ŕī metode nav droÅ”a. Numura maiņa no vienas SIM kartes uz otru sākās mobilo sakaru ēras sākumā ā€“ Ŕādi tiek atjaunots numurs, ja SIM karte tiek nozaudēta. ā€œDigitālās naudas zādzÄ«bu speciālistiā€ saprata, ka iespēju ā€œpārrakstÄ«t SIM kartiā€ var izmantot krāpnieciskās shēmās. Galu galā tas, kurÅ” pārvalda SIM karti, var kontrolēt citu cilvēku tieÅ”saistes banku, elektroniskos makus un pat kriptovalÅ«tu. Un jÅ«s varat iegÅ«t citas personas numuru, uzpērkot telekomunikāciju darbinieku, izmantojot maldināŔanu vai viltotus dokumentus.

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

Ir atklātas tÅ«kstoÅ”iem SIM karÅ”u maiņas epizožu, kā tiek saukta Ŕī krāpÅ”anas shēma. Katastrofas mērogs liecina, ka pasaule drÄ«zumā atteiksies no 2FA, izmantojot SMS. Bet tas nenotiek - iekŔā PētÄ«jumi viņi saka, ka 2FA metodi izvēlas nevis lietotāji, bet gan pakalpojumu Ä«paÅ”nieki.

Mēs piedāvājam izmantot droÅ”o 2FA metodi ar vienreizēju kodu piegādi, izmantojot blokķēdi, un mēs jums pateiksim, kā pakalpojuma Ä«paÅ”nieks var to savienot.

Skaits sasniedz miljonus

Saskaņā ar Londonas policijas datiem 2019. gadā krāpÅ”anās ar SIM swap palielinājās par 63%, un uzbrucēja ā€œvidējais rēķinsā€ bija 4,000 GBP. Krievijā statistiku neatradu, bet pieņemu, ka tā ir vēl sliktāka.

SIM maiņa tiek izmantota, lai nozagtu populāros Twitter, Instagram, Facebook, VK kontus, bankas kontus un nesen pat kriptovalÅ«tas - To ziņo laikraksts The Times saskaņā ar Bitcoin uzņēmēja Joby Weeks teikto. Jau kopÅ” 2016. gada presē parādās skaļi kriptovalÅ«tas zādzÄ«bu gadÄ«jumi, izmantojot SIM maiņu; 2019. gads piedzÄ«voja Ä«stu virsotni.

Maijā ASV Mičiganas Austrumu apgabala prokuratÅ«ra izvirzÄ«tas apsÅ«dzÄ«bas deviņi jaunieÅ”i vecumā no 19 lÄ«dz 26 gadiem: tiek uzskatÄ«ts, ka viņi ir daļa no hakeru bandas ar nosaukumu "Kopiena". Bandai izvirzÄ«tas apsÅ«dzÄ«bas septiņos mijmaiņas uzbrukumos, kuru rezultātā hakeri nozaga kriptovalÅ«tu vairāk nekā 2,4 miljonu dolāru vērtÄ«bā. Un aprÄ«lÄ« Kalifornijas students Džoels Ortizs saņēma 10 gadus cietumā par SIM maiņu; viņa produkcija bija 7.5 miljoni dolāru kriptovalÅ«tās.

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē
Džoela Ortiza fotogrāfija universitātes preses konferencē. Pēc diviem gadiem viņŔ tiks aizturēts par kiberkrāpÅ”anu.

Kā darbojas SIM maiņa

"Apmaiņa" nozÄ«mē apmaiņu. Visās Ŕādās shēmās noziedznieki pārņem upura tālruņa numuru, parasti atkārtoti izsniedzot SIM karti, un izmanto to, lai atiestatÄ«tu paroli. Tipiska SIM apmaiņa teorētiski izskatās Ŕādi:

  1. IzlÅ«koÅ”anas dienests. Krāpnieki uzzina upura personÄ«go informāciju: vārdu un tālruņa numuru. Tos var atrast atklātajos avotos (sociālajos tÄ«klos, draugos) vai saņemt no lÄ«dzzinātāja - mobilā operatora darbinieka.
  2. BloÄ·Ä“Å”ana. CietuŔā SIM karte ir deaktivizēta; Lai to izdarÄ«tu, vienkārÅ”i piezvaniet uz pakalpojumu sniedzēja tehnisko atbalstu, norādiet numuru un sakiet, ka tālrunis ir pazaudēts.
  3. Uzņemiet, pārsÅ«tiet numuru uz SIM karti. Parasti tas tiek darÄ«ts arÄ« ar lÄ«dzzinātāja starpniecÄ«bu telekomunikāciju uzņēmumā vai ar dokumentu viltoÅ”anu.

Reālajā dzÄ«vē lietas ir vēl smagākas. Uzbrucēji atlasa upuri un pēc tam katru dienu izseko tālruņa atraÅ”anās vietu ā€“ viens pieprasÄ«jums saņemt informāciju, ka abonents pārgājis uz viesabonÄ“Å”anu, maksā 1-2 centus. TiklÄ«dz SIM kartes Ä«paÅ”nieks ir devies uz ārzemēm, sakaru veikalā ar menedžeri sarunājas par jaunas SIM kartes izsniegÅ”anu. Tas maksā apmēram 50 dolārus (atradu informāciju - dažādās valstÄ«s un pie dažādiem operatoriem no 20 lÄ«dz 100 dolāriem), un sliktākajā gadÄ«jumā vadÄ«tājs tiks atlaists - atbildÄ«ba par to nav.

Tagad visas SMS saņems uzbrucēji, un telefona Ä«paÅ”nieks neko nevarēs darÄ«t ā€“ viņŔ atrodas ārzemēs. Un tad ļaundari iegÅ«st piekļuvi visiem upura kontiem un, ja vēlas, maina paroles.

Iespējas atgriezt nozagto mantu

Bankas dažreiz izmitina upurus pusceļā un izņem pārskaitÄ«jumus no viņu kontiem. Tāpēc fiat naudu iespējams atdot arÄ« tad, ja noziedznieks netiek atrasts. Bet ar kriptovalÅ«tas makiem viss ir sarežģītāk - un tehniski, un likumdoÅ”anas jomā. LÄ«dz Å”im neviena maiņa/maciņa nav izmaksājusi kompensācijas maiņas upuriem.

Ja cietuÅ”ie vēlas aizstāvēt savu naudu tiesā, viņi vaino operatoru: viņŔ radÄ«ja apstākļus naudas zādzÄ«bai no konta. TieÅ”i tā arÄ« darÄ«ju Maikls Tērpins, kurÅ” maiņas dēļ zaudēja 224 miljonus dolāru.Tagad viņŔ iesÅ«dz tiesā telekomunikāciju uzņēmumu AT&T.

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

Pagaidām nevienai valstij nav darbojoÅ”u shēmu, lai likumÄ«gi aizsargātu kriptovalÅ«tas Ä«paÅ”niekus. Nav iespējams apdroÅ”ināt savu kapitālu vai saņemt kompensāciju par tā zaudējumiem. Tāpēc mijmaiņas uzbrukuma novērÅ”ana ir vieglāka nekā tā seku novērÅ”ana. Visredzamākais veids ir izmantot uzticamāku "otro faktoru" 2FA.

SIM maiņa nav vienīgā problēma ar 2FA, izmantojot SMS

Apstiprinājuma kodi SMS ir arÄ« nedroÅ”i no tehniskā viedokļa. Ziņojumus var pārtvert signalizācijas sistēmas 7 (SS7) neaizlāpÄ«tu ievainojamÄ«bu dēļ. 2FA, izmantojot SMS, ir oficiāli atzÄ«ta par nedroÅ”u (ASV Nacionālais standartu un tehnoloÄ£iju institÅ«ts to saka savā ziņojumā Digitālās autentifikācijas rokasgrāmata).

Tajā paŔā laikā 2FA klātbÅ«tne lietotājam bieži rada viltus droŔības sajÅ«tu, un viņŔ izvēlas vienkārŔāku paroli. Tāpēc Ŕāda autentifikācija to neapgrÅ«tina, bet atvieglo uzbrucēja piekļuvi kontam.

Un bieži vien SMS pienāk ar lielu kavÄ“Å”anos vai nesanāk vispār.

Citas 2FA metodes

Protams, viedtālruņos un SMS gaisma nesaplÅ«da. Ir arÄ« citas 2FA metodes. Piemēram, vienreizējie TAN kodi: primitÄ«va metode, bet tā darbojas ā€“ dažās bankās to izmanto joprojām. Ir sistēmas, kas izmanto biometriskos datus: pirkstu nospiedumus, tÄ«klenes skenÄ“Å”anu. Vēl viena iespēja, kas Ŕķiet saprātÄ«gs kompromiss ērtÄ«bas, uzticamÄ«bas un cenas ziņā, ir Ä«paÅ”as 2FA lietojumprogrammas: RSA Token, Google Authenticator. Ir arÄ« fiziskās atslēgas un citas metodes.

Teorētiski viss izskatās loÄ£iski un uzticami. Taču praksē mÅ«sdienu 2FA risinājumiem ir problēmas, un to dēļ realitāte atŔķiras no gaidÄ«tā.

Saskaņā ar izpēte, 2FA lietoÅ”ana principā ir neērtÄ«ba, un 2FA popularitāte ar SMS palÄ«dzÄ«bu tiek skaidrota ar ā€œmazākām neērtÄ«bām salÄ«dzinājumā ar citām metodēmā€ - vienreizējo kodu saņemÅ”ana ir lietotājam saprotama.

Lietotāji daudzas 2FA metodes saista ar bailēm, ka piekļuve tiks zaudēta. Fiziskā atslēga vai TAN paroļu saraksts var tikt pazaudēts vai nozagts. Man personÄ«gi ir bijusi slikta pieredze ar Google autentifikatoru. Mans pirmais viedtālrunis ar Å”o lietojumprogrammu sabojājās ā€” novērtējiet manus centienus atjaunot piekļuvi maniem kontiem. Vēl viena problēma ir pāreja uz jaunu ierÄ«ci. Google autentifikatoram droŔības apsvērumu dēļ nav eksportÄ“Å”anas iespējas (ja atslēgas var eksportēt, kāda tur ir droŔība?). Reiz atslēgas nēsāju manuāli, un tad nolēmu, ka veco viedtālruni ir vieglāk atstāt kastē uz plaukta.

2FA metodei jābūt Ŕādai:

  • DroÅ”i ā€” tikai jÅ«s, nevis uzbrucēji, drÄ«kstat piekļūt jÅ«su kontam
  • Uzticams ā€” jÅ«s varat piekļūt savam kontam, kad vien tas ir nepiecieÅ”ams
  • Ērts un pieejams ā€“ 2FA lietoÅ”ana ir skaidra un aizņem minimālu laiku
  • Lēts

Mēs uzskatām, ka blokķēde ir pareizais risinājums.

Izmantojiet 2FA blokķēdē

Lietotājam 2FA blokķēdē izskatās tāpat kā vienreizēju kodu saņemÅ”ana ar SMS. VienÄ«gā atŔķirÄ«ba ir piegādes kanāls. 2FA koda iegÅ«Å”anas metode ir atkarÄ«ga no tā, ko piedāvā blokķēde. MÅ«su projektā (informācija ir manā profilā) Ŕī ir tÄ«mekļa lietojumprogramma, Tor, iOS, Android, Linux, Windows, MacOS.

Pakalpojums ģenerē vienreizēju kodu un nosūta to kurjeram blokķēdē. Tālāk seko klasika: lietotājs servisa saskarnē ievada saņemto kodu un piesakās.

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

Rakstā Kā blokķēdē darbojas decentralizēts kurjers? Es rakstÄ«ju, ka blokķēde nodroÅ”ina ziņojumu pārraides droŔību un privātumu. Jautājumā par 2FA kodu nosÅ«tÄ«Å”anu es izcelÅ”u:

  • Viens klikŔķis, lai izveidotu kontu ā€” bez tālruņiem vai e-pastiem.
  • Visi ziņojumi ar 2FA kodiem ir Å”ifrēti no end-to-end curve25519xsalsa20poly1305.
  • MITM uzbrukums ir izslēgts ā€” katrs ziņojums ar 2FA kodu ir transakcija blokķēdē, un to paraksta Ed25519 EdDSA.
  • Ziņojums ar 2FA kodu nonāk savā blokā. Bloku secÄ«bu un laikspiedolu nevar labot, un lÄ«dz ar to arÄ« ziņojumu secÄ«bu.
  • Nav centrālās struktÅ«ras, kas pārbaudÄ«tu ziņojuma ā€œautentitātiā€. To veic sadalÄ«ta mezglu sistēma, kuras pamatā ir vienprātÄ«ba, un tā pieder lietotājiem.
  • Nevar atspējot ā€” kontus nevar bloķēt un ziņojumus nevar izdzēst.
  • Piekļūstiet 2FA kodiem no jebkuras ierÄ«ces jebkurā laikā.
  • Ziņojuma piegādes apstiprinājums ar 2FA kodu. Pakalpojums, kas nosÅ«ta vienreizējo paroli, noteikti zina, ka tā ir piegādāta. Nav pogas ā€œSÅ«tÄ«t vēlreizā€.

Lai salīdzinātu ar dažām citām 2FA metodēm, es izveidoju tabulu:

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

Lietotājs saņem kontu blokķēdes Messenger, lai saņemtu kodus sekundē ā€“ pieteikÅ”anās tiek izmantota tikai ieejas frāze. Tāpēc pieteikÅ”anās metodes var atŔķirties: varat izmantot vienu kontu, lai saņemtu kodus visiem pakalpojumiem, vai arÄ« varat izveidot atseviŔķu kontu katram pakalpojumam.

Ir arÄ« neērtÄ«bas ā€“ kontā ir jābÅ«t vismaz vienam darÄ«jumam. Lai lietotājs saņemtu Å”ifrētu ziņojumu ar kodu, ir jāzina viņa publiskā atslēga, un tā blokķēdē parādās tikai ar pirmo darÄ«jumu. Tā mums izdevās no tā izkļūt: devām viņiem iespēju makā saņemt bezmaksas žetonus. Tomēr labāks risinājums ir nosaukt kontu par publisko atslēgu. (SalÄ«dzinājumam mums ir konta numurs U1467838112172792705 ir publiskās atslēgas atvasinājums cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. Kurjeram tas ir ērtāk un lasāmāk, bet sistēmai 2FA kodu nosÅ«tÄ«Å”anai tas ir ierobežojums). Domāju, ka nākotnē kāds pieņems Ŕādu lēmumu un pārcels ā€œÄ’rtÄ«bas un pieejamÄ«buā€ uz zaļo zonu.

2FA koda nosÅ«tÄ«Å”anas cena ir patieŔām zema - 0.001 ADM, tagad tā ir 0.00001 USD. Atkal, jÅ«s varat paaugstināt savu blokķēdi un padarÄ«t cenu par nulli.

Kā savienot 2FA blokķēdē ar jūsu pakalpojumu

Es ceru, ka varēju ieinteresēt dažus lasītājus pievienot saviem pakalpojumiem blokķēdes autorizāciju.

Es jums pastāstÄ«Å”u, kā to izdarÄ«t, izmantojot mÅ«su kurjeru kā piemēru, un pēc analoÄ£ijas varat izmantot citu blokķēdi. 2FA demonstrācijas lietotnē mēs izmantojam postgresql10, lai saglabātu konta informāciju.

Savienojuma posmi:

  1. Izveidojiet kontu blokķēdē, no kura nosÅ«tÄ«sit 2FA kodus. JÅ«s saņemsiet ieejas frāzi, kas tiek izmantota kā privāta atslēga ziņojumu Å”ifrÄ“Å”anai ar kodiem un darÄ«jumu parakstÄ«Å”anai.
  2. Pievienojiet savam serverim skriptu, lai Ä£enerētu 2FA kodus. Ja jau izmantojat kādu citu 2FA metodi ar vienreizēju paroles piegādi, jÅ«s jau esat pabeidzis Å”o darbÄ«bu.
  3. Pievienojiet savam serverim skriptu, lai nosūtītu kodus lietotājam blokķēdes ziņojumapmaiņas programmā.
  4. Izveidojiet lietotāja interfeisu 2FA koda nosÅ«tÄ«Å”anai un ievadÄ«Å”anai. Ja jau izmantojat kādu citu 2FA metodi ar vienreizēju paroles piegādi, jÅ«s jau esat pabeidzis Å”o darbÄ«bu.

1 Konta izveide

Konta izveide blokķēdē nozÄ«mē privātās atslēgas, publiskās atslēgas un atvasinātas konta adreses Ä£enerÄ“Å”anu.

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

Pirmkārt, tiek Ä£enerēta BIP39 ieejas frāze un no tās tiek aprēķināta SHA-256 jaucējfrāze. Hash tiek izmantots, lai Ä£enerētu privāto atslēgu ks un publisko atslēgu kp. No publiskās atslēgas, izmantojot to paÅ”u SHA-256 ar inversiju, mēs iegÅ«stam adresi blokķēdē.

Ja vēlaties katru reizi nosūtīt 2FA kodus no jauna konta, konta izveides kods būs jāpievieno serverim:

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()
}

Demonstrācijas lietojumprogrammā mēs to vienkārÅ”ojām - izveidojām vienu kontu tÄ«mekļa lietojumprogrammā un no tā nosÅ«tām kodus. Vairumā gadÄ«jumu tas ir arÄ« ērtāk lietotājam: viņŔ zina, ka pakalpojums sÅ«ta 2FA kodus no konkrēta konta, un var to nosaukt.

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

2 2FA kodu ģenerēŔana

Katram lietotāja pieteikÅ”anās brÄ«dim ir jāģenerē 2FA kods. Mēs izmantojam bibliotēku speakeasy, bet jÅ«s varat izvēlēties jebkuru citu.

const hotp = speakeasy.hotp({
  counter,
  secret: account.seSecretAscii,
});

Lietotāja ievadītā 2FA koda derīguma pārbaude:

se2faVerified = speakeasy.hotp.verify({
  counter: this.seCounter,
  secret: this.seSecretAscii,
  token: hotp,
});

3 2FA koda nosūtīŔana

Lai iesniegtu 2FA kodu, varat izmantot blokķēdes mezgla API, JS API bibliotēku vai konsoli. Å ajā piemērā mēs izmantojam konsoli - tas ir komandrindas interfeiss, utilÄ«ta, kas vienkārÅ”o mijiedarbÄ«bu ar blokķēdi. Lai nosÅ«tÄ«tu ziņojumu ar 2FA kodu, jums ir jāizmanto komanda send message 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);

AlternatÄ«vs veids, kā nosÅ«tÄ«t ziņojumus, ir izmantot Å”o metodi send JS API bibliotēkā.

4 Lietotāja interfeiss

Lietotājam ir jādod iespēja ievadīt 2FA kodu, to var izdarīt dažādos veidos atkarībā no jūsu lietojumprogrammas platformas. Mūsu piemērā tas ir Vue.

Pārvietojieties, lai nodroÅ”inātu 2FA blokķēdē

Blockchain divu faktoru autentifikācijas demonstrācijas lietojumprogrammas pirmkodu var apskatÄ«t vietnē GitHub. Programmā Readme ir saite uz tieÅ”raides demonstrāciju, lai to izmēģinātu.

Avots: www.habr.com

Pievieno komentāru