İçindekiler:

Arduino TOTP Jeneratör: 3 Adım
Arduino TOTP Jeneratör: 3 Adım

Video: Arduino TOTP Jeneratör: 3 Adım

Video: Arduino TOTP Jeneratör: 3 Adım
Video: Amazing arduino project 2024, Temmuz
Anonim
Arduino TOTP Jeneratör
Arduino TOTP Jeneratör
Arduino TOTP Jeneratör
Arduino TOTP Jeneratör
Arduino TOTP Jeneratör
Arduino TOTP Jeneratör

Esin

Kriptografi ve güvenlikle ilgilenen bir arkadaşım olduğu için mükemmel bir doğum günü hediyesi yaratmak istedim.

*Bu bir doğum günü hediyesi olarak yaptığım bir projedir ve kısıtlı zaman içinde oluşturulmuştur (dağınık işçilik için kusura bakmayın)

NOT: Bu projede kullanılan TOTP nesli 6 haneli kodlar üretir ve kullanır, ancak elimdeki mevcut donanımım nedeniyle, sondaki 2 haneyi kesmeyi ve 4'ü görüntülemeyi ve kullanmayı seçtim, tartışmalı olarak (ama büyük ölçüde değil) azaltarak güvenlik.

Genel bilgi

Bu proje, önceden paylaşılmış bir anahtar ve (gerçek zamanlı saat modülünü kullanarak izlenen) geçerli saati kullanarak her 30 saniyede bir yeni bir kod üretir ve düğmeye basıldığında bunu ekranda görüntüler. En yaygın kullanım durumu, kimlik doğrulama için Zamana Dayalı Tek Kullanımlık Parolaya (TOTP) ve HMAC tabanlı Tek Kullanımlık Parolaya (HOTP) dayalı iki faktörlü doğrulama olacaktır.

TOTP, paylaşılan bir gizli anahtardan ve o anki zamandan tek seferlik bir şifre hesaplayan bir algoritmadır. HTOP, bir kerelik parola oluşturmak için HMAC algoritmasını kullanan bir algoritmadır.

Google, Microsoft ve Steam gibi şirketler, iki faktörlü kimlik doğrulama için zaten TOTP teknolojisini kullanıyor

İlginç Bağlantılar

Google'ın kullanıcıların kimliğini doğrulamak için bu teknolojiyi nasıl kullandığını açıklayan makale -

Bu projeyi kullanarak yazılım oluştururken kullanılabilecek HOTP ve TOTP'nin JavaScript uygulaması -

Bu projede kullanılan Arduino için kriptografik kütüphane -

TOTP Kağıdı -

Uzmanlık Düzeyi

Bu Eğitilebilir Tablo, güvenlikle ilgilenen ve TOTP'lerinin oluşturulmasına güzel bir donanım bileşeni uygulamak isteyebilecek meraklılar içindir. Bu talimat, elektronik diyagramlarını ve temel programlamayı yorumlamanın temellerini zaten anlayan bir kitle için yazılmıştır, ancak bu Eğitilebilir Tabloyu tam olarak takip etmeyi planlıyorsanız, deneyiminiz yoksa endişelenmeyin ve aşağıda soru sormaktan çekinmeyin. yorumlar! Ayrıca, proje daha deneyimli yapımcılar için de ilgi çekici olabilir, çünkü nihai ürün sadece etrafta olması güzel bir parça (bence) değil, aynı zamanda çok fazla güçlük çekmeden genişleme ve yeni özellikler için çok fazla potansiyele sahip.

Gereçler

Malzemeler:

  1. 1x Arduino Nano (Amazon)
  2. 1x DS3231 AT24C32 Gerçek Zamanlı Saat (RTC) Modülü (Amazon)
  3. 1x SH5461AS Ortak Katot 4 haneli 7-segment (Amazon)
  4. 1x Buton (Amazon)
  5. 1x 10k Direnç (Amazon)
  6. OPSİYONEL 1x 5x7cm PCB (Amazon)
  7. OPSİYONEL PCB'ye lehimleme için tel
  8. İSTEĞE BAĞLI 1x Test için Breadboard (Amazon)

Adım 1: Montaj ve Test

Montaj ve Test
Montaj ve Test
Montaj ve Test
Montaj ve Test
Montaj ve Test
Montaj ve Test

Tüm bileşenleri devre tahtası üzerinde birleştirin ve ekteki kablo şemasına göre kablolayın (Fritzing dosyası burada).

Arduino IDE'nin kurulu olduğundan emin olun (eğer kurmadıysanız çevrimiçi olarak bulunabilir) ve aşağıdaki kitaplıkları kurun:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Ekli taslağı indirin (buradan da erişilebilir: https://Gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab) ve Arduino IDE'yi kullanarak açın. Bu bağlantıyı (https://www.lucadentella.it/OTP/) açın ve hesap adı alanına herhangi bir ad ve aşağıdaki alana özel bir gizli anahtar (10 karakter uzunluğunda) girerek bu değerlerin her ikisini de kaydettiğinizden emin olun. yedekleme için güvenli bir yerde. "Arduino HEX dizisi:" alanının içeriğini kopyalayın ve 25. satırdaki (hmacKey) diziyi siteden kopyaladığınız diziyle değiştirerek Arduino düzenleyicisine geri dönün.

Her kablo bağlantısını iki kez kontrol ettikten sonra, RTC modülünün içinde bir madeni para hücresi olduğundan emin olun ve Arduino'yu bir USB mini kablo kullanarak dizüstü bilgisayarınıza bağlayın ve ekteki çizimi yükleyin.

Yüklemeden sonra butona basıldığında ekranda bir sayı görünmelidir. Google Authenticator uygulamasını bir akıllı telefona indirir ve HEX dizisini oluşturmak için kullanılan siteye geri dönerseniz, QR kodunu tararsanız veya uygulamaya "Google Authenticator kodunu" yazarsanız, uygulamada gösterilen bir sayı görmelisiniz. Her şey doğru çalışıyorsa, düğmeye bastığınızda görüntülenen 4 hane, akıllı telefon uygulamasında gösterilen geçerli kodun ilk 4'üyle eşleşmelidir. Durum böyle değilse, Arduino kodunu yüklemek için kullanılan bilgisayarın UTC saatine ayarlandığından emin olun ve tekrar deneyin.

Adım 2: PCB'ye Aktarma

PCB'ye aktarma
PCB'ye aktarma
PCB'ye aktarma
PCB'ye aktarma

Her şeyin çalıştığından emin olduktan sonra, bileşenleri PCB'ye aktarabilir ve uygun göründüğünüz şekilde her şeyi birlikte lehimleyebilirsiniz. Fritzing dosyasına ek olarak bir PCB şeması ekledim (burada mevcuttur). Estetik için tüm bileşenleri panonun üstüne yerleştirdiğimi, ancak daha temiz hale getirmek için altına monte edilebileceğini ve ardından bir tür muhafaza içine yerleştirilebileceğini unutmayın. Ünite için geçici bir kutu oluşturmak için Sharpie ile renklendirilmiş buzlu şeker çubuklarını PCB'nin yanlarına kesip sıcak yapıştırdım. Diğer bir isteğe bağlı adım, Arduino'nun VIN ve GND pinlerine 9 voltluk bir pil klipsi takarak pille çalışır hale getirmektir.

Adım 3: Bitti

Bitti!
Bitti!
Bitti!
Bitti!
Bitti!
Bitti!

Tamamlanan jeneratörüm böyle oldu, takip edip kendin yaptıysan aşağıda paylaş!

Uygun görürseniz, Eğitilebilirliğimi STEM Yarışması için oyladığınızdan emin olun ve aşağıya bir yorum / sorularınızı bırakın!

Önerilen: