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

تم اكتشاف آلاف حلقات مبادلة بطاقة SIM - وهذا ما أطلق عليه مخطط الاحتيال هذا. يشير حجم الكارثة إلى أن العالم سيتخلى قريبًا عن 2FA عبر الرسائل القصيرة. لكن هذا لا يحدث - تقول
الدراسة أنه ليس المستخدمون هم الذين يختارون طريقة 2FA ، ولكن أصحاب الخدمة.
نقترح استخدام طريقة 2FA الآمنة مع تسليم الرموز لمرة واحدة عبر blockchain ، وسنخبرك بكيفية توصيلها بمالك الخدمة.
مشروع القانون يذهب إلى الملايين
في عام 2019 ، زاد الاحتيال في مقايضة SIM بنسبة 63٪ وفقًا لشرطة لندن ، وكان "متوسط الشيكات" للمهاجم 4000 جنيه إسترليني. لم أجد إحصائيات في روسيا ، لكنني أفترض أنها أسوأ.
يتم استخدام مبادلة SIM لسرقة حسابات Twitter و Instagram و Facebook و VK والحسابات المصرفية ، وحصلت مؤخرًا على عملات مشفرة ، وفقًا
لتقارير صحيفة التايمز الصادرة عن رجل أعمال بيتكوين جوبي ويكس. ظهرت قضايا الصحافة البارزة لسرقة العملات المشفرة بمساعدة مبادلة SIM في الصحافة منذ عام 2016 ؛ في 2019 جاء ذروة حقيقية.
في مايو / أيار ، وجه المدعون العامون في مقاطعة ميشيغان الشرقية
الاتهام إلى تسعة شبان تتراوح أعمارهم بين 19 و 26 عامًا: يُزعم أنهم أعضاء في عصابة للمتسللين تدعى The Community. اتهمت العصابة بسبعة هجمات مقايضة ، ونتيجة لذلك خصص المتسللون عملة مشفرة بقيمة تزيد عن 2.4 مليون دولار. وفي إبريل / نيسان ، تلقى طالب من كاليفورنيا ، جويل أورتيز ، 10 سنوات في السجن لمبادلة بطاقة SIM ؛ 7.5 مليون دولار من العملات المشفرة أصبحت فريسة لها.
صورة لجويل أورتيز في مؤتمر صحفي للجامعة. بعد عامين ، سيتم احتجازه بتهمة الاحتيال عبر الإنترنت.مبدأ مبادلة SIM
تبادل يعني التبادل. في جميع هذه المخططات ، يعيّن المجرمون رقم هاتف الضحية ، عادةً من خلال إعادة إصدار بطاقة SIM ، ويستخدمونها لإعادة تعيين كلمة المرور. يشبه تبادل بطاقة SIM النموذجية من الناحية النظرية هذا:
- الاستكشاف. اكتشف المحتالون البيانات الشخصية للضحية: الاسم والهاتف. يمكن العثور عليها في المصادر المفتوحة (الشبكات الاجتماعية ، والأصدقاء) أو الحصول عليها من شريك - موظف في مشغل للهاتف المحمول.
- القفل. تم إلغاء تنشيط بطاقة SIM الخاصة بالضحية ؛ للقيام بذلك ، ما عليك سوى الاتصال بالدعم الفني للمزود ، والإبلاغ عن الرقم ونقول أن الهاتف قد فقد.
- التقاط ونقل الأرقام إلى بطاقة SIM الخاصة بك. عادةً ما يتم ذلك من خلال شريك في شركة اتصالات أو عن طريق تزوير المستندات.
في الحياة الحقيقية لا يزال أكثر شدة. يختار المهاجمون الضحية ، ثم يراقبون موقع الهاتف يوميًا - طلب واحد للحصول على معلومات حولها المشترك إلى التجوال يتكلف 1-2 سنتات. بمجرد أن يغادر صاحب بطاقة SIM إلى الخارج ، فإنهم يتفقون مع المدير في صالون الاتصالات لإصدار بطاقة SIM جديدة. يكلف حوالي 50 دولارًا (وجدت معلومات - في بلدان مختلفة ومن مشغلين مختلفين من 20 دولارًا إلى 100 دولار) ، في حين سيتم طرد المدير في أسوأ الحالات - ليست هناك مسؤولية.
الآن سيتلقى جميع المتسللين جميع الرسائل النصية ، ولن يتمكن صاحب الهاتف من فعل أي شيء حيال ذلك - فهو في الخارج. ثم يحصل الأشرار على جميع حسابات الضحية ، وإذا رغبت في ذلك ، قم بتغيير كلمات المرور.
فرص لإعادة البضائع المسروقة
البنوك في بعض الأحيان تذهب نحو الضحايا وتسحب التحويلات من حساباتهم. لذلك ، من الممكن إعادة النقود الورقية ، حتى إذا لم يتم العثور على الجاني. ولكن مع محافظ العملات المشفرة ، كل شيء أكثر تعقيدًا -
تقنيًا وقانونيًا. حتى الآن ، لم يدفع أي تبادل / محفظة تعويضات لضحايا المبادلة.
إذا أراد الضحايا أن يدافعوا عن أموالهم في المحكمة ، فإنهم يتهمون المشغل: لقد خلق الشروط لسرقة الأموال من الحساب. هذا بالضبط ما فعله
مايكل توربين ، الذي خسر 224 مليون دولار بسبب المقايضة ، والآن يقاضي شركة الاتصالات AT&T.

حتى الآن ، لا يوجد لدى أي دولة خطط عمل لحماية مالكي العملات المشفرة بشكل قانوني. من المستحيل تأمين رأس المال الخاص بك أو الحصول على تعويض عن خسارته. لذلك ، منع هجوم المبادلة أسهل من محاربة عواقبه. الطريقة الأكثر وضوحا هي استخدام "العامل الثاني" الأكثر موثوقية ل 2FA.
لا يعد تبديل بطاقة SIM مشكلة مشكلة 2FA فقط عبر الرسائل القصيرة
أكواد التأكيد في الرسائل القصيرة هي أيضا غير آمنة من الناحية الفنية. يمكن اعتراض الرسائل نظرًا لوجود ثغرات قاتلة في نظام الإشارة 7 (SS7). 2FA عن طريق الرسائل القصيرة SMS معترف بها رسميًا على أنها غير آمنة (المعهد الوطني الأمريكي للمعايير والتكنولوجيا يتحدث عن ذلك في
دليل المصادقة الرقمية ).
علاوة على ذلك ، فإن وجود 2FA غالبًا ما يلهم المستخدم بشعور من الأمان الخاطئ ، ويختار كلمة مرور أبسط. لذلك ، لا تؤدي عملية المصادقة هذه إلى تعقيد ، ولكنها تسهل وصول المهاجم إلى الحساب.
وغالبا ما تأتي الرسائل القصيرة مع تأخير طويل أو لا تأتي على الإطلاق.
طرق 2FA أخرى
بالطبع ، على الهواتف الذكية والرسائل النصية القصيرة ، لم يتقارب الضوء. هناك طرق 2FA أخرى. على سبيل المثال ، رموز TAN لمرة واحدة: الطريقة بدائية ، ولكنها تعمل - لا تزال تستخدم في بعض البنوك. هناك أنظمة تستخدم البيانات الحيوية: بصمات الأصابع ، ومسح الشبكية. هناك خيار آخر يبدو كحل وسط معقول من حيث الراحة والموثوقية والسعر وهو التطبيقات الخاصة لـ 2FA: RSA Token ، Google Authenticator. وهناك مفاتيح المادية وغيرها من الأساليب.
من الناحية النظرية ، كل شيء يبدو منطقيا وموثوقا. ولكن في الممارسة العملية ، فإن حلول 2FA الحديثة تواجه مشاكل ، وبسببها ، فإن الواقع يختلف عن التوقعات.
وفقًا
للدراسة ، فإن استخدام 2FA يمثل إزعاجًا من حيث المبدأ ، وتفسر شعبية 2FA عبر الرسائل القصيرة من خلال "أقل إزعاج مقارنة بالطرق الأخرى" - تلقي رموز لمرة واحدة أمر مفهوم للمستخدم.
ترتبط العديد من طرق مستخدمي 2FA مع الخوف من فقد الوصول. يمكن فقد أو سرقة مفتاح مادي أو قائمة بكلمات مرور TAN. لديّ شخصيا تجربة سلبية باستخدام Google Authenticator. تم كسر أول هاتفي الذكي مع هذا التطبيق - تقييم جهودي لاستعادة الوصول إلى الحسابات. مشكلة أخرى هي الانتقال إلى جهاز جديد. Google Authenticator غير قادر على التصدير بسبب المخاوف الأمنية (إذا كان يمكن تصدير المفاتيح ، فما نوع الأمان الموجود؟). بمجرد أن قمت بنقل المفاتيح يدويًا ، ثم قررت أنه كان من الأسهل ترك الهاتف الذكي القديم في صندوق على الرف.
يجب أن تكون طريقة 2FA:
- آمن - فقط يجب عليك الوصول إلى حسابك ، وليس المهاجمين
- يمكن الاعتماد عليها - يمكنك الوصول إلى حسابك كلما احتجت إليه
- مريحة وبأسعار معقولة - استخدام 2FA واضح ويستغرق كحد أدنى من الوقت
- رخيص
نحن نعتقد أن blockchain هو الحل الصحيح.
استخدام 2FA على blockchain
بالنسبة للمستخدم ، يبدو 2FA على blockchain مثل تلقي رموز لمرة واحدة عبر الرسائل القصيرة. الفرق الوحيد هو في قناة التسليم. تعتمد طريقة الحصول على كود 2FA على ما تقدمه blockchain. في مشروعنا (المعلومات في ملفي الشخصي) ، هذا تطبيق ويب ، Tor ، iOS ، Android ، Linux ، Windows ، MacOS.
تنشئ الخدمة رمزًا لمرة واحدة وترسله إلى برنامج المراسلة على blockchain. علاوة على ذلك ، وفقًا للكلاسيكيات: يقوم المستخدم بإدخال الكود الذي تم استلامه في واجهة الخدمة ويقوم بتسجيل الدخول.

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

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

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

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