ブロックチェヌン䞊の安党な 2FA ぞの移行

SMS メッセヌゞは、2 芁玠認蚌 (XNUMXFA) の最も䞀般的な方法です。 銀行、電子りォレット、暗号通貚りォレット、メヌルボックス、あらゆる皮類のサヌビスで䜿甚されたす。 メ゜ッドのナヌザヌ数は 100% に近づいおいたす.

この方法は安党ではないため、私はこのシナリオに憀慚しおいたす。 ある SIM カヌドから別の SIM カヌドぞの番号の再割り圓おは、モバむル時代の初期に始たりたした。これは、SIM カヌドを玛倱したずきに番号を埩元する方法です。 「電子マネヌ盗難の専門家」は、「SIM カヌドの曞き換え」オプションが詐欺の手口に䜿甚される可胜性があるこずに気づきたした。 結局のずころ、SIM カヌドを制埡する人は、他人のオンラむン バンキング、電子りォレット、さらには暗号通貚さえも制埡できるのです。 たた、通信䌚瀟の埓業員に賄賂を枡したり、欺瞞や停造文曞を䜿甚したりするこずで、他人の番号を入手するこずもできたす。

ブロックチェヌン䞊の安党な 2FA ぞの移行

この詐欺スキヌムず呌ばれる SIM スワッピングの数千件の゚ピ゜ヌドが明らかになりたした。 灜害の芏暡は、䞖界がすぐに SMS による 2FA を攟棄するこずを瀺唆しおいたす。 しかし、これは起こりたせん - 調査 圌らは、2FA 方匏を遞択するのはナヌザヌではなく、サヌビス所有者であるず蚀いたす。

私たちは、ブロックチェヌン経由でワンタむムコヌドを配信する安党な 2FA 方匏の䜿甚を提案し、サヌビス所有者がそれを接続する方法を説明したす。

カりントは数癟䞇に達したす

ロンドン譊察によるず、2019幎にはSIM亀換詐欺が63増加し、攻撃者の「平均請求額」は4,000ポンドだったずいう。 ロシアの統蚈は芋぀けられたせんでしたが、おそらくもっずひどいず思いたす。

SIM スワッピングは、人気のある Twitter、Instagram、Facebook、VK アカりント、銀行口座、さらには最近では暗号通貚さえも盗むために䜿甚されおいたす。 タむムズ玙が報じた ビットコむン起業家のゞョビヌ・りィヌクス氏はこう語る。 2016 幎以来、SIM スワッピングを利甚した仮想通貚盗難の泚目を集める事件が報道されるようになりたした。 2019幎は本圓のピヌクを迎えたした。

XNUMX月、ミシガン州東郚地区連邊怜察局 起蚎された 19歳から26歳たでの若者2,4人。圌らは「コミュニティ」ず呌ばれるハッカヌ集団の䞀員であるず考えられおいる。 このギャングは 10 件のスワップ攻撃で起蚎されおおり、その結果、ハッカヌたちは 7.5 䞇ドル以䞊盞圓の仮想通貚を盗みたした。 そしおXNUMX月には、カリフォルニア州の孊生ゞョ゚ル・オルティスがSIM亀換の眪で懲圹XNUMX幎の実刑刀決を受けた。 圌の生産額は暗号通貚でXNUMX䞇ドルでした。

ブロックチェヌン䞊の安党な 2FA ぞの移行
倧孊の蚘者䌚芋でのゞョ゚ル・オルティスの写真。 XNUMX幎埌、圌はサむバヌ詐欺で拘留されるこずになる。

SIM亀換の仕組み

「スワッピング」ずは亀換ずいう意味です。 このような手口ではすべお、犯眪者が通垞 SIM カヌドの再発行を通じお被害者の電話番号を乗っ取り、それを䜿っおパスワヌドをリセットしたす。 理論䞊の䞀般的な SIM スワップは次のようになりたす。

  1. 諜報機関。 詐欺垫は被害者の名前や電話番号などの個人情報を聞き出したす。 これらはオヌプン゜ヌス (゜ヌシャルネットワヌク、友人) で芋぀かるこずもあれば、共犯者 (携垯電話䌚瀟の埓業員) から受け取るこずもありたす。
  2. ブロッキング。 被害者の SIM カヌドは無効化されおいたす。 これを行うには、プロバむダヌのテクニカル サポヌトに電話し、番号を䌝えお電話を玛倱した旚を䌝えるだけです。
  3. 番号をキャプチャし、SIM カヌドに転送したす。 通垞、これは通信䌚瀟の共犯者や文曞の停造によっお行われたす。

珟実の生掻では事態はさらに厳しいものになりたす。 攻撃者は被害者を遞択し、毎日電話の䜍眮を远跡したす。加入者がロヌミングに切り替えたずいう情報を受信するための 1 回のリク゚ストのコストは 2  50 セントです。 SIMカヌドの所有者が海倖に行くずすぐに、通信販売店の店長ず亀枉しお新しいSIMカヌドを発行しおもらいたす。 費甚は玄20ドル私が芋぀けた情報では、さたざたな囜でさたざたなオペレヌタヌが100ドルからXNUMXドルたで、最悪の堎合、マネヌゞャヌは解雇されたすが、これに察する責任はありたせん。

これで、すべおの SMS が攻撃者に受信され、携垯電話の所有者は海倖にいるため、䜕もするこずができなくなりたす。 そしお、悪圹は被害者のすべおのアカりントにアクセスし、必芁に応じおパスワヌドを倉曎したす。

盗たれた物が戻っおくる可胜性

銀行は被害者を途䞭で受け入れ、口座から送金を匕き出すこずもありたす。 そのため、犯人が芋぀からなくおも䞍換玙幣を返還するこずは可胜です。 しかし、暗号通貚りォレットではすべおがより耇雑になりたす。 技術的に、そしお立法的に。 これたでのずころ、スワッピングの被害者に補償を支払った取匕所やりォレットは䞀぀もありたせん。

被害者が法廷で自分のお金を匁護したい堎合、オペレヌタヌを非難したす。オペレヌタヌは、アカりントからお金が盗たれる状況を䜜り出したのです。 たさにそれが私がやったこずです マむケル・タヌピンスワッピングにより224億XNUMX䞇ドルの損倱を被った同氏は珟圚、通信䌚瀟AT&Tを蚎えおいる。

ブロックチェヌン䞊の安党な 2FA ぞの移行

これたでのずころ、仮想通貚所有者を法的に保護するための具䜓的な制床を導入しおいる囜はありたせん。 資本に保険をかけたり、損倱の補償を受けるこずは䞍可胜です。 したがっお、スワップ攻撃を防ぐこずは、その結果に察凊するよりも簡単です。 最も明癜な方法は、2FA に察しおより信頌性の高い「第 XNUMX 芁玠」を䜿甚するこずです。

SMS 経由の 2FA の問題は SIM スワップだけではありたせん

SMS の確認コヌドも、技術的な芳点から芋るず安党ではありたせん。 Signaling System 7 (SS7) にパッチが適甚されおいない脆匱性があるため、メッセヌゞが傍受される可胜性がありたす。 SMS を介した 2FA は安党ではないず公匏に認識されおいたす (米囜囜立暙準技術研究所は、このこずを報告曞で述べおいたす) デゞタル認蚌ガむド).

同時に、2FA の存圚によりナヌザヌに誀った安党感を䞎え、より単玔なパスワヌドを遞択しおしたうこずがよくありたす。 したがっお、このような認蚌は困難になるわけではありたせんが、攻撃者がアカりントにアクセスするのが容易になりたす。

たた、SMS が倧幅に遅れお届くか、たったく届かないこずもよくありたす。

その他の 2FA メ゜ッド

もちろん、スマヌトフォンやSMSには光は集䞭したせんでした。 2FA には他の方法もありたす。 たずえば、ワンタむム TAN コヌドは原始的な方法ですが、機胜し、䞀郚の銀行では今でも䜿甚されおいたす。 指王や網膜スキャンなどの生䜓認蚌デヌタを䜿甚するシステムがありたす。 利䟿性、信頌性、䟡栌の点で合理的な劥協点ず思われるもう 2 ぀のオプションは、XNUMXFA 甚の特別なアプリケヌションである RSA トヌクン、Google Authenticator です。 物理キヌなどの方法もありたす。

理論的には、すべおが論理的で信頌できるように芋えたす。 しかし実際には、最新の 2FA ゜リュヌションには問題があり、そのせいで珟実は期埅ずは異なりたす。

による 探査、2FA の䜿甚は原則ずしお䞍䟿であり、SMS 経由の 2FA の人気は「他の方法ず比べお䞍䟿が少ない」こずで説明されおおり、ワンタむム コヌドを受信するこずはナヌザヌにずっお理解できたす。

ナヌザヌは、倚くの 2FA メ゜ッドをアクセスが倱われるのではないかずいう恐怖ず結び぀けたす。 物理キヌたたは TAN パスワヌドのリストは、玛倱したり盗たれたりする可胜性がありたす。 私自身、Google Authenticator に関しお悪い経隓をしたこずがありたす。 このアプリケヌションを搭茉した最初のスマヌトフォンが故障したした。アカ​​りントぞのアクセスを埩元するための私の努力に感謝したす。 もう XNUMX ぀の問題は、新しいデバむスぞの切り替えです。 Google Authenticator にはセキュリティ䞊の理由から゚クスポヌト オプションがありたせん (キヌを゚クスポヌトできる堎合、どのようなセキュリティがありたすか?)。 か぀おは鍵を手動で持ち歩いおいたしたが、その埌、叀いスマヌトフォンを箱に入れお棚に眮いおおくほうが簡単だず刀断したした。

2FA メ゜ッドは次のようにする必芁がありたす。

  • 安党 - 攻撃者ではなくあなただけがあなたのアカりントにアクセスできるようにする必芁がありたす
  • 信頌性 - 必芁なずきにい぀でもアカりントにアクセスできたす
  • 䟿利でアクセスしやすい - 2FA の䜿甚は明確で、所芁時間は最小限です
  • 安い

私たちはブロックチェヌンが正しい゜リュヌションであるず信じおいたす。

ブロックチェヌンで 2FA を䜿甚する

ナヌザヌにずっお、ブロックチェヌン䞊の 2FA は、SMS 経由でワンタむム コヌドを受信するのず同じように芋えたす。 唯䞀の違いは配信チャネルです。 2FA コヌドを取埗する方法は、ブロックチェヌンが提䟛するものによっお異なりたす。 私たちのプロゞェクトでは (情報は私のプロフィヌルにありたす)、これは Web アプリケヌション、Tor、iOS、Android、Linux、Windows、MacOS です。

このサヌビスはワンタむム コヌドを生成し、ブロックチェヌン䞊のメッセンゞャヌに送信したす。 次に、叀兞的な手順に埓いたす。ナヌザヌは受信したコヌドをサヌビス むンタヌフェむスに入力しおログむンしたす。

ブロックチェヌン䞊の安党な 2FA ぞの移行

蚘事 分散型メッセンゞャヌはブロックチェヌン䞊でどのように機胜するのでしょうか? ブロックチェヌンはメッセヌゞ送信のセキュリティずプラむバシヌを確​​保するず曞きたした。 2FA コヌドの送信の問題に぀いおは、次の点を匷調したす。

  • ワンクリックでアカりントを䜜成できたす。電話やメヌルは必芁ありたせん。
  • 2FA コヌドを含むすべおのメッセヌゞは、゚ンドツヌ゚ンドのcurve25519xsalsa20poly1305で暗号化されたす。
  • MITM 攻撃は陀倖されたす。2FA コヌドを含むすべおのメッセヌゞはブロックチェヌン䞊のトランザクションであり、Ed25519 EdDSA によっお眲名されおいたす。
  • 2FA コヌドを含むメッセヌゞは、独自のブロックに収たりたす。 ブロックの順序ずタむムスタンプは修正できないため、メッセヌゞの順序も修正できたせん。
  • メッセヌゞの「信頌性」をチェックする䞭心的な構造はありたせん。 これは合意に基づいたノヌドの分散システムによっお行われ、ナヌザヌが所有したす。
  • 無効にするこずはできたせん - アカりントをブロックしたり、メッセヌゞを削陀したりするこずはできたせん。
  • い぀でもどのデバむスからでも 2FA コヌドにアクセスできたす。
  • 2FA コヌドによるメッセヌゞ配信の確認。 ワンタむム パスワヌドを送信するサヌビスは、ワンタむム パスワヌドが配信されたこずを確実に認識したす。 「再送信」ボタンはありたせん。

他の 2FA 手法ず比范するために、衚を䜜成したした。

ブロックチェヌン䞊の安党な 2FA ぞの移行

ナヌザヌはブロックチェヌン メッセンゞャヌでアカりントを取埗し、すぐにコヌドを受け取りたす。ログむンにはパスフレヌズのみが䜿甚されたす。 そのため、適甚方法が異なる堎合があり、XNUMX ぀のアカりントですべおのサヌビスのコヌドを受け取るこずも、サヌビスごずに個別のアカりントを䜜成するこずもできたす。

たた、アカりントには少なくずも XNUMX ぀のトランザクションが必芁であるずいう䞍䟿もありたす。 ナヌザヌがコヌド付きの暗号化メッセヌゞを受信するには、ナヌザヌの公開キヌを知る必芁がありたす。公開キヌは最初のトランザクションでのみブロックチェヌンに衚瀺されたす。 これが私たちがなんずかこの状況から抜け出した方法です。私たちは圌らにりォレットで無料のトヌクンを受け取る機䌚を䞎えたした。 ただし、より良い解決策は、アカりントに公開キヌずいう名前を付けるこずです。 (比范のために、口座番号がありたす) 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()
}

デモ アプリケヌションでは、それを簡玠化したした。Web アプリケヌションで 2 ぀のアカりントを䜜成し、そこからコヌドを送信したした。 ほずんどの堎合、これはナヌザヌにずっおも䟿利です。ナヌザヌは、サヌビスが特定のアカりントから XNUMXFA コヌドを送信し、それに名前を付けるこずができるこずを知っおいたす。

ブロックチェヌン䞊の安党な 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 ラむブラリ、たたはコン゜ヌルを䜿甚できたす。 この䟋では、コン゜ヌルを䜿甚したす。これはコマンド ラむン むンタヌフェむスであり、ブロックチェヌンずの察話を簡玠化するナヌティリティです。 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 ぞの移行

ブロックチェヌン XNUMX 芁玠認蚌デモ アプリケヌションの゜ヌス コヌドは、次の堎所で参照できたす。 GitHubの。 Readme には、詊しおみるラむブ デモぞのリンクがありたす。

出所 habr.com

コメントを远加したす