جدول المحتويات:
فيديو: مولد Arduino TOTP: 3 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
إلهام
بعد أن كان لدي صديق مهتم بالتشفير والأمان ، كنت أرغب في إنشاء هدية عيد ميلاد مثالية.
* هذا مشروع قمت بإنشائه كهدية لعيد ميلاد وتم إنشاؤه ضمن قيود زمنية ضيقة (عفو عن الصناعة الفوضوية)
ملاحظة: يُنشئ جيل TOTP المستخدم في هذا المشروع رموزًا مكونة من 6 أرقام ويستخدمها ، ولكن نظرًا للأجهزة المتوفرة حاليًا ، اخترت قطع الرقمين الزائدين وعرض واستخدام 4 ، ويمكن القول (ولكن ليس بشكل كبير) تقليل الأمان.
معلومات عامة
ينشئ هذا المشروع رمزًا جديدًا كل 30 ثانية باستخدام مفتاح مشترك مسبقًا والوقت الحالي (الذي يتم تتبعه باستخدام وحدة ساعة الوقت الحقيقي) ويعرضه على الشاشة عند الضغط على الزر. قد تكون حالة الاستخدام الأكثر شيوعًا هي التحقق من عاملين استنادًا إلى كلمة المرور لمرة واحدة المستندة إلى الوقت (TOTP) وكلمة المرور لمرة واحدة المستندة إلى HMAC (HOTP) للمصادقة.
TOTP هي خوارزمية تحسب كلمة مرور لمرة واحدة من مفتاح سري مشترك والوقت الحالي. HTOP عبارة عن خوارزمية تستخدم خوارزمية HMAC لإنشاء كلمة مرور لمرة واحدة.
تستخدم شركات مثل Google و Microsoft و Steam بالفعل تقنية TOTP للمصادقة ذات العاملين
روابط مثيرة للاهتمام
مقال يشرح كيفية استخدام Google لهذه التقنية لمصادقة المستخدمين -
تنفيذ JavaScript لـ HOTP و TOTP التي يمكن استخدامها عند إنشاء برنامج باستخدام هذا المشروع -
مكتبة Crytographic لاردوينو المستخدمة في هذا المشروع -
ورق TOTP -
مستوى الخبرة
هذا Instructable مخصص للمتحمسين المهتمين بالأمان وقد يرغبون في تنفيذ مكون جهاز لطيف لتوليد TOTP الخاص بهم. تمت كتابة هذا التوجيه للجمهور الذي يفهم بالفعل أساسيات تفسير المخططات الإلكترونية والبرمجة الأولية ، ولكن إذا كنت تخطط ببساطة لاتباع Instructable بالضبط ، فلا تقلق إذا لم تكن لديك خبرة ، ولا تتردد في طرح الأسئلة في الأسفل تعليقات! علاوة على ذلك ، يمكن أن يكون المشروع مثيرًا للاهتمام للصانعين الأكثر خبرة أيضًا نظرًا لأن المنتج النهائي ليس مجرد قطعة جميلة يمكن الحصول عليها (في رأيي) ، ولكن لديه الكثير من الإمكانات للتوسع والميزات الجديدة دون الكثير من المتاعب.
اللوازم
المواد:
- 1x أردوينو نانو (أمازون)
- 1x DS3231 AT24C32 وحدة ساعة الوقت الحقيقي (RTC) (أمازون)
- 1x SH5461AS الكاثود المشترك 4 أرقام 7-المقطع (الأمازون)
- 1x زر ضغط (أمازون)
- 1x 10 كيلو المقاوم (الأمازون)
- اختياري 1 × 5 × 7 سم ثنائي الفينيل متعدد الكلور (أمازون)
- سلك اختياري للحام لثنائي الفينيل متعدد الكلور
- لوح توصيل اختياري 1x للاختبار (أمازون)
الخطوة 1: التجميع والاختبار
قم بتجميع جميع المكونات الموجودة على اللوح وقم بتوصيلها وفقًا لمخطط الأسلاك المرفق (ملف Fritzing هنا).
تأكد من تثبيت Arduino IDE (يمكن العثور عليه عبر الإنترنت إذا لم تقم بذلك) وقم بتثبيت المكتبات التالية:
github.com/lucadentella/TOTP-Arduino
github.com/adafruit/RTClib
github.com/maniacbug/Cryptosuite
قم بتنزيل المخطط المرفق (يمكن الوصول إليه أيضًا هنا: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) ، وافتحه باستخدام Arduino IDE. افتح هذا الرابط (https://www.lucadentella.it/OTP/) وأدخل أي اسم في حقل اسم الحساب ، ومفتاح سري مخصص (بطول 10 أحرف) في الحقل التالي ، مع التأكد من حفظ هاتين القيمتين في مكان آمن للنسخ الاحتياطي. انسخ محتويات حقل "Arduino HEX array:" ، ثم عد إلى محرر Arduino ، واستبدل المصفوفة الموجودة في السطر 25 (hmacKey) بالمصفوفة التي نسختها من الموقع.
بعد التحقق مرتين من كل اتصال سلك ، تأكد من أن وحدة RTC بها خلية عملة معدنية ، وقم بتوصيل Arduino بجهاز الكمبيوتر المحمول الخاص بك باستخدام سلك USB صغير ، وقم بتحميل الرسم المرفق.
بعد التحميل ، عند الضغط على الزر ، يجب أن يظهر رقم على الشاشة. إذا قمت بتنزيل تطبيق Google Authenticator على هاتف ذكي ورجعت إلى الموقع المستخدم لإنشاء مصفوفة HEX أو مسح رمز الاستجابة السريعة أو كتابة "رمز Google Authenticator" في التطبيق ، فسترى الرقم المعروض في التطبيق. إذا كان كل شيء يعمل بشكل صحيح ، فعند الضغط على زر الضغط ، يجب أن تتطابق الأرقام الأربعة المعروضة مع أول 4 أرقام من الكود الحالي المعروض في تطبيق الهاتف الذكي. إذا لم يكن الأمر كذلك ، فتأكد من ضبط الكمبيوتر المستخدم لتحميل كود Arduino على التوقيت العالمي المنسق وحاول مرة أخرى.
الخطوة 2: التحويل إلى PCB
بعد التأكد من أن كل شيء في حالة جيدة ، يمكنك نقل المكونات إلى PCB ولحام كل شيء معًا كما يبدو مناسبًا. لقد أرفقت مخطط ثنائي الفينيل متعدد الكلور بالإضافة إلى ملف فريتزينج (متوفر هنا). لاحظ أنني وضعت جميع المكونات في الجزء العلوي من اللوحة من أجل الجماليات ، ولكن يمكن أيضًا تركيبها تحتها ثم وضعها في نوع ما من المساكن لجعلها أكثر نظافة. لقد قمت بقص وعصي المصاصة الملون مع Sharpie على جوانب PCB لإنشاء صندوق مؤقت للوحدة. خطوة اختيارية أخرى هي إرفاق مقطع بطارية 9 فولت بمسامير VIN و GND في Arduino ، مما يجعلها تعمل بالبطارية.
الخطوة 3: انتهى
هذه هي الطريقة التي تحول بها المولد المكتمل الخاص بي ، إذا تابعت وصنعت واحدًا بنفسك ، فشاركه أدناه!
تأكد من التصويت على Instructable الخاص بي لمسابقة STEM إذا كنت ترى ذلك مناسبًا ، واترك تعليقًا / أي أسئلة قد تكون لديك أدناه!
موصى به:
كيفية استخدام مولد إشارة تردد Arduino DDS AD9850: 7 خطوات
كيفية استخدام Arduino DDS Frequency Signal Generator AD9850: في هذا البرنامج التعليمي سوف نتعلم كيفية إنشاء مولد إشارة التردد باستخدام وحدة AD9850 و Arduino. شاهد الفيديو! ملاحظة: تمكنت من الحصول على تردد يصل إلى + 50 ميجا هرتز ولكن جودة الإشارة تحصل أسوأ مع الترددات الأعلى
مولد إشارة RF 100 KHz-600 MHZ على DDS AD9910 Arduino Shield: 5 خطوات
مولد إشارة RF 100 كيلو هرتز -600 ميجا هرتز على DDS AD9910 Arduino Shield: كيفية إنشاء مولد تردد لاسلكي منخفض الضوضاء وعالي الدقة ومستقر (مع تعديل AM و FM) على Arduino
مولد صوت 8 بت يتم التحكم فيه بواسطة MIDI / Arduino (AY-3-8910): 5 خطوات
MIDI / Arduino مولد صوت 8 بت (AY-3-8910): إنشاء مولد صوت ذي 8 بتات وتحكم فيه من خلال MIDI ، هذا التصميم مستوحى جزئيًا من عشاق Chiptune لبناء دوائر Arduino لتشغيل ملفات Chiptune وبعض من أفكاري الخاصة لدمج صوت سلبيات ألعاب الفيديو المبكرة
مولد الموسيقى المعتمد على الطقس (مولد ميدي ESP8266): 4 خطوات (بالصور)
مولد الموسيقى المعتمد على الطقس (ESP8266 Based Midi Generator): مرحبًا ، سأشرح اليوم كيفية صنع مولد الموسيقى الخاص بك الذي يعتمد على الطقس. إنه يعتمد على ESP8266 ، وهو نوع يشبه Arduino ، ويستجيب لدرجة الحرارة والمطر وشدة الضوء. لا تتوقع أن تقوم بعمل أغانٍ كاملة أو برنامج على وتر
مولد - مولد تيار مباشر باستخدام مفتاح ريد: 3 خطوات
المولد - مولد التيار المستمر باستخدام مفتاح Reed Switch: مولد التيار المستمر البسيط مولد التيار المباشر (DC) هو آلة كهربائية تحول الطاقة الميكانيكية إلى تيار كهربائي مباشر هام: يمكن استخدام مولد التيار المباشر (DC) كمحرك DC بدون أي إنشائية التغييرات