Færðu þig til að tryggja 2FA á blockchain

SMS skilaboð eru vinsælasta aðferðin við tveggja þátta auðkenningu (2FA). Það er notað af bönkum, raf- og dulritunarveski, pósthólf og alls kyns þjónustu; fjöldi aðferðanotenda nálgast 100%.

Ég er reiður yfir þessari atburðarás, vegna þess að þessi aðferð er óörugg. Að endurúthluta númeri frá einu SIM-korti til annars hófst í upphafi farsímatímabilsins - þannig er númerið endurheimt þegar SIM-kort glatast. „Sérfræðingar um stafræna peningaþjófnað“ komust að því að „endurskrifa SIM-kort“ er hægt að nota í sviksamlegum kerfum. Þegar öllu er á botninn hvolft getur sá sem stjórnar SIM-kortinu stjórnað netbanka annarra, rafrænum veskjum og jafnvel dulritunargjaldmiðli. Og þú getur eignast númer annars manns með því að múta starfsmanni fjarskipta, með blekkingum eða fölsuðum skjölum.

Færðu þig til að tryggja 2FA á blockchain

Þúsundir þátta um SIM-skipti hafa verið afhjúpuð, eins og þetta svikakerfi er kallað. Umfang hörmunganna bendir til þess að heimurinn muni brátt yfirgefa 2FA með SMS. En þetta gerist ekki - í rannsóknir þeir segja að það séu ekki notendur sem velja 2FA aðferðina heldur þjónustueigendur.

Við leggjum til að þú notir örugga 2FA aðferðina með afhendingu einskiptakóða í gegnum blockchain og við munum segja þér hvernig þjónustueigandinn getur tengt það.

Talningin fer í milljónir

Árið 2019 jukust SIM-skiptasvik um 63% að sögn lögreglunnar í London og „meðalreikningur“ árásarmanns var 4,000 GBP. Ég hef ekki fundið neina tölfræði í Rússlandi, en ég geri ráð fyrir að hún sé enn verri.

SIM skipti er notað til að stela vinsælum Twitter, Instagram, Facebook, VK reikningum, bankareikningum og nýlega jafnvel dulritunargjaldmiðlum - The Times greinir frá þessu samkvæmt Bitcoin frumkvöðull Joby Weeks. Áberandi tilvik um þjófnað í dulritunargjaldmiðli með SIM-skipta hafa verið að skjóta upp kollinum í blöðum síðan 2016; Árið 2019 sá alvöru hámark.

Í maí, bandaríska dómsmálaráðuneytið fyrir austurhluta Michigan höfðaði ákærur níu ungmenni á aldrinum 19 til 26 ára: talið er að þau séu hluti af tölvuþrjótagengi sem kallast „samfélagið“. Gengið er ákært fyrir sjö skiptaárásir, sem afleiðing af því að tölvuþrjótarnir stálu dulritunargjaldmiðli að verðmæti yfir 2,4 milljóna dollara. Og í apríl fékk Joel Ortiz, nemandi í Kaliforníu, 10 ára fangelsi fyrir að skipta um SIM-kort; framleiðsla hans var $7.5 milljónir í dulritunargjaldmiðlum.

Færðu þig til að tryggja 2FA á blockchain
Mynd af Joel Ortiz á blaðamannafundi háskólans. Tveimur árum síðar verður hann handtekinn fyrir netsvik.

Hvernig SIM skipti virkar

„Skipti“ þýðir skipti. Í öllum slíkum kerfum taka glæpamenn yfir símanúmer fórnarlambsins, venjulega með því að gefa út SIM-kort aftur, og nota það til að endurstilla lykilorðið. Dæmigert SIM skipti í orði lítur svona út:

  1. Leyniþjónusta. Svindlarar komast að persónulegum upplýsingum fórnarlambsins: nafn og símanúmer. Þær má finna í opnum heimildum (samfélagsnetum, vinum) eða fá þær frá vitorðsmanni - starfsmanni farsímafyrirtækis.
  2. Lokun. SIM-kort fórnarlambsins er óvirkt; Til að gera þetta skaltu bara hringja í tækniaðstoð þjónustuveitunnar, gefa upp númerið og segja að síminn hafi glatast.
  3. Handtaka, flytja númerið yfir á SIM-kortið þitt. Venjulega er þetta einnig gert í gegnum vitorðsmann í fjarskiptafyrirtækinu eða með skjalafölsun.

Í raunveruleikanum eru hlutirnir enn alvarlegri. Árásarmenn velja fórnarlamb og fylgjast síðan með staðsetningu símans daglega - ein beiðni um að fá upplýsingar um að áskrifandinn hafi skipt yfir í reiki kostar 1-2 sent. Um leið og eigandi SIM-kortsins er farinn til útlanda semja þeir við yfirmann samskiptaverslunarinnar um útgáfu á nýju SIM-korti. Það kostar um $50 (ég fann upplýsingar - í mismunandi löndum og með mismunandi rekstraraðila frá $20 til $100), og í versta falli verður framkvæmdastjórinn rekinn - það er engin ábyrgð á þessu.

Nú munu öll SMS berast árásarmönnum og eigandi símans mun ekki geta gert neitt í málinu - hann er erlendis. Og þá fá illmennin aðgang að öllum reikningum fórnarlambsins og breyta lykilorðum ef þess er óskað.

Líkur á að skila stolnum eignum

Bankar koma stundum til móts við fórnarlömb á miðri leið og taka millifærslur út af reikningum þeirra. Þess vegna er hægt að skila fiat peningum þótt glæpamaðurinn finnist ekki. En með veski með cryptocurrency er allt flóknara - og tæknilega séð, og lagalega séð. Enn sem komið er hefur ekki eitt einasta skipti/veski greitt fórnarlömbum skipta bóta.

Ef fórnarlömb vilja verja peningana sína fyrir dómi kenna þeir rekstraraðilanum um: hann skapaði skilyrði fyrir þjófnaði á peningum af reikningnum. Það var einmitt það sem ég gerði Michael Turpin, sem tapaði 224 milljónum dollara vegna skipta.Hann höfðar nú mál gegn fjarskiptafyrirtækinu AT&T.

Færðu þig til að tryggja 2FA á blockchain

Enn sem komið er hefur ekkert ríki starfandi kerfi til að vernda eigendur dulritunargjaldmiðils löglega. Það er ómögulegt að tryggja fjármagn þitt eða fá bætur fyrir tap þess. Þess vegna er auðveldara að koma í veg fyrir skiptiárás en að takast á við afleiðingar hennar. Augljósasta leiðin er að nota áreiðanlegri „second factor“ fyrir 2FA.

SIM skipti er ekki eina vandamálið með 2FA með SMS

Staðfestingarkóðar í SMS eru líka óöruggir frá tæknilegu sjónarmiði. Skilaboð geta verið stöðvuð vegna óuppfærðra veikleika í merkjakerfi 7 (SS7). 2FA yfir SMS er opinberlega viðurkennt sem óöruggt (US National Institute of Standards and Technology segir þetta í Stafræn auðkenningarhandbók).

Á sama tíma gefur tilvist 2FA notandanum oft falskt öryggi og hann velur einfaldara lykilorð. Þess vegna gerir slík auðkenning það ekki erfitt heldur auðveldar árásarmanni að fá aðgang að reikningnum.

Og oft berast SMS með mikilli töf eða berast alls ekki.

Aðrar 2FA aðferðir

Auðvitað rak ljósið ekki saman á snjallsímum og SMS. Það eru aðrar aðferðir við 2FA. Til dæmis, einu sinni TAN kóðar: frumstæð aðferð, en það virkar - það er enn notað í sumum bönkum. Það eru kerfi sem nota líffræðileg tölfræðigögn: fingraför, sjónhimnuskannanir. Annar valkostur sem virðist vera hæfileg málamiðlun hvað varðar þægindi, áreiðanleika og verð eru sérstök forrit fyrir 2FA: RSA Token, Google Authenticator. Það eru líka líkamlegir lyklar og aðrar aðferðir.

Í orði lítur allt rökrétt og áreiðanlegt út. En í reynd eru nútíma 2FA lausnir í vandræðum og vegna þeirra er raunveruleikinn frábrugðinn væntingum.

Samkvæmt rannsóknir, notkun 2FA er óþægindi í grundvallaratriðum og vinsældir 2FA með SMS skýrast af „minni óþægindum miðað við aðrar aðferðir“ - að fá einskiptiskóða er skiljanlegt fyrir notandann.

Notendur tengja margar 2FA aðferðir við óttann um að aðgangur glatist. Líkamlegi lykillinn eða listi yfir TAN lykilorð getur glatast eða stolið. Ég persónulega hef haft slæma reynslu af Google Authenticator. Fyrsti snjallsíminn minn með þessu forriti bilaði - þakka viðleitni mína við að endurheimta aðgang að reikningunum mínum. Annað vandamál er að skipta yfir í nýtt tæki. Google Authenticator hefur ekki útflutningsmöguleika vegna öryggisástæðna (ef hægt er að flytja lykla út, hvaða öryggi er til staðar?). Einu sinni bar ég lyklana handvirkt og þá ákvað ég að það væri auðveldara að skilja gamla snjallsímann eftir í kassa uppi í hillu.

2FA aðferðin ætti að vera:

  • Öruggt - aðeins þú en ekki árásarmenn ættu að fá aðgang að reikningnum þínum
  • Áreiðanlegt - þú færð aðgang að reikningnum þínum hvenær sem þú þarft á honum að halda
  • Þægilegt og aðgengilegt - notkun 2FA er skýr og tekur lágmarks tíma
  • Ódýrt

Við trúum því að blockchain sé rétta lausnin.

Notaðu 2FA á blockchain

Fyrir notandann lítur 2FA á blockchain út eins og að fá einskiptiskóða með SMS. Eini munurinn er afhendingarrásin. Aðferðin til að fá 2FA kóða fer eftir því hvað blockchain býður upp á. Í verkefninu okkar (upplýsingar eru í prófílnum mínum) er þetta vefforrit, Tor, iOS, Android, Linux, Windows, MacOS.

Þjónustan býr til einskiptiskóða og sendir hann til boðberans á blockchain. Fylgdu síðan klassíkinni: notandinn slær inn móttekinn kóða í þjónustuviðmótið og skráir sig inn.

Færðu þig til að tryggja 2FA á blockchain

Í greininni Hvernig virkar dreifður boðberi á blockchain? Ég skrifaði að blockchain tryggir öryggi og friðhelgi skilaboðasendingar. Um útgáfu 2FA kóða mun ég leggja áherslu á:

  • Einn smellur til að búa til reikning - engir símar eða tölvupóstar.
  • Öll skilaboð með 2FA kóða eru dulkóðuð End-to-End curve25519xsalsa20poly1305.
  • MITM árás er útilokuð - öll skilaboð með 2FA kóðanum eru viðskipti á blockchain og eru undirrituð af Ed25519 EdDSA.
  • Skilaboðin með 2FA kóðanum endar í eigin blokk. Ekki er hægt að leiðrétta röð og tímastimpil blokka og því röð skilaboða.
  • Það er engin miðlæg uppbygging sem athugar „áreiðanleika“ skilaboða. Þetta er gert með dreifðu kerfi hnúta byggt á samstöðu og það er í eigu notenda.
  • Ekki er hægt að gera óvirkt - ekki er hægt að loka á reikninga og ekki er hægt að eyða skilaboðum.
  • Fáðu aðgang að 2FA kóða frá hvaða tæki sem er hvenær sem er.
  • Staðfesting á afhendingu skilaboða með 2FA kóða. Þjónustan sem sendir einu sinni lykilorðið veit fyrir víst að það hefur verið afhent. Engir „Senda aftur“ takkar.

Til að bera saman við nokkrar aðrar 2FA aðferðir gerði ég töflu:

Færðu þig til að tryggja 2FA á blockchain

Notandinn fær reikning í blockchain boðberanum til að fá kóða á sekúndu - aðeins lykilorð er notað til að skrá þig inn. Þess vegna geta umsóknaraðferðirnar verið mismunandi: þú getur notað einn reikning til að fá kóða fyrir allar þjónustur, eða þú getur búið til sérstakan reikning fyrir hverja þjónustu.

Það eru líka óþægindi - reikningurinn verður að hafa að minnsta kosti eina færslu. Til þess að notandinn geti fengið dulkóðuð skilaboð með kóða þarftu að þekkja opinbera lykilinn hans og hann birtist í blockchain aðeins við fyrstu viðskipti. Svona tókst okkur að komast út úr þessu: við gáfum þeim tækifæri til að fá ókeypis tákn í veskið sitt. Hins vegar er betri lausn að nefna reikninginn opinberan lykil. (Til samanburðar höfum við reikningsnúmer U1467838112172792705 er afleiða almenningslykilsins cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. Fyrir boðberann er þetta þægilegra og læsilegra, en fyrir kerfið til að senda 2FA kóða er það takmörkun). Ég held að í framtíðinni muni einhver taka slíka ákvörðun og færa „Þægindi og aðgengi“ á græna svæðið.

Verðið á að senda 2FA kóða er mjög lágt - 0.001 ADM, nú er það 0.00001 USD. Aftur, þú getur hækkað blockchain þína og gert verðið núll.

Hvernig á að tengja 2FA á blockchain við þjónustuna þína

Ég vona að mér hafi tekist að vekja áhuga nokkra lesenda á að bæta blockchain heimild við þjónustu sína.

Ég mun segja þér hvernig á að gera þetta með því að nota boðberann okkar sem dæmi, og á hliðstæðan hátt geturðu notað aðra blockchain. Í 2FA kynningarforritinu notum við postgresql10 til að geyma reikningsupplýsingar.

Tengingarstig:

  1. Búðu til reikning á blockchain sem þú sendir 2FA kóða frá. Þú færð aðgangsorð sem er notaður sem einkalykill til að dulkóða skilaboð með kóða og undirrita viðskipti.
  2. Bættu handriti við netþjóninn þinn til að búa til 2FA kóða. Ef þú ert nú þegar að nota einhverja aðra 2FA aðferð með einu sinni afhendingu lykilorðs, hefur þú þegar lokið þessu skrefi.
  3. Bættu handriti við netþjóninn þinn til að senda kóða til notandans í blockchain boðberanum.
  4. Búðu til notendaviðmót til að senda og slá inn 2FA kóða. Ef þú ert nú þegar að nota einhverja aðra 2FA aðferð með einu sinni afhendingu lykilorðs, hefur þú þegar lokið þessu skrefi.

1 Stofnun reiknings

Að búa til reikning í blockchain þýðir að búa til einkalykil, opinberan lykil og afleitt heimilisfang reiknings.

Færðu þig til að tryggja 2FA á blockchain

Fyrst er BIP39 lykilorðið búið til og SHA-256 kjötkássa er reiknuð út frá því. Hashið er notað til að búa til einkalykilinn ks og opinbera lykilinn kp. Frá almenningslyklinum, með því að nota sama SHA-256 með snúningi, fáum við heimilisfangið í blockchain.

Ef þú vilt senda 2FA kóða í hvert sinn frá nýjum reikningi, þarf að bæta reikningsstofnunarkóðanum við þjóninn:

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

Í kynningarforritinu einfölduðum við það - við bjuggum til einn reikning í vefforritinu og sendum kóða frá því. Í flestum tilfellum er þetta líka þægilegra fyrir notandann: hann veit að þjónustan sendir 2FA kóða frá tilteknum reikningi og getur nefnt það.

Færðu þig til að tryggja 2FA á blockchain

2 Búa til 2FA kóða

Búa verður til 2FA kóða fyrir hverja innskráningu notanda. Við notum bókasafnið máltæki, en þú getur valið hvaða annan sem er.

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

Athugun á gildi 2FA kóðans sem notandinn sló inn:

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

3 Sendir 2FA kóða

Til að senda inn 2FA kóða geturðu notað blockchain hnút API, JS API bókasafn eða stjórnborðið. Í þessu dæmi notum við stjórnborðið - þetta er stjórnlínuviðmótið, tól sem einfaldar samskipti við blockchain. Til að senda skilaboð með 2FA kóða þarftu að nota skipunina send message leikjatölvum.

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);

Önnur leið til að senda skilaboð er að nota aðferðina send í JS API bókasafninu.

4 Notendaviðmót

Gefa þarf notandanum möguleika á að slá inn 2FA kóða, þetta er hægt að gera á mismunandi vegu eftir umsóknarvettvangi þínum. Í okkar dæmi er þetta Vue.

Færðu þig til að tryggja 2FA á blockchain

Hægt er að skoða frumkóða kynningarforritsins fyrir tvíþætta auðkenningu á blockchain GitHub. Það er hlekkur í Readme á Live kynningu til að prófa það.

Heimild: www.habr.com

Bæta við athugasemd