Mundarija:

Arduino TOTP generatori: 3 qadam
Arduino TOTP generatori: 3 qadam

Video: Arduino TOTP generatori: 3 qadam

Video: Arduino TOTP generatori: 3 qadam
Video: TOTP Arduino authenticator with USB keyboard emulation 2024, Noyabr
Anonim
Arduino TOTP generatori
Arduino TOTP generatori
Arduino TOTP generatori
Arduino TOTP generatori
Arduino TOTP generatori
Arduino TOTP generatori

Ilhom

Kriptografiya va xavfsizlikka qiziqadigan do'stim bor edi, men tug'ilgan kunim uchun ajoyib sovg'a yaratmoqchi edim.

*Bu men tug'ilgan kunga sovg'a sifatida tayyorlagan va qisqa vaqt ichida yaratilgan loyiha (tartibsiz ishlarni kechiring)

QAYD: Ushbu loyihada ishlatiladigan TOTP avlodi 6 ta raqamli kodni ishlab chiqaradi va ishlatadi, lekin menda mavjud bo'lgan apparat tufayli men oxirgi 2 ta raqamni kesib, 4 raqamini ko'rsatishni va ishlatishni tanladim. xavfsizlik.

Umumiy ma'lumot

Bu loyiha har 30 sekundda yangi kod ishlab chiqariladi, bu oldindan o'rnatilgan kalit va joriy vaqt (real vaqtda soat modulidan foydalanish kuzatiladi) va tugma bosilganda uni displeyda aks ettiradi. Eng ko'p ishlatiladigan holat-autentifikatsiya qilish uchun vaqtga asoslangan bir martalik parol (TOTP) va HMAC-ga asoslangan bir martalik parol (HOTP) asosida ikki faktorli tekshirish.

TOTP-bu umumiy maxfiy kalitdan bir martalik parolni va joriy vaqtni hisoblaydigan algoritm. HTOP-bu bir martalik parolni yaratish uchun HMAC algoritmidan foydalanadigan algoritm.

Google, Microsoft va Steam kabi kompaniyalar allaqachon ikki faktorli autentifikatsiya uchun TOTP texnologiyasidan foydalanadilar

Qiziqarli havolalar

Google foydalanuvchilarni tasdiqlash uchun ushbu texnologiyadan qanday foydalanayotganini tushuntiruvchi maqola-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

JavaScript -ni HOTP va TOTP -dan foydalanish, bu loyihadan foydalangan holda dastur yaratishda ishlatilishi mumkin -

Arduino kriptografik kutubxonasi ushbu loyihada ishlatilgan -

TOTP qog'ozi -

Mutaxassislik darajasi

Bu yo'riqnoma xavfsizlikka qiziqqan va TOTP ishlab chiqarishga yaxshi apparat komponentini kiritmoqchi bo'lganlar uchun mo'ljallangan. Bu ko'rsatma elektronika diagrammasini va oddiy dasturlashni talqin qilish asoslarini allaqachon tushungan auditoriya uchun yozilgan, lekin agar siz ushbu ko'rsatmaga amal qilishni rejalashtirgan bo'lsangiz, tajribangiz bo'lmasa, xavotir olmang va o'zingizni qiziqtirgan savollarga javob bering. Izohlar! Bundan tashqari, loyiha tajribali ishlab chiqaruvchilar uchun ham qiziqarli bo'lishi mumkin, chunki yakuniy mahsulot nafaqat men uchun yoqimli bo'lak, balki kengayish va yangi funktsiyalar uchun ham katta qiyinchiliklarga ega.

Ta'minotlar

Materiallar:

  1. 1 marta Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 real vaqtda soat (RTC) moduli (Amazon)
  3. 1x SH5461AS umumiy katodli 4-raqamli 7-segmentli (Amazon)
  4. 1x tugmachasi (Amazon)
  5. 1x 10k rezistor (Amazon)
  6. Ixtiyoriy 1x 5x7 sm PCB (Amazon)
  7. Ixtiyoriy PCBga lehimlash uchun sim
  8. Ixtiyoriy 1x sinov paneli (Amazon)

1 -qadam: yig'ish va sinov

O'rnatish va sinov
O'rnatish va sinov
O'rnatish va sinov
O'rnatish va sinov
O'rnatish va sinov
O'rnatish va sinov

Non panelidagi barcha komponentlarni yig'ing va ularni biriktirilgan simlar sxemasiga muvofiq simlang (Fritzing fayli shu erda).

Arduino IDE o'rnatilganligiga ishonch hosil qiling (agar bo'lmasa, uni Internetda topish mumkin) va quyidagi kutubxonalarni o'rnating:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Qo'shilgan eskizni yuklab oling (bu erga ham kirish mumkin: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) va Arduino IDE yordamida oching. Bu havolani oching (https://www.lucadentella.it/OTP/) va hisob nomi maydoniga istalgan ismni kiriting va keyingi maydonga maxsus maxfiy kalitni (10 belgidan iborat) kiriting, bu ikkala qiymatni ham saqlaganingizga ishonch hosil qiling. zaxira qilish uchun xavfsiz joyda. "Arduino HEX array:" maydonining tarkibini nusxa ko'chiring va Arduino tahrirlovchisiga o'ting, 25 -qatordagi qatorni (hmacKey) saytdan nusxa ko'chiring.

Har bir simli ulanishni ikki marta tekshirgandan so'ng, RTC modulida tanga katakchasi borligiga ishonch hosil qiling va Arduino-ni noutbukga USB mini-kabeli yordamida ulang va biriktirilgan eskizni yuklang.

Yuklagandan so'ng, tugma bosilganda, ekranda raqam paydo bo'lishi kerak. Agar siz Google Authenticator ilovasini smartfonga yuklab olsangiz va QEX kodini skanerlasangiz yoki ilovaga "Google Authenticator kodini" yozsangiz, HEX qatorini yaratish uchun ishlatilgan saytga qaytsangiz, ilovada ko'rsatilgan raqamni ko'rasiz. Agar hamma narsa to'g'ri ishlayotgan bo'lsa, tugmani bosganingizda, ko'rsatilgan 4 ta raqam smartfon ilovasida ko'rsatilgan joriy kodning birinchi 4 -raqamiga mos kelishi kerak. Agar bunday bo'lmasa, Arduino kodini yuklash uchun ishlatiladigan kompyuter UTC vaqtiga o'rnatilganligiga ishonch hosil qiling va qaytadan urinib ko'ring.

2 -qadam: PCBga o'tkazish

PCBga o'tkazish
PCBga o'tkazish
PCBga o'tkazish
PCBga o'tkazish

Hamma narsa tartibda ekanligiga ishonch hosil qilgandan so'ng, siz komponentlarni tenglikka o'tkazib, hamma narsani lehimlashingiz mumkin. Men Fritzing fayliga qo'shimcha ravishda tenglikni diagrammasini biriktirdim (bu erda mavjud). E'tibor bering, men estetika uchun barcha komponentlarni taxtaning yuqori qismiga joylashtirdim, lekin uni tagiga o'rnatib, keyin uni toza qilish uchun qandaydir korpusga yopishtirish mumkin. Men birlik uchun vaqtinchalik quti yaratish uchun tenglikni yon tomonlariga Sharpie bilan bo'yalgan popsicle tayoqchalarini kesib oldim. Boshqa ixtiyoriy qadam-9 voltli akkumulyator qisqichini Arduino-ning VIN va GND pinlariga ulash, bu esa batareyadan ishlaydi.

3 -qadam: Bajarildi

Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!
Bajarildi!

Mening tugallangan generatorim shunday bo'ldi, agar siz uni kuzatib, o'zingiz yaratgan bo'lsangiz, quyida baham ko'ring!

Agar siz o'zingizga ma'qul bo'lsa, STEM tanlovi uchun ko'rsatmaga ovoz berishingizga ishonch hosil qiling va o'zingizni qiziqtirgan savollaringizni quyida qoldiring!

Tavsiya: