Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

SMS мессеж нь хоёр хүчин зүйлийн баталгаажуулалтын (2FA) хамгийн түгээмэл арга юм. Үүнийг банкууд, цахим болон крипто түрийвч, шуудангийн хайрцаг, бүх төрлийн үйлчилгээ ашигладаг; арга хэрэглэгчдийн тоо 100% дөхөж байна.

Энэ арга нь аюултай тул би энэ хувилбарт уурлаж байна. Нэг SIM картаас нөгөөд дугаар солих нь гар утасны эриний эхэн үеэс эхэлсэн бөгөөд SIM карт алдагдсан тохиолдолд дугаарыг сэргээдэг. "Дижитал мөнгөний хулгайн мэргэжилтнүүд" "SIM картыг дахин бичих" сонголтыг луйврын схемд ашиглаж болно гэдгийг ойлгосон. Эцсийн эцэст SIM картыг хянадаг хүн бусад хүмүүсийн онлайн банк, цахим түрийвч, тэр ч байтугай криптовалютыг хянах боломжтой. Мөн та харилцаа холбооны ажилтанд авлига өгөх, хууран мэхлэх, хуурамч бичиг баримт ашиглан өөр хүний ​​дугаарыг авч болно.

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

Энэхүү залилан мэхлэх схемийн нэрээр SIM солих олон мянган тохиолдлыг илрүүлсэн. Гамшгийн цар хүрээ нь дэлхий удахгүй SMS-ээр дамжуулан 2FA-аас татгалзах болно гэдгийг харуулж байна. Гэхдээ энэ нь тохиолддоггүй - онд Судалгаа 2FA аргыг хэрэглэгчид биш, харин үйлчилгээний эзэд сонгодог гэж тэд хэлж байна.

Бид блокчэйнээр дамжуулан нэг удаагийн кодыг хүргэх аюулгүй 2FA аргыг ашиглахыг санал болгож байгаа бөгөөд үйлчилгээний эзэн үүнийг хэрхэн холбохыг танд хэлэх болно.

Энэ тоо хэдэн саяар нэмэгддэг

Лондонгийн цагдаагийн газрын мэдээлснээр 2019 онд SIM солих луйвар 63%-иар өссөн бөгөөд халдагч этгээдийн "дундаж тооцоо" 4,000 фунт стерлинг байжээ. Би Орост ямар ч статистик мэдээ олсонгүй, гэхдээ үүнээс ч дор байна гэж би бодож байна.

SIM солих нь алдартай Twitter, Instagram, Facebook, VK данс, банкны данс, тэр байтугай сүүлийн үед криптовалютыг хулгайлахад ашиглагддаг. Энэ тухай Times сонин мэдээлэв Bitcoin бизнес эрхлэгч Жоби долоо хоногийн дагуу. SIM солих замаар криптовалют хулгайлсан хэргүүд 2016 оноос хойш хэвлэлээр гарч байна; 2019 он жинхэнэ оргил үе байлаа.

5-р сард АНУ-ын Мичиганы зүүн дүүргийн прокурорын газар төлбөр авчирсан 19-26 насны есөн залуу: Тэднийг “The Community” хэмээх хакерын бүлэглэлийн нэг хэсэг гэж үздэг. Тус бүлэглэлийг долоон своп халдлага үйлдсэн хэрэгт буруутгаж байгаа бөгөөд үүний үр дүнд хакерууд 2,4 сая гаруй долларын үнэ бүхий криптовалют хулгайлсан байна. Мөн 10-р сард Калифорнийн оюутан Жоэл Ортиз SIM сольсон хэргээр 7.5 жилийн хорих ял авсан; түүний үйлдвэрлэл $XNUMX сая криптовалют байсан.

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү
Жоэл Ортизын их сургуулийн хэвлэлийн бага хурал дээр авсан зураг. Хоёр жилийн дараа түүнийг кибер залилангийн хэргээр саатуулна.

SIM солих хэрхэн ажилладаг

"Swap" гэдэг нь солилцоо гэсэн үг. Ийм бүх схемд гэмт хэрэгтнүүд хохирогчийн утасны дугаарыг авч, ихэвчлэн SIM картыг дахин гаргаж, нууц үгээ сэргээхэд ашигладаг. Онолын хувьд ердийн SIM солих нь дараах байдалтай байна.

  1. Тагнуулын алба. Луйварчид хохирогчийн хувийн мэдээллийг олж авдаг: нэр, утасны дугаар. Тэдгээрийг нээлттэй эх сурвалжаас (нийгмийн сүлжээ, найз нөхөд) олж авах эсвэл хамтрагч - үүрэн холбооны операторын ажилтанаас авах боломжтой.
  2. Блоклох. Хохирогчийн SIM карт идэвхгүй болсон; Үүнийг хийхийн тулд үйлчилгээ үзүүлэгчийн техникийн дэмжлэг рүү залгаж, дугаараа өгөөд утас алдагдсан гэж хэлээрэй.
  3. Зураг аваад дугаараа SIM карт руугаа шилжүүлээрэй. Ихэнхдээ энэ нь харилцаа холбооны компани дахь хамтрагчаар эсвэл бичиг баримтыг хуурамчаар үйлдэх замаар хийгддэг.

Бодит амьдрал дээр бүх зүйл илүү хэцүү байдаг. Халдагчид хохирогчийг сонгож, дараа нь утасны байршлыг өдөр бүр хянадаг - захиалагч роуминг руу шилжсэн тухай мэдээллийг хүлээн авах нэг хүсэлт нь 1-2 центийн үнэтэй байдаг. Сим картын эзэн гадаадад гарсан даруйд харилцаа холбооны дэлгүүрийн менежертэй тохиролцож шинэ сим карт гаргаж өгдөг. Энэ нь ойролцоогоор 50 долларын үнэтэй (би мэдээлэл олж авсан - өөр өөр улс орнуудад, өөр өөр операторуудтай 20-100 доллар хүртэл), хамгийн муу тохиолдолд менежерийг халах болно - үүнд ямар ч хариуцлага хүлээхгүй.

Одоо бүх мессежийг халдагчид хүлээж авах бөгөөд утасны эзэн энэ талаар юу ч хийх боломжгүй - тэр гадаадад байна. Дараа нь хорон санаатнууд хохирогчийн бүх данс руу нэвтэрч, хүсвэл нууц үгээ өөрчилдөг.

Хулгайлагдсан эд хөрөнгийг буцааж өгөх боломж

Банкууд заримдаа хохирогчийг тал талаас нь байрлуулж, данснаас нь шилжүүлэг авдаг. Тиймээс гэмт хэрэгтэн олдохгүй байсан ч нэрийн өмнөөс мөнгө буцааж өгөх боломжтой. Харин cryptocurrency түрийвч нь бүх зүйл илүү төвөгтэй байдаг - мөн техникийн хувьд, хууль тогтоомжийн хувьд. Одоогоор нэг ч бирж/түрийвч свопын хохирогчдод нөхөн олговор өгөөгүй байна.

Хохирогчид мөнгөө шүүхэд өгөхийг хүсч байгаа бол операторыг буруутгадаг: тэр данснаас мөнгө хулгайлах нөхцлийг бүрдүүлсэн. Би яг ийм зүйл хийсэн Майкл Турпин, солилцооны улмаас 224 сая доллар алдсан.Тэрээр одоо харилцаа холбооны AT&T компанийг шүүхэд өгч байна.

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

Одоогоор ямар ч муж улсад криптовалют эзэмшигчдийг хууль ёсны дагуу хамгаалах ажлын схем байхгүй байна. Өөрийн хөрөнгөө даатгуулах, хохирлын нөхөн төлбөр авах боломжгүй. Тиймээс своп халдлагаас урьдчилан сэргийлэх нь түүний үр дагаврыг арилгахаас илүү хялбар байдаг. Хамгийн ойлгомжтой арга бол 2FA-д илүү найдвартай "хоёр дахь хүчин зүйл"-ийг ашиглах явдал юм.

SIM солих нь SMS-ээр дамжуулан 2FA-ийн цорын ганц асуудал биш юм

SMS дахь баталгаажуулах код нь техникийн үүднээс бас аюултай. Дохионы систем 7 (SS7)-ийн засварлагдаагүй сул талуудын улмаас мессежийг таслан зогсоох боломжтой. SMS-ээр дамжуулан 2FA нь аюулгүй гэж албан ёсоор хүлээн зөвшөөрөгдсөн (АНУ-ын Үндэсний стандарт, технологийн хүрээлэн үүнийг өөрийн Дижитал баталгаажуулалтын гарын авлага).

Үүний зэрэгцээ, 2FA байгаа нь хэрэглэгчдэд хуурамч аюулгүй байдлын мэдрэмжийг өгдөг бөгөөд тэр илүү энгийн нууц үгийг сонгодог. Тиймээс ийм баталгаажуулалт нь үүнийг хүндрүүлдэггүй, харин халдагчид данс руу нэвтрэхэд хялбар болгодог.

Мөн ихэвчлэн SMS удаан саатсан эсвэл огт ирдэггүй.

Бусад 2FA аргууд

Мэдээжийн хэрэг, гэрэл ухаалаг утас, SMS дээр нэгдээгүй. 2FA-ийн өөр аргууд байдаг. Жишээлбэл, нэг удаагийн TAN кодууд: энгийн арга, гэхдээ энэ нь ажилладаг - энэ нь зарим банкуудад ашиглагддаг хэвээр байна. Биометрийн өгөгдлийг ашигладаг системүүд байдаг: хурууны хээ, торлог бүрхэвчийн сканнер. Тохиромжтой байдал, найдвартай байдал, үнийн хувьд боломжийн буулт мэт санагдаж буй өөр нэг сонголт бол 2FA-д зориулсан тусгай програмууд юм: RSA Token, Google Authenticator. Мөн физик түлхүүрүүд болон бусад аргууд байдаг.

Онолын хувьд бүх зүйл логик, найдвартай харагдаж байна. Гэвч практик дээр орчин үеийн 2FA шийдлүүд асуудалтай тулгардаг бөгөөд тэдгээрээс болж бодит байдал нь хүлээлтээс ялгаатай байдаг.

Дагуу судалгаа, 2FA ашиглах нь зарчмын хувьд таагүй зүйл бөгөөд SMS-ээр дамжуулан 2FA-ийн түгээмэл байдал нь "бусад аргуудтай харьцуулахад бага төвөг учруулдаг" - нэг удаагийн код хүлээн авах нь хэрэглэгчдэд ойлгомжтой байдаг.

Хэрэглэгчид 2FA-ийн олон аргыг хандалт алдагдах вий гэсэн айдастай холбодог. Биет түлхүүр эсвэл TAN нууц үгийн жагсаалтыг алдах эсвэл хулгайд алдах боломжтой. Би хувьдаа Google Authenticator-тэй холбоотой муу туршлагатай байсан. Энэ програмтай миний анхны ухаалаг утас эвдэрсэн - миний данс руу нэвтрэх эрхийг сэргээхэд миний хүчин чармайлтыг үнэлнэ үү. Өөр нэг асуудал бол шинэ төхөөрөмж рүү шилжих явдал юм. Google Authenticator нь аюулгүй байдлын шалтгааны улмаас экспортын сонголтгүй (хэрэв түлхүүрүүдийг экспортлох боломжтой бол ямар хамгаалалт байдаг вэ?). Нэг удаа би түлхүүрүүдийг гараар авч явсан бөгөөд дараа нь хуучин ухаалаг гар утсаа тавиур дээр хайрцагт үлдээх нь илүү хялбар гэж шийдсэн.

2FA арга нь дараахь байх ёстой.

  • Аюулгүй - халдагчид биш зөвхөн та таны бүртгэлд нэвтрэх эрхтэй
  • Найдвартай - шаардлагатай үед та өөрийн бүртгэлд хандах боломжтой
  • Тохиромжтой, хүртээмжтэй - 2FA ашиглах нь ойлгомжтой бөгөөд хамгийн бага хугацаа шаарддаг
  • Хямд

Блокчэйн бол зөв шийдэл гэдэгт бид итгэдэг.

Блокчейн дээр 2FA ашигла

Хэрэглэгчийн хувьд блокчэйн дээрх 2FA нь SMS-ээр нэг удаагийн код хүлээн авахтай адил харагдаж байна. Ганц ялгаа нь хүргэх суваг юм. 2FA код авах арга нь блокчейн санал болгож буй зүйлээс хамаарна. Манай төсөлд (мэдээлэл миний профайл дээр байгаа) энэ бол Tor, iOS, Android, Linux, Windows, MacOS зэрэг вэб програм юм.

Энэ үйлчилгээ нь нэг удаагийн код үүсгэж, блокчэйн дээрх мессенжер рүү илгээдэг. Дараа нь сонгодог зүйлийг дагана уу: хэрэглэгч хүлээн авсан кодыг үйлчилгээний интерфейс рүү оруулаад нэвтэрнэ.

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

Нийтлэл Төвлөрсөн бус мессенжер блокчэйн дээр хэрхэн ажилладаг вэ? Блокчэйн нь мессеж дамжуулах аюулгүй байдал, нууцлалыг хангадаг гэж би бичсэн. 2FA кодыг илгээх асуудлаар би дараахь зүйлийг онцлон тэмдэглэх болно.

  • Данс үүсгэхийн тулд нэг товшилтоор утас, имэйл байхгүй.
  • 2FA код бүхий бүх мессежүүд нь End-to-End curve25519xsalsa20poly1305 шифрлэгдсэн байна.
  • MITM халдлагыг оруулаагүй болно - 2FA код бүхий мессеж бүр блокчейн дээрх гүйлгээ бөгөөд Ed25519 EdDSA гарын үсэг зурсан байна.
  • 2FA код бүхий мессеж нь өөрийн блок дээр дуусдаг. Блокуудын дараалал, цагийн тэмдгийг засах боломжгүй тул мессежийн дарааллыг засах боломжгүй.
  • Мессежийн “жинхэнэ” эсэхийг шалгадаг төв бүтэц байдаггүй. Энэ нь зөвшилцөлд тулгуурласан зангилааны тархсан системээр хийгддэг бөгөөд энэ нь хэрэглэгчдийн эзэмшилд байдаг.
  • Идэвхгүй болгох боломжгүй - бүртгэлийг хаах, мессежийг устгах боломжгүй.
  • 2FA кодыг хүссэн үедээ ямар ч төхөөрөмжөөс авах боломжтой.
  • 2FA кодоор мессежийн хүргэлтийг баталгаажуулна. Нэг удаагийн нууц үгийг илгээдэг үйлчилгээ нь түүнийг хүргэсэн гэдгийг баттай мэддэг. "Дахин илгээх" товчлуур байхгүй.

Бусад 2FA аргуудтай харьцуулахын тулд би хүснэгт хийсэн:

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

Хэрэглэгч секундын дотор код хүлээн авахын тулд блокчэйн мессенжерт данс хүлээн авдаг - нэвтрэхийн тулд зөвхөн нэвтрэх үг ашигладаг. Тиймээс хэрэглэх аргууд нь өөр байж болно: та бүх үйлчилгээний кодыг авахын тулд нэг данс ашиглаж болно, эсвэл үйлчилгээ тус бүрт тусдаа данс үүсгэж болно.

Мөн нэг таагүй зүйл байдаг - дансанд дор хаяж нэг гүйлгээ байх ёстой. Хэрэглэгч код бүхий шифрлэгдсэн мессежийг хүлээн авахын тулд та түүний нийтийн түлхүүрийг мэдэх хэрэгтэй бөгөөд энэ нь зөвхөн эхний гүйлгээгээр блокчэйнд гарч ирдэг. Ингэж бид үүнээс гарч чадсан: бид тэдэнд хэтэвчиндээ үнэгүй жетон авах боломжийг олгосон. Гэсэн хэдий ч илүү сайн шийдэл бол дансыг нийтийн түлхүүрээр нэрлэх явдал юм. (Харьцуулахын тулд бидэнд дансны дугаар байна U1467838112172792705 нь нийтийн түлхүүрийн дериватив юм cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. Мессенжерийн хувьд энэ нь илүү тохиромжтой бөгөөд уншихад хялбар боловч 2FA код илгээх системийн хувьд энэ нь хязгаарлалт юм). Цаашид хэн нэгэн ийм шийдвэр гаргаж, “Тохиромжтой байдал, хүртээмж”-ийг ногоон бүс рүү шилжүүлэх байх гэж бодож байна.

2FA код илгээх үнэ үнэхээр бага - 0.001 ADM, одоо 0.00001 USD байна. Дахин хэлэхэд, та блокчэйноо өсгөж, үнийг тэг болгож чадна.

Блокчейн дээрх 2FA-г өөрийн үйлчилгээнд хэрхэн холбох вэ

Би цөөн хэдэн уншигчдын сонирхлыг татаж, үйлчилгээндээ блокчейн зөвшөөрлийг нэмж өгсөн гэж найдаж байна.

Үүнийг жишээ болгон манай мессенжерээр хэрхэн хийхийг би танд хэлэх болно, мөн адил та өөр блокчэйн ашиглаж болно. 2FA демо програм дээр бид дансны мэдээллийг хадгалахын тулд postgresql10 ашигладаг.

Холболтын үе шатууд:

  1. Блокчейн дээр данс үүсгэснээр та 2FA код илгээх болно. Та нууц үг хүлээн авах бөгөөд энэ нь мессежийг кодоор шифрлэх, гүйлгээнд гарын үсэг зурах хувийн түлхүүр болгон ашигладаг.
  2. 2FA код үүсгэхийн тулд сервертээ скрипт нэмнэ үү. Хэрэв та нэг удаагийн нууц үг хүргэх өөр 2FA аргыг аль хэдийн ашиглаж байгаа бол энэ алхамыг аль хэдийн дуусгасан байна.
  3. Блокчэйн мессенжер дэх хэрэглэгч рүү код илгээхийн тулд сервертээ скрипт нэмнэ үү.
  4. 2FA кодыг илгээх, оруулах хэрэглэгчийн интерфэйсийг үүсгэ. Хэрэв та нэг удаагийн нууц үг хүргэх өөр 2FA аргыг аль хэдийн ашиглаж байгаа бол энэ алхамыг аль хэдийн дуусгасан байна.

1 Бүртгэл үүсгэх

Блокчэйнд данс үүсгэнэ гэдэг нь хувийн түлхүүр, нийтийн түлхүүр, дансны хаяг үүсгэнэ гэсэн үг.

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

Нэгдүгээрт, BIP39 нэвтрэх хэллэгийг үүсгэсэн бөгөөд үүнээс SHA-256 хэшийг тооцоолно. Хэш нь хувийн түлхүүр ks болон нийтийн түлхүүр kp үүсгэхэд ашиглагддаг. Нийтийн түлхүүрээс ижил SHA-256-г урвуу байдлаар ашигласнаар бид блокчейн дэх хаягийг олж авдаг.

Хэрэв та шинэ данснаас 2FA код илгээхийг хүсвэл серверт данс үүсгэх кодыг нэмэх шаардлагатай.

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

Демо програм дээр бид үүнийг хялбаршуулсан - бид вэб програм дээр нэг бүртгэл үүсгэж, түүнээс код илгээсэн. Ихэнх тохиолдолд энэ нь хэрэглэгчдэд илүү тохиромжтой байдаг: тэр үйлчилгээ нь тодорхой данснаас 2FA код илгээдэг гэдгийг мэддэг бөгөөд үүнийг нэрлэж чаддаг.

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

2 2FA код үүсгэж байна

Хэрэглэгч нэвтрэх бүрт 2FA кодыг үүсгэх ёстой. Бид номын сан ашигладаг эрхэм ээ, гэхдээ та өөр аль нэгийг нь сонгож болно.

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

Хэрэглэгчийн оруулсан 2FA кодын хүчинтэй эсэхийг шалгах:

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

3 2FA код илгээж байна

2FA код оруулахын тулд та блокчейн зангилааны API, JS API номын сан эсвэл консол ашиглаж болно. Энэ жишээнд бид консолыг ашигладаг - энэ бол блокчейнтэй харилцах харилцааг хялбаршуулдаг Command Line Interface хэрэгсэл юм. 2FA код бүхий мессеж илгээхийн тулд та тушаалыг ашиглах хэрэгтэй send message консолууд.

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

Мессеж илгээх өөр арга бол энэ аргыг ашиглах явдал юм send JS API номын санд.

4 Хэрэглэгчийн интерфейс

Хэрэглэгчид 2FA код оруулах сонголтыг өгөх шаардлагатай бөгөөд үүнийг таны хэрэглээний платформоос хамааран өөр өөр аргаар хийж болно. Бидний жишээнд энэ бол Vue юм.

Блокчейн дээр 2FA-г хамгаалахын тулд шилжинэ үү

Блокчейн хоёр хүчин зүйлийн баталгаажуулалтын демо програмын эх кодыг эндээс үзэх боломжтой GitHub. Readme-д үүнийг туршиж үзэхийн тулд Live demo-н холбоос байдаг.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх