
تُعد الرسائل القصيرة (SMS) الطريقة الأكثر انتشارًا للمصادقة الثنائية، وتُستخدم من قِبل البنوك، والمحفظات الرقمية، والعديد من الخدمات عبر الإنترنت. ومع ذلك، فهي غير آمنة من الناحية الجوهرية. فقد تم استغلال عملية الاحتيال المعروفة بـ”تبديل شريحة SIM” — حيث يقوم المهاجم بنقل رقم هاتف الضحية إلى شريحة SIM جديدة — منذ بدايات الهواتف المحمولة، وازدادت وتيرتها فقط. وذكرت شرطة لندن ارتفاعًا بنسبة 63٪ في عمليات احتيال تبديل شريحة SIM في عام 2019، وأسفرت حالات بارزة عن سرقة ملايين الدولارات من العملات المشفرة. والسبب الجذري هو هيكلي: من يتحكم في شريحة SIM يمكنه إعادة تعيين كلمات المرور والاستيلاء على الحسابات، ويمكن ت bribe أو خداع موظفي شركات الاتصالات لنقل الأرقام.

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

جويل أورتيز في مؤتمر صحفي بجامعة. بعد عامين، تم اعتقاله بتهمة الاحتيال الإلكتروني وحُكم عليه بالسجن 10 سنوات لسرقته أكثر من 7.5 مليون دولار من العملات المشفرة عبر تبديل شريحة SIM.
عملية الاسترداد صعبة. يمكن أحيانًا التراجع عن التحويلات التقليدية بالتعاون مع البنك، لكن معاملات العملات المشفرة تكون فعليًا غير قابلة للإلغاء وغالبًا ما تكون غير قابلة للتتبع. لم تُعوِّض أي بورصة للعملات المشفرة الضحايا المتضررين من سرقة تبديل شريحة SIM، وعادةً ما تستهدف الإجراءات القانونية مزود الخدمة بدلاً من استرداد الأموال. على سبيل المثال، فقد مايكل تيربين 224 مليون دولار ويرفع دعوى قضائية ضد شركة AT&T.
إلى جانب تبديل شريحة SIM، تمتلك ميزة المصادقة الثنائية عبر الرسائل القصيرة نقاط ضعف تقنية إضافية. يمكن اعتراض الرسائل من خلال ثغرات في نظام الإشارة 7 (SS7)، وقد أوقف المعهد الوطني الأمريكي للمعايير والتكنولوجيا (NIST) رسميًا استخدام الرسائل القصيرة كعامل ثاني في إرشاداته الخاصة بالهوية الرقمية. كما أن توصيل الرسائل القصيرة غير موثوق — فقد تتأخر الرسائل أو لا تصل إطلاقًا — ووجود المصادقة الثنائية قد يعطي المستخدمين شعورًا كاذبًا بالأمان، مما يؤدي بهم إلى اختيار كلمات مرور أضعف.
طرق مصادقة ثنائية أخرى ومقايضاتها
تشمل الطرق البديلة للمصادقة الثنائية قوائم رموز TAN لمرة واحدة، والمصادقة البيومترية، وتطبيقات المصادقة الزمنية مثل Google Authenticator، ومفاتيح الأمان المادية. لكل منها عيوب عملية. يمكن فقدان الوسائط المادية أو سرقتها. كما تعقّد تطبيقات المصادقة عملية انتقال الجهاز — على سبيل المثال، لا يوفر Google Authenticator وظيفة تصدير المفاتيح، مما يجعل استرداد الحساب من هاتف معطّل أمرًا صعبًا. ووجدت دراسة أجريت عام 2013 أن المستخدمين يرون أن جميع أشكال المصادقة الثنائية غير مريحة، وتظل الرسائل القصيرة شائعة ببساطة لأنها الخيار الأقل إزعاجًا، وليس لأنها الأكثر أمانًا.
يجب أن تكون طريقة المصادقة الثنائية المثالية آمنة، وموثوقة، وسهلة الاستخدام، ورخيصة. وتفي وسيلة التوصيل القائمة على البلوكشين بهذه المعايير.
المصادقة الثنائية عبر البلوكشين باستخدام ADAMANT
من منظور المستخدم، تعمل المصادقة الثنائية عبر البلوكشين بنفس طريقة التوصيل عبر الرسائل القصيرة: تقوم الخدمة بإنشاء رمز لمرة واحدة وإرساله عبر قناة مراسلة؛ ثم يقرأه المستخدم ويُدخله. والاختلاف يكمن في وسيلة النقل. بدلًا من الرسائل القصيرة، يتم توصيل الرمز عبر تطبيق المراسلة ADAMANT القائم على البلوكشين، والذي يتوفر كتطبيق ويب، وعميل Tor، وتطبيقات أصلية لنظامي iOS وAndroid، ولأنظمة Linux وWindows وmacOS.

توفر البلوكشين خصائص أمان لا يمكن للرسائل القصيرة تقديمها. فإنشاء الحساب لا يتطلب رقم هاتف أو بريد إلكتروني — بل فقط عبارة مرور. جميع الرسائل مشفرة من طرف إلى طرف باستخدام خوارزمية curve25519xsalsa20poly1305. كل رسالة هي معاملة على البلوكشين موقعة باستخدام خوارزمية Ed25519 EdDSA، مما يجعل هجمات man-in-the-middle مستحيلة. يتم تسجيل الرسائل في كتل مع طوابع زمنية لا يمكن تغييرها، ويتم التحقق من صحتها عبر توافق موزع من العقد بدلًا من سلطة مركزية. لا يمكن حظر الحسابات ولا يمكن حذف الرسائل، مما يعني أنه لا يوجد ما يعادل تعليق شركة الاتصالات لشريحة SIM. يمكن الوصول إلى الرموز من أي جهاز وفي أي وقت، ويستلم المرسل تأكيد توصيل — مما يلغي الحاجة إلى أزرار “إعادة إرسال”.

يقوم المستخدمون بتسجيل الدخول إلى ADAMANT باستخدام عبارة المرور فقط، لذا يمكنهم استخدام حساب واحد لجميع الخدمات أو إنشاء حسابات منفصلة لكل خدمة. تتمثل إحدى القيود في أن الحساب يجب أن يحتوي على معاملة واحدة على الأقل قبل أن يظهر المفتاح العام على البلوكشين، وهو ما يُطلب لإرسال رسائل مشفرة إليه. يتضمن محفظة ADAMANT صنبورًا لتوزيع رموز مجانية للتغلب على هذه المشكلة، رغم أن الحل الأكثر متانة سيكون توجيه الحسابات مباشرةً عبر المفتاح العام بدلًا من العنوان الرقمي المشتق.
تبلغ تكلفة إرسال رمز مصادقة ثنائي عبر ADAMANT حوالي 0.001 ADM (ما يعادل 0.00001 دولار أمريكي بالأسعار الحالية). يمكن للخدمة أيضًا تشغيل بلوكشين خاص بها مبني على قاعدة كود ADAMANT وتعيين رسوم المعاملات إلى صفر.
دليل التنفيذ
تصف الخطوات التالية كيفية دمج المصادقة الثنائية القائمة على البلوكشين في خدمة ما، باستخدام ADAMANT كقناة للتوصيل. يتوفر تنفيذ مرجعي على GitHub على الرابط https://github.com/Adamant-im/adamant-2fa.
الخطوة 1: إنشاء حساب المرسل
أنشئ حساب ADAMANT سيقوم بإرسال رموز المصادقة الثنائية. يمكنك فعل ذلك يدويًا من خلال محفظة الويب، أو برمجيًا عبر واجهة برمجة تطبيقات عقدة ADAMANT، أو وحدة التحكم، أو واجهة برمجة تطبيقات JavaScript. يتضمن إنشاء الحساب توليد عبارة مرور BIP39، وحساب تجزئتها باستخدام SHA-256، واشتقاق زوج مكوّن من مفتاح خاص وعام باستخدام Ed25519، ثم اشتقاق عنوان البلوكشين من المفتاح العام عبر تجزئة SHA-256 أخرى مع عكس.


الخطوة 2: إنشاء رموز لمرة واحدة
أنشئ رمز HOTP لكل محاولة تسجيل دخول. يستخدم المثال أدناه مكتبة speakeasy:
const hotp = speakeasy.hotp({
counter,
secret: account.seSecretAscii,
});
التحقق عند إرسال المستخدم للرمز:
se2faVerified = speakeasy.hotp.verify({
counter: this.seCounter,
secret: this.seSecretAscii,
token: hotp,
});
الخطوة 3: إرسال الرمز عبر البلوكشين
استخدم واجهة سطر الأوامر (CLI) لوحدة تحكم ADAMANT لإرسال الرمز كرسالة على البلوكشين:
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 من مكتبة واجهة برمجة تطبيقات JavaScript الخاصة بـ ADAMANT لاتباع نهج برمجي دون الحاجة إلى استخدام واجهة سطر الأوامر.
الخطوة 4: بناء واجهة المستخدم
وفر حقلًا للمستخدم لإدخال رمز المصادقة الثنائية. يستخدم تطبيق العرض التوضيحي إطار Vue، لكن أي إطار أمامي يمكنه العمل.

تتوفر الشيفرة الكاملة لتطبيق العرض التوضيحي على GitHub على الرابط https://github.com/Adamant-im/adamant-2fa، وتشمل تعليمات الإعداد ورابط عرض تجريبي مباشر.