Mugitu 2FA ziurtatzeko blockchain-en

SMS mezuak bi faktoreko autentifikazio-metodorik ezagunena dira (2FA). Bankuek, zorro elektroniko eta kriptografikoek, postontziek eta mota guztietako zerbitzuek erabiltzen dute; metodoaren erabiltzaile kopurua %100era hurbiltzen ari da.

Eszenatoki honekin haserre nago, metodo hau segurua ez delako. Zenbaki bat SIM txartel batetik bestera esleitzen mugikorren aroaren hasieran hasi zen; horrela berreskuratzen da zenbakia SIM txartela galtzen denean. "Diru digitalaren lapurreta espezialistak" konturatu ziren "idatzi SIM txartela" aukera iruzurrezko eskemetan erabil daitekeela. Azken finean, SIM txartela kontrolatzen duenak besteen lineako bankua, zorro elektronikoak eta baita kriptografia-moneta ere kontrola ditzake. Eta beste pertsona baten zenbakiaz jabe zaitezke telekomunikazioetako langile bati eroskeria eginez, iruzurra edo dokumentu faltsuak erabiliz.

Mugitu 2FA ziurtatzeko blockchain-en

SIM trukearen milaka pasarte deskubritu dira, iruzur eskema honi deitzen zaion bezala. Hondamendiaren tamainak iradokitzen du munduak laster abandonatuko duela 2FA SMS bidez. Baina hau ez da gertatzen - in azterketa esaten dute ez direla erabiltzaileak 2FA metodoa aukeratzen dutenak, zerbitzuen jabeak baizik.

2FA metodo segurua erabiltzea proposatzen dugu bloke-katearen bidez behin-behineko kodeak bidaltzeko, eta zerbitzuaren jabeak nola konekta dezakeen esango dizugu.

Zenbaketa milioietan doa

2019an, SIM trukearen iruzurra % 63 handitu zen Londresko poliziaren arabera, eta erasotzaile baten "batez besteko faktura" 4,000 GBP izan zen. Errusian ez dut estatistikarik aurkitu, baina are okerragoak direla suposatzen dut.

SIM trukea Twitter, Instagram, Facebook, VK kontuak, banku-kontuak eta berriki kripto-monetak lapurtzeko erabiltzen da. The Times egunkariak berri ematen du Joby Weeks Bitcoin enpresariaren arabera. SIM trukea erabiliz kriptografia-moneta lapurretaren ospe handiko kasuak prentsan agertu dira 2016az geroztik; 2019an benetako gailurra izan zen.

Maiatzean, Michigango Ekialdeko Barrutiko AEBetako Fiskalaren Bulegoa salaketak jarri zituen 19 eta 26 urte bitarteko bederatzi gazte: “The Community” izeneko hacker talde baten parte direla uste da. Koadrilaren zazpi truke-eraso leporatzen zaizkio, eta, ondorioz, hackerrek 2,4 milioi dolar baino gehiago balio duten kriptografia-moneta lapurtu zuten. Eta apirilean, Joel Ortiz Kaliforniako ikasleak 10 urteko kartzela zigorra jaso zuen SIM trukeagatik; bere ekoizpena 7.5 milioi dolar izan zen kriptomonetan.

Mugitu 2FA ziurtatzeko blockchain-en
Joel Ortizen argazkia unibertsitateko prentsaurreko batean. Bi urte geroago, ziber iruzurra leporatuta atxilotuko dute.

SIM trukeak nola funtzionatzen duen

"Trukatzeko" trukea esan nahi du. Horrelako eskem guztietan, gaizkileek biktimaren telefono-zenbakia hartzen dute, normalean SIM txartela berriro jaulkiz, eta pasahitza berrezartzeko erabiltzen dute. Teorian SIM truke tipiko batek itxura hau du:

  1. Inteligentzia zerbitzua. Iruzurgileek biktimaren informazio pertsonala aurkitzen dute: izena eta telefono zenbakia. Iturburu irekietan aurki daitezke (sare sozialak, lagunak) edo konplize batengandik jaso daitezke - mugikor-operadore baten langile batengandik.
  2. Blokeatzea. Biktimaren SIM txartela desaktibatuta dago; Horretarako, deitu hornitzailearen laguntza teknikora, eman zenbakia eta esan telefonoa galdu dela.
  3. Harrapatu, transferitu zenbakia zure SIM txartelera. Normalean hori ere telekomunikazio-enpresako konplize baten bidez edo dokumentuak faltsutzearen bidez egiten da.

Bizitza errealean gauzak are larriagoak dira. Erasotzaileek biktima bat aukeratzen dute eta gero telefonoaren kokapena egunero jarraipena egiten dute - harpidedunak ibiltaritzara aldatu duen informazioa jasotzeko eskaera batek 1-2 zentimo balio du. SIM txartelaren jabea atzerrira joan bezain laster, komunikazio dendako kudeatzailearekin negoziatzen dute SIM txartel berri bat emateko. 50 dolar inguru balio du (informazioa aurkitu dut -herrialde ezberdinetan eta 20 dolar eta 100 dolar arteko operadore ezberdinekin), eta kasurik txarrenean kudeatzailea kaleratuko dute - ez dago horren ardurarik.

Orain SMS guztiak erasotzaileek jasoko dituzte, eta telefonoaren jabeak ezin izango du horri buruz ezer egin - atzerrian dago. Eta gero gaiztoek biktimaren kontu guztietarako sarbidea dute eta nahi izanez gero pasahitzak aldatzen dituzte.

Lapurtutako ondasunak itzultzeko aukerak

Bankuek batzuetan biktimei bide erdia hartzen diete eta haien kontuetatik transferentziak kentzen dituzte. Hori dela eta, posible da fiat dirua itzultzea gaizkilea aurkitu ez bada ere. Baina kriptografia moneta zorroekin dena konplikatuagoa da - eta teknikoki, eta legegintzaldian. Orain arte, truke/zorro bakar batek ere ez die kalte-ordainik ordaindu trukearen biktimei.

Biktimek euren dirua epaitegietan defendatu nahi badute, operadoreari egozten diote errua: berak sortu zituen kontuko dirua lapurtzeko baldintzak. Horixe egin nuen hain zuzen Michael Turpin, 224 milioi dolar galdu zituen trukeagatik.Orain AT&T telekomunikazio konpainia salatzen ari da.

Mugitu 2FA ziurtatzeko blockchain-en

Orain arte, estatu batek ez du lan-eskemarik kriptografia-moneta jabeak legez babesteko. Ezinezkoa da zure kapitala aseguratzea edo galeragatiko kalte-ordaina jasotzea. Beraz, truke-eraso bat saihestea errazagoa da haren ondorioei aurre egitea baino. Modurik nabarmenena 2FArako "bigarren faktore" fidagarriagoa erabiltzea da.

SIM trukatzea ez da SMS bidez 2FAren arazo bakarra

SMSen baieztapen kodeak ere ez dira seguruak ikuspuntu teknikotik. Mezuak atzeman daitezke Signaling System 7 (SS7) adabakirik gabeko ahultasunengatik. SMS bidezko 2FA segurua ez dela aitortzen da ofizialki (AEBetako Estandar eta Teknologia Institutu Nazionalak hau dio bere Autentifikazio Digitalaren Gida).

При этом наличие 2FA часто внушает пользователю чувство ложной безопасности, и он выбирает более простой пароль. Поэтому такая аутентификация не затрудняет, а облегчает доступ злоумышленника к аккаунту.

Eta askotan SMSak atzerapen luzearekin iristen dira edo ez dira iristen.

2FA beste metodo batzuk

Noski, argia ez zen bat egin telefono mugikorretan eta SMSetan. 2FAren beste metodo batzuk daude. Adibidez, garai bateko TAN kodeak: metodo primitiboa, baina funtzionatzen du - oraindik ere erabiltzen da banku batzuetan. Datu biometrikoak erabiltzen dituzten sistemak daude: hatz-markak, erretinako miaketa. Erosotasunari, fidagarritasunari eta prezioari dagokionez arrazoizko konpromisoa dirudien beste aukera bat 2FArako aplikazio bereziak dira: RSA Token, Google Authenticator. Gako fisikoak eta beste metodo batzuk ere badaude.

Teorian, dena logikoa eta fidagarria dirudi. Baina praktikan, 2FA irtenbide modernoek arazoak dituzte, eta hori dela eta, errealitatea itxaropenetatik desberdina da.

Arabera Esplorazioa, 2FA erabiltzea eragozpen bat da printzipioz, eta SMS bidez 2FAren ospea "beste metodoekin alderatuta eragozpen gutxiagorekin" azaltzen da - aldi baterako kodeak jasotzea ulergarria da erabiltzailearentzat.

Erabiltzaileek 2FA metodo asko lotzen dituzte sarbidea galduko den beldurrarekin. Gako fisikoa edo TAN pasahitzen zerrenda galdu edo lapurtu daiteke. Pertsonalki esperientzia txarrak izan ditut Google Authenticator-ekin. Aplikazio honekin nire lehen telefonoa matxuratu zen - eskertu nire kontuetarako sarbidea leheneratzeko egin dudan ahalegina. Beste arazo bat gailu berri batera aldatzea da. Google Authenticator-ek ez du esportatzeko aukerarik segurtasun arrazoiengatik (gakoak esportatu badaitezke, zer segurtasun dago?). Behin giltzak eskuz eraman nituen, eta orduan erabaki nuen errazagoa zela smartphone zaharra apal bateko kutxa batean uztea.

2FA metodoa hau izan behar da:

  • Segurua - zuk bakarrik lortu beharko zenuke zure konturako sarbidea eta ez erasotzaileek
  • Надежным — вы получаете доступ к аккаунту всегда, когда это нужно
  • Erosoa eta eskuragarria - 2FA erabiltzea argia da eta denbora gutxi behar du
  • Merkea

Blockchain irtenbide egokia dela uste dugu.

Erabili 2FA bloke-katean

Erabiltzailearentzat, 2FA bloke-katean SMS bidez behin-behineko kodeak jasotzearen itxura bera du. Desberdintasun bakarra bidalketa kanala da. 2FA kodea lortzeko metodoa blockchain-ak eskaintzen duenaren araberakoa da. Gure proiektuan (informazioa nire profilean dago) hau Web aplikazio bat da, Tor, iOS, Android, Linux, Windows, MacOS.

Zerbitzuak behin-behineko kode bat sortzen du eta blockchain-eko mezulariari bidaltzen dio. Ondoren, jarraitu klasikoei: erabiltzaileak jasotako kodea sartuko du zerbitzu-interfazean eta saioa hasten da.

Mugitu 2FA ziurtatzeko blockchain-en

Artikulua Nola funtzionatzen du mezulari deszentralizatuak bloke-katean? Blockchain-ak mezuen transmisioaren segurtasuna eta pribatutasuna bermatzen duela idatzi nuen. 2FA kodeak bidaltzeari dagokionez, nabarmenduko dut:

  • Klik bat kontu bat sortzeko - telefonorik edo posta elektronikorik gabe.
  • Все сообщения с кодами 2FA шифруются End-to-End curve25519xsalsa20poly1305.
  • MITM erasoa kanpoan geratzen da - 2FA kodea duten mezu bakoitza blockchain-eko transakzio bat da eta Ed25519 EdDSAk sinatzen du.
  • 2FA kodea duen mezua bere blokean amaitzen da. Blokeen sekuentzia eta denbora-zigilua ezin dira zuzendu, eta, beraz, mezuen ordena.
  • Ez dago mezu baten "benetakotasuna" egiaztatzen duen egitura zentralik. Hori adostasunean oinarritutako nodoen sistema banatu batek egiten du, eta erabiltzaileen jabetzakoa da.
  • Ezin da desgaitu - kontuak ezin dira blokeatu eta mezuak ezin dira ezabatu.
  • Atzitu 2FA kodeak edozein gailutatik edonoiz.
  • Подтверждение доставки сообщения с кодом 2FA. Сервис, отправляющий одноразовый пароль, точно знает, что он доставлен. Никаких кнопок “Отправить еще раз”.

Beste 2FA metodo batzuekin alderatzeko, taula bat egin nuen:

Mugitu 2FA ziurtatzeko blockchain-en

Erabiltzaileak kontu bat jasotzen du blockchain messenger-en kodeak segundo batean jasotzeko - pasaesaldi bat bakarrik erabiltzen da saioa hasteko. Hori dela eta, aplikazio-metodoak desberdinak izan daitezke: kontu bat erabil dezakezu zerbitzu guztien kodeak jasotzeko, edo zerbitzu bakoitzerako aparteko kontu bat sor dezakezu.

Есть и неудобство — аккаунт должен иметь хотя бы одну транзакцию. Для того, чтобы пользователь получил шифрованное сообщение с кодом, нужно знать его публичный ключ, а он появляется в блокчейне только с первой транзакцией. Мы выкрутились так: дали возможность получить в кошельке бесплатные токены. Однако более правильное решение — именовать аккаунт публичным ключом. (Для сравнения у нас номер аккаунта U1467838112172792705 gako publikoaren eratorria da cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. Mezulariarentzat hau erosoagoa eta irakurgarriagoa da, baina 2FA kodeak bidaltzeko sistemarentzat muga bat da). Uste dut etorkizunean norbaitek halako erabaki bat hartuko duela eta “Erosotasuna eta Irisgarritasuna” berdegunera eramango duela.

2FA kodea bidaltzeko prezioa oso baxua da - 0.001 ADM, orain 0.00001 USD da. Berriz ere, zure blockchain igo dezakezu eta prezioa zero egin dezakezu.

Nola konektatu 2FA bloke-katean zure zerbitzura

Espero dut irakurle batzuk interesatzea euren zerbitzuei blockchain baimena gehitzeko.

Hau nola egin esango dizut gure mezularia adibide gisa erabiliz, eta analogiaz beste bloke-kate bat erabil dezakezu. 2FA demo aplikazioan postgresql10 erabiltzen dugu kontuaren informazioa gordetzeko.

Konexio faseak:

  1. Sortu kontu bat blokeo-katean eta bertatik 2FA kodeak bidaliko dituzu. Pasaesaldi bat jasoko duzu, gako pribatu gisa erabiltzen dena kodeekin mezuak enkriptatzeko eta transakzioak sinatzeko.
  2. Gehitu script bat zure zerbitzariari 2FA kodeak sortzeko. Dagoeneko beste 2FA metodoren bat erabiltzen ari bazara pasahitz bakarreko entregarekin, dagoeneko urrats hau osatu duzu.
  3. Gehitu script bat zure zerbitzariari erabiltzaileari kodeak bidaltzeko blockchain messenger-en.
  4. Создать пользовательский интерфейс для отправки и ввода кода 2FA. Если вы уже используйте какой-либо другой метод 2FA с доставкой одноразовых паролей, этот этап у вас уже выполнен.

1 Sortu kontu bat

Создание аккаунта в блокчейне — это генерация приватного ключа, публичного ключа, и производного от него адреса аккаунта.

Mugitu 2FA ziurtatzeko blockchain-en

Lehenik eta behin, BIP39 pasaesaldia sortzen da, eta SHA-256 hash-a kalkulatzen da. Hash-a ks gako pribatua eta kp gako publikoa sortzeko erabiltzen da. Gako publikotik, SHA-256 bera inbertsioarekin erabiliz, helbidea blockchain-en lortzen dugu.

Kontu berri batetik 2FA kodeak bidali nahi badituzu bakoitzean, kontua sortzeko kodea zerbitzarian gehitu beharko da:

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

Demo aplikazioan, sinplifikatu egin dugu: kontu bat sortu dugu web aplikazioan, eta bertatik kodeak bidali. Kasu gehienetan, hau ere erosoagoa da erabiltzailearentzat: badaki zerbitzuak kontu zehatz batetik 2FA kodeak bidaltzen dituela eta izena eman diezaiokeela.

Mugitu 2FA ziurtatzeko blockchain-en

2 2FA kodeak sortzea

Erabiltzaileen saioa hasteko 2FA kodea sortu behar da. Liburutegia erabiltzen dugu speakeasy, baina beste edozein aukera dezakezu.

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

Erabiltzaileak sartutako 2FA kodearen baliozkotasuna egiaztatzea:

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

3 2FA kodea bidaltzea

2FA kodea bidaltzeko, blockchain nodoaren APIa, JS API liburutegia edo kontsola erabil ditzakezu. Adibide honetan, kontsola erabiltzen dugu - hau Komando Linearen Interfazea da, bloke-katearekin interakzioa errazten duen erabilgarritasuna. 2FA kode batekin mezu bat bidaltzeko, komandoa erabili behar duzu send message kontsola.

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

Mezuak bidaltzeko beste modu bat metodoa erabiltzea da send JS API liburutegian.

4 Интерфейс пользователя

Erabiltzaileari 2FA kodea sartzeko aukera eman behar zaio, hau modu ezberdinetan egin daiteke zure aplikazio plataformaren arabera. Gure adibidean hau Vue da.

Mugitu 2FA ziurtatzeko blockchain-en

Blockchain bi faktoreko autentifikazio demo aplikazioaren iturburu kodea hemen ikus daiteke GitHub. Readme to a Live demo-n esteka bat dago probatzeko.

Iturria: www.habr.com

Gehitu iruzkin berria