تحرك لتأمين 2FA على blockchain

رسائل SMS هي أكثر طرق المصادقة الثنائية (2FA) شيوعًا. يتم استخدامه من قبل البنوك والمحافظ الإلكترونية والتشفيرية وصناديق البريد وجميع أنواع الخدمات ؛ عدد مستخدمي الطريقة يقترب من 100٪.

هذه المواءمة للأحداث تسبب لي السخط ، لأن هذه الطريقة غير آمنة. بدأت إعادة تعيين رقم من بطاقة SIM إلى أخرى في بداية عصر الهاتف المحمول - هذه هي الطريقة التي يتم بها استعادة الرقم عند فقد بطاقة SIM. أدرك "المتخصصون في أخذ النقود الرقمية" أنه يمكن استخدام خيار "إعادة كتابة بطاقة SIM" في مخططات احتيالية. بعد كل شيء ، يمكن للشخص الذي يتحكم في بطاقة SIM إدارة الخدمات المصرفية عبر الإنترنت والمحافظ الإلكترونية الخاصة بشخص آخر وحتى العملة المشفرة. ويمكنك حيازة رقم شخص آخر عن طريق رشوة موظف اتصالات ، باستخدام خداع أو مستندات مزورة.

تحرك لتأمين 2FA على blockchain

تم الكشف عن الآلاف من حلقات تبديل بطاقة SIM - هكذا تم استدعاء مخطط الاحتيال هذا. يشير حجم الكارثة إلى أن العالم سيتخلى قريبًا عن المصادقة الثنائية عبر الرسائل القصيرة. لكن هذا لا يحدث - دراسة يقولون أنه ليس المستخدمون هم من يختار طريقة المصادقة الثنائية ، ولكن أصحاب الخدمة.

نقترح استخدام طريقة 2FA آمنة مع تسليم رموز لمرة واحدة عبر blockchain ، وسنخبرك بكيفية تمكينها لمالك الخدمة.

يذهب الحساب إلى الملايين

في عام 2019 ، زاد الاحتيال في مبادلة بطاقة SIM بنسبة 63٪ وفقًا لشرطة لندن ، وبلغ "متوسط ​​الشيك" للمهاجم 4,000 جنيه إسترليني. لم أجد إحصائيات في روسيا ، لكني أفترض أنها أسوأ.

تُستخدم ميزة تبديل بطاقة SIM لسرقة حسابات Twitter و Instagram و Facebook وحسابات VK الشهيرة والحسابات المصرفية وحصلت مؤخرًا على العملات المشفرة - تقارير التايمز وفقًا لرجل الأعمال في عملات البيتكوين ، جوبي ويكس. ظهرت حالات بارزة لسرقة العملات المشفرة باستخدام مبادلة بطاقة SIM في الصحافة منذ عام 2016 ؛ كان عام 2019 ذروة حقيقية.

في مايو ، مكتب المدعي العام الأمريكي للمنطقة الشرقية من ميشيغان متهم تسعة شباب تتراوح أعمارهم بين 19 و 26 عامًا: يُزعم أنهم أعضاء في عصابة قرصنة تسمى "المجتمع" ("المجتمع"). العصابة متهمة بسبع هجمات مقايضة ، ونتيجة لذلك خصص المتسللون أكثر من 2,4 مليون دولار من العملات المشفرة. وفي أبريل / نيسان ، حُكم على الطالب في كاليفورنيا جويل أورتيز بالسجن لمدة 10 سنوات لمبادلة بطاقة SIM. كان تعدينه 7.5 مليون دولار من العملات المشفرة.

تحرك لتأمين 2FA على blockchain
تصوير جويل أورتيز في مؤتمر صحفي بالجامعة. بعد ذلك بعامين ، سيتم اعتقاله بتهمة الاحتيال الإلكتروني.

كيف يعمل تبديل بطاقة SIM

"المبادلة" تعني الصرف. في جميع هذه المخططات ، يسرق المجرمون رقم هاتف الضحية ، عادةً عن طريق إعادة إصدار بطاقة SIM ، واستخدامها لإعادة تعيين كلمة المرور. تبدو مقايضة SIM النموذجية من الناحية النظرية كما يلي:

  1. خدمة ذكية. يتعلم المحتالون البيانات الشخصية للضحية: الاسم ورقم الهاتف. يمكن العثور عليها في مصادر مفتوحة (الشبكات الاجتماعية ، الأصدقاء) أو تلقيها من شريك - موظف في مشغل الهاتف المحمول.
  2. المنع. تم تعطيل بطاقة SIM الخاصة بالضحية ؛ للقيام بذلك ، ما عليك سوى الاتصال بالدعم الفني للمزود ، وإخبار الرقم والقول إن الهاتف قد فقد.
  3. التقاط ونقل الرقم إلى بطاقة SIM الخاصة بك. عادة ما يتم ذلك أيضًا من خلال شريك في شركة اتصالات أو عن طريق تزوير المستندات.

في الحياة الواقعية ، إنها أكثر خطورة. يختار المهاجمون الضحية ، ثم يتتبعون موقع الهاتف يوميًا - يتكلف طلب واحد لتلقي المعلومات التي حولها المشترك إلى التجوال 1-2 سنت. بمجرد أن يذهب مالك بطاقة SIM إلى الخارج ، يتفقون مع المدير في صالون الاتصالات على إصدار بطاقة SIM جديدة. يكلف حوالي 50 دولارًا (وجدت معلومات - في بلدان مختلفة ومن مشغلين مختلفين من 20 دولارًا إلى 100 دولار) ، بينما سيتم طرد المدير في أسوأ الحالات - لا توجد مسؤولية عن ذلك.

الآن سيتلقى المهاجمون جميع الرسائل القصيرة ، ولن يتمكن مالك الهاتف من فعل أي شيء حيال ذلك - فهو في الخارج. ومن ثم يحصل الأشرار على إمكانية الوصول إلى جميع حسابات الضحية ، وإذا رغبت في ذلك ، فقم بتغيير كلمات المرور.

فرص استرجاع ما سرق

تذهب البنوك أحيانًا لمقابلة الضحايا وسحب التحويلات من حساباتهم. لذلك ، من الممكن إعادة النقود الورقية حتى لو لم يتم العثور على الجاني. ولكن مع محافظ العملات المشفرة ، يصبح كل شيء أكثر تعقيدًا - و فنيا، وبموجب القانون. حتى الآن ، لم تقم أي بورصة / محفظة بتعويض ضحايا المقايضة.

إذا أراد الضحايا الدفاع عن أموالهم في المحكمة ، فإنهم يلومون المشغل: لقد خلق الظروف لسرقة الأموال من الحساب. هذا بالضبط ما فعله مايكل توربين، الذي خسر 224 مليون دولار بسبب المقايضة ، وهو الآن يقاضي شركة الاتصالات AT&T.

تحرك لتأمين 2FA على blockchain

حتى الآن ، لا توجد دولة لديها خطط عمل لحماية مالكي العملات المشفرة قانونًا. من المستحيل تأمين رأس المال الخاص بك أو الحصول على تعويض عن خسارته. لذلك ، فإن منع هجوم المقايضة أسهل من التعامل مع عواقبه. الطريقة الأكثر وضوحًا هي استخدام "عامل ثانٍ" أكثر موثوقية من أجل 2FA.

تبديل بطاقة SIM ليس هو المشكلة الوحيدة مع 2FA عبر الرسائل القصيرة

رموز تأكيد الرسائل القصيرة ليست آمنة من الناحية الفنية. يمكن اعتراض الرسائل بسبب نقاط الضعف القاتلة في نظام الإشارات 7 (SS7). 2FA عبر الرسائل القصيرة معترف به رسميًا على أنه غير آمن (يقول المعهد الوطني الأمريكي للمعايير والتكنولوجيا هذا في ملفات دليل المصادقة الرقمية).

في الوقت نفسه ، غالبًا ما يمنح وجود المصادقة الثنائية المستخدم إحساسًا بالأمان الخاطئ ، ويختار كلمة مرور أبسط. لذلك ، لا تجعل هذه المصادقة الأمر صعبًا ، ولكنها تسهل وصول المهاجم إلى الحساب.

وغالبًا ما تصل الرسائل القصيرة مع تأخير طويل أو لا تصل على الإطلاق.

طرق أخرى للمصادقة الثنائية

بالطبع ، على الهواتف الذكية والرسائل النصية القصيرة ، لم يتقارب العالم مثل الإسفين. هناك طرق أخرى للمصادقة الثنائية. على سبيل المثال ، رموز TAN لمرة واحدة: طريقة بدائية ، ولكنها عملية - لا تزال مستخدمة في بعض البنوك. هناك أنظمة تستخدم البيانات البيومترية: بصمات الأصابع ومسح الشبكية. هناك خيار آخر يبدو أنه حل وسط معقول من حيث الراحة والموثوقية والسعر وهو التطبيقات المخصصة لـ 2FA: RSA Token ، Google Authenticator. ثم هناك مفاتيح مادية وطرق أخرى.

من الناحية النظرية ، يبدو كل شيء منطقيًا وموثوقًا به. ولكن من الناحية العملية ، فإن الحلول الحديثة للمصادقة الثنائية لها مشكلات ، وبسببها ، يختلف الواقع عن التوقعات.

وفق استكشاف، فإن استخدام المصادقة الثنائية يمثل إزعاجًا من حيث المبدأ ، ويتم تفسير شعبية المصادقة الثنائية عبر الرسائل القصيرة "بإزعاج أقل مقارنة بالطرق الأخرى" - الحصول على رموز لمرة واحدة واضح للمستخدم.

ترتبط العديد من أساليب المصادقة الثنائية (2FA) بالخوف من ضياع الوصول. يمكن أن يتم فقد أو سرقة المفتاح المادي أو قائمة كلمات مرور TAN. أنا شخصياً لدي تجربة سلبية مع Google Authenticator. تعطل أول هاتف ذكي لدي مع هذا التطبيق - أقدر عملي على استعادة الوصول إلى الحسابات. مشكلة أخرى هي التبديل إلى جهاز جديد. Google Authenticator غير قابل للتصدير لأسباب أمنية (إذا كان من الممكن تصدير المفاتيح ، فما هو الأمان؟). بمجرد أن قمت بنقل المفاتيح يدويًا ، ثم قررت أنه من الأسهل ترك الهاتف الذكي القديم في صندوق على الرف.

يجب أن تكون طريقة 2FA:

  • آمن - يجب أن تتمكن أنت فقط ، وليس الدخلاء ، من الوصول إلى حسابك
  • موثوق - يمكنك الوصول إلى حسابك متى احتجت إليه
  • مريح وبأسعار معقولة - استخدام المصادقة الثنائية أمر واضح ويستغرق حدًا أدنى من الوقت
  • رخيص

نعتقد أن blockchain هو الحل الصحيح.

استخدم 2FA على blockchain

بالنسبة للمستخدم ، يبدو 2FA على blockchain مثل تلقي الرموز لمرة واحدة عبر الرسائل القصيرة. الاختلاف الوحيد في قناة التوصيل. تعتمد طريقة الحصول على رمز 2FA على ما تقدمه blockchain. في مشروعنا (المعلومات موجودة في ملفي الشخصي) ، هذا تطبيق ويب ، Tor ، iOS ، Android ، Linux ، Windows ، MacOS.

تنشئ الخدمة رمزًا لمرة واحدة وترسله إلى برنامج المراسلة على blockchain. علاوة على ذلك - وفقًا للكلاسيكيات: يقوم المستخدم بإدخال الكود المستلم في واجهة الخدمة ويسجل الدخول.

تحرك لتأمين 2FA على blockchain

المقال كيف يعمل برنامج المراسلة اللامركزي على blockchain؟ لقد كتبت أن blockchain يضمن أمان وخصوصية المراسلة. فيما يتعلق بمسألة إرسال رموز 2FA ، سأبرز:

  • نقرة واحدة لإنشاء حساب - لا هواتف أو رسائل بريد إلكتروني.
  • يتم تشفير جميع الرسائل التي تحتوي على رموز 2FA باستخدام منحنى من طرف إلى طرف 25519xsalsa20poly1305.
  • تم استبعاد هجوم MITM - كل رسالة تحتوي على رمز 2FA هي معاملة على blockchain وموقعة من Ed25519 EdDSA.
  • تدخل الرسالة التي تحتوي على رمز 2FA في الكتلة الخاصة بها. لا يمكن تصحيح تسلسل الكتل والطابع الزمني ، وبالتالي ترتيب الرسائل.
  • لا توجد بنية مركزية تقوم بالتحقق من "صحة" الرسالة. يتم ذلك من خلال نظام موزع من العقد يعتمد على الإجماع ، وهو مملوك من قبل المستخدمين.
  • يتعذر التعطيل - لا يمكن حظر الحسابات ولا يمكن حذف الرسائل.
  • الوصول إلى رموز 2FA من أي جهاز في أي وقت.
  • تأكيد تسليم الرسالة برمز 2FA. تعرف الخدمة التي ترسل كلمة المرور لمرة واحدة على وجه اليقين أنه تم تسليمها. لا توجد أزرار "إرسال مرة أخرى".

للمقارنة مع بعض طرق 2FA الأخرى ، قمت بتجميع جدول:

تحرك لتأمين 2FA على blockchain

يتلقى المستخدم حسابًا في رسول blockchain لتلقي الرموز في ثانية - يتم استخدام عبارة مرور فقط للدخول. لذلك ، يمكن أن تكون طرق التطبيق مختلفة: يمكنك استخدام حساب واحد لتلقي الرموز لجميع الخدمات ، أو يمكنك إنشاء حساب منفصل لكل خدمة.

هناك أيضًا إزعاج - يجب أن يحتوي الحساب على معاملة واحدة على الأقل. لكي يتلقى المستخدم رسالة مشفرة برمز ، تحتاج إلى معرفة مفتاحه العام ، ويظهر في blockchain فقط مع المعاملة الأولى. خرجنا على هذا النحو: جعلنا من الممكن الحصول على رموز مجانية في المحفظة. ومع ذلك ، فإن الحل الأكثر صحة هو تسمية الحساب بالمفتاح العام. (للمقارنة لدينا رقم حساب U1467838112172792705 هو مشتق من المفتاح العام cc1ca549413b942029c4742a6e6ed69767c325f8d989f7e4b71ad82a164c2ada. بالنسبة إلى برنامج المراسلة ، يعد هذا أكثر ملاءمة وقابلية للقراءة ، ولكن بالنسبة لنظام إرسال رموز 2FA ، يعد هذا قيدًا). أعتقد أن شخصًا ما سيتخذ مثل هذا القرار في المستقبل وينقل "الراحة وإمكانية الوصول" إلى المنطقة الخضراء.

سعر إرسال رمز 2FA منخفض جدًا - 0.001 ADM ، والآن أصبح 0.00001 دولارًا أمريكيًا. مرة أخرى ، يمكنك رفع blockchain وجعل السعر صفرًا.

كيفية توصيل 2FA على blockchain بخدمتك

آمل أن أتمكن من جذب عدد قليل من القراء المهتمين بإضافة ترخيص blockchain إلى خدماتهم.

سأخبرك بكيفية القيام بذلك باستخدام مثال برنامج messenger الخاص بنا ، وقياسًا ، يمكنك استخدام blockchain آخر. في تطبيق 2FA التجريبي ، نستخدم postgresql10 لتخزين معلومات الحساب.

مراحل الاتصال:

  1. قم بإنشاء حساب على blockchain الذي سترسل منه رموز 2FA. ستتلقى عبارة مرور ، تُستخدم كمفتاح خاص لتشفير الرسائل بالرموز وتوقيع المعاملات.
  2. أضف نصًا إلى الخادم الخاص بك لإنشاء رموز 2FA. إذا كنت تستخدم بالفعل أي طريقة 2FA أخرى مع تسليم OTP ، فقد أكملت هذه الخطوة بالفعل.
  3. أضف برنامجًا نصيًا إلى الخادم الخاص بك لإرسال الرموز إلى المستخدم في برنامج messenger blockchain.
  4. قم بإنشاء واجهة مستخدم لتقديم وإدخال رمز 2FA. إذا كنت تستخدم بالفعل أي طريقة 2FA أخرى مع تسليم OTP ، فقد أكملت هذه الخطوة بالفعل.

1 إنشاء الحساب

إنشاء حساب على blockchain هو إنشاء مفتاح خاص ومفتاح عام وعنوان حساب مشتق منه.

تحرك لتأمين 2FA على blockchain

أولاً ، يتم إنشاء عبارة مرور BIP39 ، ويتم حساب تجزئة SHA-256 منها. يتم استخدام التجزئة لإنشاء المفتاح الخاص ks والمفتاح العام kp. من المفتاح العام ، نحصل على العنوان في blockchain باستخدام نفس 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 على blockchain

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

يمكنك استخدام blockchain node API أو مكتبة JS API أو وحدة التحكم لإرسال كود 2FA. في هذا المثال ، نستخدم وحدة التحكم - هذه هي واجهة سطر الأوامر ، وهي أداة تبسط التفاعل مع blockchain. لإرسال رسالة برمز 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 على blockchain

يمكن الاطلاع على الكود المصدري لتطبيق العرض التوضيحي للمصادقة الثنائية blockchain على الرابط GitHub جيثب:. يحتوي المستند التمهيدي على ارتباط إلى عرض توضيحي مباشر لتجربته.

المصدر: www.habr.com

إضافة تعليق