Სარჩევი:

Arduino TOTP გენერატორი: 3 ნაბიჯი
Arduino TOTP გენერატორი: 3 ნაბიჯი

ვიდეო: Arduino TOTP გენერატორი: 3 ნაბიჯი

ვიდეო: Arduino TOTP გენერატორი: 3 ნაბიჯი
ვიდეო: TOTP Arduino authenticator with USB keyboard emulation 2024, ნოემბერი
Anonim
Arduino TOTP გენერატორი
Arduino TOTP გენერატორი
Arduino TOTP გენერატორი
Arduino TOTP გენერატორი
Arduino TOTP გენერატორი
Arduino TOTP გენერატორი

Შთაგონების

კრიპტოგრაფიითა და უსაფრთხოებით დაინტერესებული მეგობრის მქონე, მინდოდა დაბადების დღის სრულყოფილი საჩუქრის შექმნა.

*ეს არის პროექტი, რომელიც მე გავაკეთე დაბადების დღის საჩუქრად და შეიქმნა მჭიდრო დროში (აპატიეთ ბინძურ მუშაობას)

შენიშვნა: TOTP თაობა, რომელიც გამოიყენება ამ პროექტში წარმოქმნის და იყენებს 6 ნიშნა კოდს, მაგრამ ჩემი ამჟამინდელი ტექნიკის გამო, მე ავირჩიე 2 ციფრის მოწყვეტა და 4-ის ჩვენება და გამოყენება, სავარაუდოდ (მაგრამ არა დიდად) შემცირება უსაფრთხოება.

Ზოგადი ინფორმაცია

ეს პროექტი წარმოქმნის ახალ კოდს ყოველ 30 წამში წინასწარ განსაზღვრული გასაღების და მიმდინარე დროის გამოყენებით (რომელიც თვალყურს ადევნებს რეალურ დროში საათის მოდულის გამოყენებას) და აჩვენებს მას ეკრანზე ღილაკის დაჭერისას. ყველაზე გავრცელებული გამოყენების შემთხვევა იქნება ორფაქტორიანი გადამოწმება, რომელიც დაფუძნებულია დროზე დაფუძნებულ ერთჯერადი პაროლზე (TOTP) და HMAC დაფუძნებულ ერთჯერადი პაროლზე (HOTP) ავტორიზაციისათვის.

TOTP არის ალგორითმი, რომელიც ითვლის ერთჯერადი პაროლის გაზიარებულ საიდუმლო გასაღებს და მიმდინარე დროს. HTOP არის ალგორითმი, რომელიც იყენებს HMAC ალგორითმს ერთჯერადი პაროლის შესაქმნელად.

კომპანიები, როგორიცაა Google, Microsoft და Steam უკვე იყენებენ TOTP ტექნოლოგიას მათი ორფაქტორიანი ავტორიზაციისათვის

საინტერესო ბმულები

სტატია, რომელიც განმარტავს, თუ როგორ იყენებს Google ამ ტექნოლოგიას მომხმარებლების ავთენტიფიკაციისთვის-https://medium.com/@tilaklodha/google-authenticator-and-how-it-works-2933a4ece8c2

HOTP და TOTP JavaScript დანერგვა, რომელიც შეიძლება გამოყენებულ იქნას ამ პროექტის გამოყენებით პროგრამული უზრუნველყოფის შექმნისას -

კრიტუოგრაფიული ბიბლიოთეკა Arduino– სთვის, რომელიც გამოიყენება ამ პროექტში -

TOTP ნაშრომი -

ექსპერტიზის დონე

ეს ინსტრუქცია განკუთვნილია ენთუზიასტებისთვის, რომლებიც დაინტერესებულნი არიან უსაფრთხოებით და შეიძლება სურთ თავიანთი TOTP– ის თაობაზე განახორციელონ კარგი ტექნიკური კომპონენტი. ეს ინსტრუქცია დაწერილია აუდიტორიისათვის, რომელსაც უკვე ესმის ელექტრონული დიაგრამების და ელემენტარული პროგრამირების ინტერპრეტაციის საფუძვლები, მაგრამ თუ თქვენ ზუსტად აპირებთ ამ ინსტრუქციის ზუსტად შესრულებას, არ ინერვიულოთ, თუ არ გაქვთ გამოცდილება და მოგერიდებათ კითხვების დასმა. კომენტარები! გარდა ამისა, პროექტი შეიძლება იყოს საინტერესო უფრო გამოცდილი შემქმნელებისთვისაც, ვინაიდან საბოლოო პროდუქტი არა მხოლოდ სასიამოვნო ნაჭერია (ჩემი აზრით), არამედ აქვს ამდენი პოტენციალი გაფართოებისა და ახალი მახასიათებლების გარეშე.

მარაგები

მასალები:

  1. 1x Arduino Nano (ამაზონი)
  2. 1x DS3231 AT24C32 რეალურ დროში საათი (RTC) მოდული (ამაზონი)
  3. 1x SH5461AS საერთო კათოდი 4 ციფრიანი 7 სეგმენტი (ამაზონი)
  4. 1x ღილაკი (ამაზონი)
  5. 1x 10k რეზისტორი (ამაზონი)
  6. სურვილისამებრ 1x 5x7 სმ PCB (ამაზონი)
  7. სურვილისამებრ მავთული PCB– ზე შესადუღებლად
  8. სურვილისამებრ 1x Breadboard ტესტირებისთვის (ამაზონი)

ნაბიჯი 1: შეკრება და ტესტირება

შეკრება და ტესტირება
შეკრება და ტესტირება
შეკრება და ტესტირება
შეკრება და ტესტირება
შეკრება და ტესტირება
შეკრება და ტესტირება

შეაგროვეთ ყველა კომპონენტი პურის დაფაზე და დააკავშირეთ ისინი თანდართული გაყვანილობის დიაგრამის მიხედვით (გაყინვის ფაილი აქ არის).

დარწმუნდით, რომ გაქვთ 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 მასივი:" ველის შინაარსი და დაუბრუნდით Arduino რედაქტორს, შეცვალეთ მასივი 25 -ე ხაზზე (hmacKey) იმით, რაც თქვენ დააკოპირეთ საიტიდან.

ყოველი მავთულის კავშირის ორმაგი შემოწმების შემდეგ, დარწმუნდით, რომ RTC მოდულს აქვს მონეტის უჯრედი და დაუკავშირეთ Arduino თქვენს ლეპტოპს USB მინი კაბელის გამოყენებით და ატვირთეთ თანდართული ესკიზი.

ატვირთვის შემდეგ, ღილაკზე დაჭერისას, ნომერი უნდა გამოჩნდეს ეკრანზე. თუ ჩამოტვირთავთ Google Authenticator აპი სმარტფონზე და დაუბრუნდებით საიტს, რომელიც გამოიყენება HEX მასივის გენერირებისთვის, QR კოდის სკანირებისას ან აპლიკაციაში "Google Authenticator code" აკრეფისას, თქვენ უნდა ნახოთ აპლიკაციაში ნაჩვენები ნომერი. თუ ყველაფერი სწორად მუშაობს, ღილაკზე დაჭერისას ნაჩვენები 4 ციფრი უნდა ემთხვეოდეს სმარტფონის აპლიკაციაში ნაჩვენები მიმდინარე კოდის პირველ 4 -ს. თუ ეს ასე არ არის, დარწმუნდით, რომ კომპიუტერი, რომელიც გამოიყენება Arduino კოდის ასატვირთად, დაყენებულია UTC დროზე და სცადეთ ხელახლა.

ნაბიჯი 2: გადატანა PCB– ზე

PCB– ზე გადატანა
PCB– ზე გადატანა
PCB– ზე გადატანა
PCB– ზე გადატანა

მას შემდეგ რაც დარწმუნდებით, რომ ყველაფერი მწყობრშია, თქვენ შეგიძლიათ კომპონენტები გადაიტანოთ PCB– ზე და შეაერთოთ ყველაფერი ერთად, როგორც მოგეჩვენებათ. მე დაურთო PCB დიაგრამა Fritzing ფაილის გარდა (ხელმისაწვდომია აქ). გაითვალისწინეთ, რომ ყველა კომპონენტი მოვათავსე დაფის თავზე ესთეტიკისათვის, მაგრამ ასევე შესაძლებელია მისი ქვედა ნაწილში დამონტაჟება და შემდეგ რაიმე სახის კორპუსში ჩასმა, რათა ის უფრო სუფთა იყოს. მე მოჭრილი და ცხელი წებოვანი popsicle ჩხირები ფერადი Sharpie ერთად მხარეს PCB შექმნა იმპროვიზირებული ყუთი ერთეული. კიდევ ერთი არჩევითი ნაბიჯი არის 9 ვოლტიანი ბატარეის სამაგრის მიმაგრება Arduino– ს VIN და GND ქინძისთავებზე, რაც აკუმულატორზე იმუშავებს.

ნაბიჯი 3: დასრულდა

დასრულდა!
დასრულდა!
დასრულდა!
დასრულდა!
დასრულდა!
დასრულდა!

ასე აღმოჩნდა ჩემი დასრულებული გენერატორი, თუ თქვენ მიჰყევით და თავად შექმენით ერთი, გააზიარეთ ქვემოთ!

დარწმუნდით, რომ ხმას აძლევთ ჩემს Instructable- ს STEM კონკურსზე, თუ საჭიროდ ჩათვლით და დატოვეთ კომენტარი/ნებისმიერი შეკითხვა, რომელიც შეიძლება გქონდეთ ქვემოთ!

გირჩევთ: