Pagbalhin aron masiguro ang 2FA sa blockchain

Ang mga mensahe sa SMS mao ang labing inila nga paagi sa two-factor authentication (2FA). Gigamit kini sa mga bangko, electronic ug crypto wallet, mailbox ug tanang matang sa serbisyo; ang gidaghanon sa mga tiggamit sa pamaagi nagkaduol sa 100%.

Nasuko ko sa kini nga senaryo, tungod kay kini nga pamaagi dili luwas. Ang pag-reassign sa usa ka numero gikan sa usa ka SIM card ngadto sa lain nagsugod sa sinugdanan sa panahon sa mobile - kini kung giunsa ang numero gipahiuli kung nawala ang usa ka SIM card. Ang "mga espesyalista sa pagpangawat sa digital nga salapi" nakaamgo nga ang kapilian nga "isulat pag-usab ang SIM card" mahimong magamit sa mga malimbungon nga laraw. Human sa tanan, ang nagkontrol sa SIM card makakontrol sa online banking sa ubang mga tawo, electronic wallet, ug bisan cryptocurrency. Ug mahimo nimong makuha ang numero sa laing tawo pinaagi sa pagsuhol sa usa ka empleyado sa telecom, gamit ang paglimbong o peke nga mga dokumento.

Pagbalhin aron masiguro ang 2FA sa blockchain

Liboan ka mga yugto sa SIM swapping ang nadiskubre, ingon nga kini nga pamaagi sa pagpanglimbong gitawag. Ang sukod sa katalagman nagsugyot nga ang kalibutan sa dili madugay mobiya sa 2FA pinaagi sa SMS. Apan kini dili mahitabo - sa panukiduki sila nag-ingon nga dili ang mga tiggamit ang nagpili sa pamaagi sa 2FA, apan ang mga tag-iya sa serbisyo.

Gisugyot namon ang paggamit sa luwas nga pamaagi sa 2FA nga adunay paghatud sa usa ka higayon nga mga code pinaagi sa blockchain, ug isulti namon kanimo kung giunsa kini makonektar sa tag-iya sa serbisyo.

Ang ihap moabot ngadto sa minilyon

Sa 2019, ang SIM swap fraud misaka sa 63% sumala sa London police, ug ang “average bill” sa usa ka attacker kay 4,000 GBP. Wala koy nakit-an nga estadistika sa Russia, apan nagtuo ko nga mas grabe pa kini.

Ang SIM swapping gigamit sa pagpangawat sa sikat nga Twitter, Instagram, Facebook, VK account, bank account, ug bag-o lang bisan sa mga cryptocurrencies - Ang mantalaang Times nagtaho sumala sa negosyante sa Bitcoin nga si Joby Weeks. Ang mga high-profile nga kaso sa pagpangawat sa cryptocurrency gamit ang SIM swapping nag-pop up sa press sukad sa 2016; Ang 2019 nakakita sa usa ka tinuud nga peak.

Sa Mayo, ang US Attorney's Office alang sa Eastern District of Michigan nagdala ug kaso siyam ka mga batan-on tali sa edad nga 19 ug 26: sila gituohan nga bahin sa usa ka hacker gang nga gitawag ug "Ang Komunidad". Ang gang gipasakaan og pito ka swap attacks, isip resulta diin ang mga hacker nangawat sa cryptocurrency nga nagkantidad og kapin sa $2,4 million. Ug niadtong Abril, ang estudyante sa California nga si Joel Ortiz nakadawat og 10 ka tuig nga pagkabilanggo tungod sa SIM swapping; ang iyang produksyon mao ang $7.5 milyon sa cryptocurrencies.

Pagbalhin aron masiguro ang 2FA sa blockchain
Litrato ni Joel Ortiz sa usa ka press conference sa unibersidad. Paglabay sa duha ka tuig siya mapriso tungod sa cyber fraud.

Giunsa paglihok ang SIM swap

Ang "pagbaylo" nagpasabot sa pagbayloay. Sa tanan nga ingon nga mga laraw, ang mga kriminal nagkuha sa numero sa telepono sa biktima, kasagaran pinaagi sa pag-isyu pag-usab sa usa ka SIM card, ug gigamit kini aron ma-reset ang password. Ang kasagaran nga SIM swap sa teorya ingon niini:

  1. Serbisyo sa paniktik. Nahibal-an sa mga mangingilad ang personal nga impormasyon sa biktima: ngalan ug numero sa telepono. Makit-an sila sa bukas nga mga gigikanan (mga social network, mga higala) o nadawat gikan sa usa ka kakunsabo - usa ka empleyado sa usa ka mobile operator.
  2. Pag-block. Ang SIM card sa biktima gi-deactivate; Aron mahimo kini, tawagan lang ang teknikal nga suporta sa provider, ihatag ang numero ug isulti nga nawala ang telepono.
  3. Kuhaa, ibalhin ang numero sa imong SIM card. Kasagaran gihimo usab kini pinaagi sa usa ka kakunsabo sa kompanya sa telecom o pinaagi sa pagpeke sa mga dokumento.

Sa tinuod nga kinabuhi mas grabe pa ang mga butang. Gipili sa mga tig-atake ang usa ka biktima ug dayon gisubay ang lokasyon sa telepono matag adlaw - usa ka hangyo nga makadawat kasayuran nga gibalhin sa suskritor sa roaming nagkantidad 1-2 sentimo. Dihang naka-abroad na ang tag-iya sa SIM card, nakigsabot sila sa manager sa communication store aron mo-issue og bag-ong SIM card. Nagkantidad kini og mga $50 (Nakakita ko og impormasyon - sa lain-laing mga nasud ug sa lain-laing mga operators gikan sa $20 ngadto sa $100), ug sa pinakagrabe nga kaso ang manedyer matangtang sa trabaho - walay responsibilidad alang niini.

Karon ang tanan nga SMS madawat sa mga tig-atake, ug ang tag-iya sa telepono dili makahimo bisan unsa bahin niini - naa siya sa gawas sa nasud. Ug dayon ang mga kontrabida makakuha og access sa tanan nga mga account sa biktima ug mag-ilis sa mga password kung gusto.

Mga kahigayonan sa pag-uli sa kinawat nga kabtangan

Ang mga bangko usahay mag-accommodate sa mga biktima sa tunga-tunga ug mag-withdraw sa mga pagbalhin gikan sa ilang mga account. Busa, posible nga ibalik ang fiat money bisan kung wala makit-an ang kriminal. Apan sa mga pitaka sa cryptocurrency ang tanan mas komplikado - ug teknikal, ug lehislatibo. Sa pagkakaron, walay bisan usa ka exchange/wallet nga nakabayad ug bayad sa mga biktima sa swapping.

Kung gusto sa mga biktima nga depensahan ang ilang kuwarta sa korte, ilang gibasol ang operator: gibuhat niya ang mga kondisyon alang sa pagpangawat sa kuwarta gikan sa account. Mao gyud na akong gibuhat Michael Turpin, nga nawad-an og $224 milyones tungod sa swapping. Gikiha na niya karon ang kompanya sa telekomunikasyon nga AT&T.

Pagbalhin aron masiguro ang 2FA sa blockchain

Sa pagkakaron, walay estado nga adunay nagtrabaho nga mga laraw aron legal nga mapanalipdan ang mga tag-iya sa cryptocurrency. Imposible nga masiguro ang imong kapital o makadawat bayad sa pagkawala niini. Busa, ang pagpugong sa usa ka swap attack mas sayon ​​kay sa pag-atubang sa mga sangputanan niini. Ang labing klaro nga paagi mao ang paggamit sa usa ka mas kasaligan nga "ikaduha nga hinungdan" alang sa 2FA.

Ang SIM swap dili lang ang problema sa 2FA pinaagi sa SMS

Ang mga code sa pagkumpirma sa SMS dili usab luwas gikan sa teknikal nga punto sa panglantaw. Ang mga mensahe mahimong ma-intercept tungod sa wala ma-patch nga mga kahuyangan sa Signaling System 7 (SS7). Ang 2FA sa SMS opisyal nga giila nga walay kasegurohan (ang US National Institute of Standards and Technology nag-ingon niini sa Giya sa Digital Authentication).

Sa parehas nga oras, ang presensya sa 2FA kanunay nga naghatag sa tiggamit og usa ka pagbati sa sayup nga seguridad, ug gipili niya ang usa ka mas simple nga password. Busa, ang ingon nga panghimatuud dili makapalisud, apan nagpadali alang sa usa ka tig-atake nga maka-access sa account.

Ug sa kasagaran ang SMS moabut nga adunay taas nga paglangan o wala gyud moabut.

Ang ubang mga pamaagi sa 2FA

Siyempre, ang kahayag wala mag-converge sa mga smartphone ug SMS. Adunay ubang mga pamaagi sa 2FA. Pananglitan, usa ka higayon nga TAN code: usa ka primitive nga pamaagi, apan kini molihok - gigamit gihapon kini sa pipila nga mga bangko. Adunay mga sistema gamit ang biometric data: fingerprints, retinal scans. Ang laing kapilian nga ingon og usa ka makatarunganon nga pagkompromiso sa mga termino sa kasayon, kasaligan ug presyo mao ang mga espesyal nga aplikasyon alang sa 2FA: RSA Token, Google Authenticator. Adunay usab pisikal nga mga yawe ug uban pang mga pamaagi.

Sa teoriya, ang tanan tan-awon nga makatarunganon ug kasaligan. Apan sa praktis, ang mga modernong solusyon sa 2FA adunay mga problema, ug tungod niini, ang reyalidad lahi sa gipaabut.

Sumala sa panukiduki, ang paggamit sa 2FA usa ka kahasol sa prinsipyo, ug ang pagkapopular sa 2FA pinaagi sa SMS gipatin-aw sa "dili kaayo kahasol kon itandi sa ubang mga pamaagi" - ang pagdawat sa usa ka higayon nga mga code masabtan sa tiggamit.

Gilangkit sa mga tiggamit ang daghang mga pamaagi sa 2FA sa kahadlok nga mawala ang pag-access. Ang pisikal nga yawe o listahan sa mga password sa TAN mahimong mawala o kawaton. Ako mismo adunay dili maayo nga mga kasinatian sa Google Authenticator. Ang akong una nga smartphone nga adunay kini nga aplikasyon naguba - gipabilhan ang akong mga paningkamot sa pagpasig-uli sa pag-access sa akong mga account. Ang laing problema mao ang pagbalhin sa bag-ong device. Ang Google Authenticator walay opsyon sa pag-eksport tungod sa mga hinungdan sa seguridad (kung ang mga yawe mahimong ma-eksport, unsa ang seguridad?). Sa higayon nga akong gidala ang mga yawe nga mano-mano, ug dayon nakahukom ko nga mas sayon ​​​​nga ibilin ang daan nga smartphone sa usa ka kahon sa usa ka estante.

Ang pamaagi sa 2FA kinahanglan nga:

  • Secure - ikaw lang ug dili ang mga tig-atake ang kinahanglan nga makakuha og access sa imong account
  • Kasaligan - makakuha ka og access sa imong account kung kinahanglan nimo kini
  • Sayon ug accessible - ang paggamit sa 2FA klaro ug gamay ra ang oras
  • Barato

Kami nagtuo nga ang blockchain mao ang husto nga solusyon.

Gamita ang 2FA sa blockchain

Alang sa tiggamit, ang 2FA sa blockchain susama ra sa pagdawat sa usa ka higayon nga mga code pinaagi sa SMS. Ang bugtong kalainan mao ang channel sa pagpadala. Ang pamaagi sa pagkuha og 2FA code nagdepende sa gitanyag sa blockchain. Sa among proyekto (ang impormasyon naa sa akong profile) kini usa ka Web application, Tor, iOS, Android, Linux, Windows, MacOS.

Ang serbisyo nagmugna og usa ka higayon nga code ug ipadala kini sa messenger sa blockchain. Dayon sunda ang mga klasiko: ang user mosulod sa nadawat nga code sa service interface ug mag-log in.

Pagbalhin aron masiguro ang 2FA sa blockchain

Ang artikulo Giunsa ang usa ka desentralisadong mensahero nga nagtrabaho sa blockchain? Gisulat nako nga ang blockchain nagsiguro sa seguridad ug pagkapribado sa pagpadala sa mensahe. Sa isyu sa pagpadala sa 2FA codes, akong i-highlight:

  • Usa ka pag-klik aron makahimo og account - walay mga telepono o email.
  • Ang tanan nga mga mensahe nga adunay 2FA code gi-encrypt nga End-to-End curve25519xsalsa20poly1305.
  • Ang pag-atake sa MITM wala iapil - ang matag mensahe nga adunay 2FA code usa ka transaksyon sa blockchain ug gipirmahan sa Ed25519 EdDSA.
  • Ang mensahe nga adunay 2FA code natapos sa kaugalingon nga block. Ang pagkasunodsunod ug timestamp sa mga bloke dili matul-id, ug busa ang han-ay sa mga mensahe.
  • Walay sentral nga istruktura nga nagsusi sa "pagkatinuod" sa usa ka mensahe. Gihimo kini sa usa ka gipang-apod-apod nga sistema sa mga node base sa consensus, ug kini gipanag-iya sa mga tiggamit.
  • Dili ma-disable - ang mga account dili ma-block ug ang mga mensahe dili mapapas.
  • Pag-access sa mga code sa 2FA gikan sa bisan unsang aparato bisan unsang orasa.
  • Pagkumpirma sa pagpadala sa mensahe nga adunay 2FA code. Ang serbisyo nga nagpadala sa usa ka higayon nga password nahibal-an nga sigurado nga kini gihatag. Walay "Ipadala pag-usab" nga mga buton.

Aron itandi sa ubang mga pamaagi sa 2FA, naghimo ako usa ka lamesa:

Pagbalhin aron masiguro ang 2FA sa blockchain

Ang user makadawat og account sa blockchain messenger aron makadawat og mga code sa usa ka segundo - usa ra ka passphrase ang gigamit sa pag-log in. Busa, ang mga pamaagi sa aplikasyon mahimong lahi: mahimo nimong gamiton ang usa ka account aron makadawat mga code alang sa tanan nga mga serbisyo, o mahimo ka maghimo usa ka lahi nga account alang sa matag serbisyo.

Adunay usab usa ka kahasol - ang account kinahanglan adunay labing menos usa ka transaksyon. Aron ang user makadawat sa usa ka naka-encrypt nga mensahe nga adunay code, kinahanglan nimo nga mahibal-an ang iyang publiko nga yawe, ug kini makita sa blockchain sa una nga transaksyon. Mao kini ang paagi nga kami nakalingkawas niini: gihatagan namo silag kahigayonan nga makadawat ug libreng mga token sa ilang pitaka. Bisan pa, ang usa ka mas maayo nga solusyon mao ang pagngalan sa account nga usa ka publiko nga yawe. (Alang sa pagtandi, kami adunay numero sa account U1467838112172792705 usa ka gigikanan sa yawe sa publiko cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. Alang sa mensahero kini mas sayon ​​​​ug mabasa, apan alang sa sistema sa pagpadala sa 2FA code kini usa ka limitasyon). Sa akong hunahuna nga sa umaabot adunay usa nga mohimo sa ingon nga desisyon ug ibalhin ang "Kasayon ​​​​ug Pag-access" sa berde nga sona.

Ang presyo sa pagpadala sa usa ka 2FA code ubos kaayo - 0.001 ADM, karon kini 0.00001 USD. Pag-usab, mahimo nimong ipataas ang imong blockchain ug himoong zero ang presyo.

Giunsa ang pagkonektar sa 2FA sa blockchain sa imong serbisyo

Nanghinaut ko nga nakapainteres ako sa pipila ka mga magbabasa nga idugang ang pagtugot sa blockchain sa ilang mga serbisyo.

Sultihan ko ikaw kung unsaon pagbuhat niini gamit ang among messenger isip usa ka pananglitan, ug pinaagi sa analogy mahimo nimong gamiton ang laing blockchain. Sa 2FA demo app gigamit namo ang postgresql10 sa pagtipig sa impormasyon sa account.

Mga yugto sa koneksyon:

  1. Paghimo usa ka account sa blockchain diin ipadala nimo ang 2FA code. Makadawat ka usa ka passphrase, nga gigamit ingon usa ka pribado nga yawe sa pag-encrypt sa mga mensahe nga adunay mga code ug pagpirma sa mga transaksyon.
  2. Pagdugang og script sa imong server aron makamugna og 2FA codes. Kung naggamit ka na sa bisan unsang paagi sa 2FA nga adunay usa ka higayon nga paghatud sa password, nahuman na nimo kini nga lakang.
  3. Pagdugang og script sa imong server aron ipadala ang mga code sa user sa messenger nga blockchain.
  4. Paghimo ug user interface para sa pagpadala ug pagsulod sa 2FA code. Kung naggamit ka na sa bisan unsang paagi sa 2FA nga adunay usa ka higayon nga paghatud sa password, nahuman na nimo kini nga lakang.

1 Paghimo og account

Ang paghimo og account sa blockchain nagpasabot sa paghimo og private key, public key, ug derived account address.

Pagbalhin aron masiguro ang 2FA sa blockchain

Una, ang BIP39 passphrase gihimo, ug ang SHA-256 hash gikalkula gikan niini. Ang hash gigamit sa paghimo sa pribado nga yawe ks ug sa publiko nga yawe kp. Gikan sa yawe sa publiko, gamit ang parehas nga SHA-256 nga adunay inversion, makuha namon ang adres sa blockchain.

Kung gusto nimo magpadala mga 2FA code matag higayon gikan sa usa ka bag-ong account, ang code sa paghimo sa account kinahanglan nga idugang sa 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()
}

Sa demo nga aplikasyon, gipasimple namo kini - naghimo kami og usa ka account sa web application, ug nagpadala og mga code gikan niini. Sa kadaghanan nga mga kaso, kini usab labi ka kombenyente alang sa tiggamit: nahibal-an niya nga ang serbisyo nagpadala mga 2FA code gikan sa usa ka piho nga account ug mahimo kini nga ngalan.

Pagbalhin aron masiguro ang 2FA sa blockchain

2 Paghimo og 2FA code

Usa ka 2FA code kinahanglan nga mamugna alang sa matag user login. Gigamit namo ang librarya speakeasy, pero makapili ka ug lain.

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

Pagsusi sa kabalido sa 2FA code nga gisulod sa user:

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

3 Pagpadala sa 2FA code

Aron makasumite ug 2FA code, mahimo nimong gamiton ang blockchain node API, JS API library, o ang console. Sa kini nga pananglitan, gigamit namon ang console - kini ang Command Line Interface, usa ka utility nga nagpasimple sa interaksyon sa blockchain. Aron magpadala usa ka mensahe nga adunay 2FA code, kinahanglan nimo gamiton ang mando send message console.

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

Usa ka alternatibo nga paagi sa pagpadala sa mga mensahe mao ang paggamit sa pamaagi send sa JS API library.

4 User interface

Ang user kinahanglan nga hatagan og kapilian sa pagsulod sa usa ka 2FA code, kini mahimo sa lain-laing mga paagi depende sa imong aplikasyon plataporma. Sa among pananglitan kini mao ang Vue.

Pagbalhin aron masiguro ang 2FA sa blockchain

Ang source code alang sa blockchain two-factor authentication demo application mahimong tan-awon sa GitHub. Adunay usa ka link sa Readme sa usa ka Live demo aron sulayan kini.

Source: www.habr.com

Idugang sa usa ka comment