Isi kandungan:

Arduino TOTP Generator: 3 Langkah
Arduino TOTP Generator: 3 Langkah

Video: Arduino TOTP Generator: 3 Langkah

Video: Arduino TOTP Generator: 3 Langkah
Video: How TOTP (Time-based One-time Password Algorithm) Works for 2 Factor Authentication 2024, Julai
Anonim
Penjana TOTP Arduino
Penjana TOTP Arduino
Penjana TOTP Arduino
Penjana TOTP Arduino
Penjana TOTP Arduino
Penjana TOTP Arduino

Inspirasi

Mempunyai rakan yang berminat dengan kriptografi dan keselamatan, saya ingin membuat hadiah ulang tahun yang sempurna.

* Ini adalah projek yang saya buat sebagai hadiah ulang tahun dan dibuat dalam kekangan masa yang ketat (maafkan kerja yang tidak kemas)

CATATAN: Generasi TOTP yang digunakan dalam projek ini menghasilkan dan menggunakan kod 6 digit, tetapi kerana perkakasan saya yang ada sekarang, saya memilih untuk memotong 2 digit dan paparan dan menggunakan 4, boleh dikatakan (tetapi tidak banyak) mengurangkan keselamatan.

Maklumat Am

Projek ini menghasilkan kod baru setiap 30 saat menggunakan kunci yang telah dipakai sebelumnya dan masa semasa (yang dijejaki menggunakan modul jam masa nyata) dan memaparkannya di paparan apabila butang ditekan. Kes penggunaan yang paling biasa adalah pengesahan dua faktor berdasarkan Kata Laluan Satu Masa Berasaskan Masa (TOTP) dan Kata Laluan Satu Masa (HOTP) berdasarkan HMAC untuk pengesahan.

TOTP adalah algoritma yang mengira kata laluan satu kali dari kunci rahsia yang dikongsi dan masa semasa. HTOP adalah algoritma yang menggunakan algoritma HMAC untuk menghasilkan kata laluan sekali sahaja.

Syarikat seperti Google, Microsoft, dan Steam sudah menggunakan teknologi TOTP untuk pengesahan dua faktor mereka

Pautan Menarik

Artikel yang menerangkan bagaimana Google menggunakan teknologi ini untuk mengesahkan pengguna -

Pelaksanaan JavaScript HOTP dan TOTP yang mungkin digunakan ketika membuat perisian yang menggunakan projek ini -

Perpustakaan kriptografi untuk Arduino yang digunakan dalam projek ini -

Kertas TOTP -

Tahap Kepakaran

Instructable ini adalah untuk peminat yang berminat dengan keselamatan dan mungkin ingin menerapkan komponen perkakasan yang bagus untuk generasi TOTP mereka. Instruksional ini ditulis untuk penonton yang sudah memahami asas-asas menafsirkan diagram elektronik dan pengaturcaraan asas, tetapi jika anda berencana untuk mengikuti Instructable ini dengan tepat, jangan risau jika anda tidak mempunyai pengalaman, dan jangan ragu untuk mengemukakan soalan di komen! Lebih jauh lagi, projek ini dapat menarik bagi pembuat yang lebih berpengalaman juga kerana produk akhir bukan sahaja senang dimiliki (menurut pendapat saya), tetapi mempunyai begitu banyak potensi pengembangan dan ciri baru tanpa banyak kerumitan.

Bekalan

Bahan:

  1. 1x Arduino Nano (Amazon)
  2. 1x Modul Jam Sebenar (RTC) DS3231 AT24C32 (Amazon)
  3. 1x SH5461AS Common Cathode 4 digit 7-segmen (Amazon)
  4. Butang Tekan 1x (Amazon)
  5. Perintang 1x 10k (Amazon)
  6. PILIHAN 1x 5x7cm PCB (Amazon)
  7. Kawat PILIHAN untuk pematerian ke PCB
  8. Papan roti 1x PILIHAN untuk ujian (Amazon)

Langkah 1: Pemasangan dan Pengujian

Pemasangan dan Pengujian
Pemasangan dan Pengujian
Pemasangan dan Pengujian
Pemasangan dan Pengujian
Pemasangan dan Pengujian
Pemasangan dan Pengujian

Pasang semua komponen di papan roti dan kawatnya mengikut rajah pendawaian yang dilampirkan (fail Fritzing ada di sini).

Pastikan anda memasang Arduino IDE (ia boleh didapati dalam talian jika anda tidak) dan pasangkan perpustakaan berikut:

github.com/lucadentella/TOTP-Arduino

github.com/adafruit/RTClib

github.com/maniacbug/Cryptosuite

Muat turun lakaran yang dilampirkan (juga dapat diakses di sini: https://gist.github.com/shiv213/569f01a54988cb0207966be9a65cc5ab), dan buka dengan menggunakan Arduino IDE. Buka pautan ini (https://www.lucadentella.it/OTP/) dan masukkan sebarang nama di medan nama akaun, dan kunci rahsia tersuai (panjang 10 aksara) di bidang berikut, pastikan untuk menyimpan kedua-dua nilai tersebut di tempat yang selamat untuk sandaran. Salin kandungan bidang "Arduino HEX array:", dan beralih kembali ke editor Arduino, menggantikan susunan pada baris 25 (hmacKey) dengan yang anda salin dari laman web ini.

Setelah memeriksa semula setiap sambungan wayar, pastikan modul RTC mempunyai sel duit syiling di dalamnya, dan sambungkan Arduino ke komputer riba anda menggunakan kabel mini USB, dan muat naik lakaran yang dilampirkan.

Setelah memuat naik, apabila butang ditekan, angka akan muncul di layar. Sekiranya anda memuat turun aplikasi Google Authenticator pada telefon pintar dan kembali ke laman web yang digunakan untuk menghasilkan array HEX, mengimbas kod QR atau mengetik "kod Google Authenticator" ke dalam aplikasi, anda akan melihat nombor yang ditunjukkan dalam aplikasi. Sekiranya semuanya berfungsi dengan betul, semasa anda menekan butang tekan, 4 digit yang dipaparkan harus sesuai dengan 4 pertama kod semasa yang ditunjukkan pada aplikasi telefon pintar. Sekiranya ini tidak berlaku, pastikan komputer yang digunakan untuk memuat naik kod Arduino ditetapkan ke waktu UTC dan cuba lagi.

Langkah 2: Memindahkan ke PCB

Memindahkan ke PCB
Memindahkan ke PCB
Memindahkan ke PCB
Memindahkan ke PCB

Setelah memastikan semuanya berfungsi dengan baik, anda boleh memindahkan komponen ke PCB dan menyatukan semuanya bersama-sama namun kelihatannya sesuai. Saya telah melampirkan gambar rajah PCB sebagai tambahan kepada fail Fritzing (tersedia di sini). Perhatikan bahawa saya meletakkan semua komponen di bahagian atas papan untuk estetika, tetapi juga boleh dipasang di bawahnya dan kemudian dilampirkan di beberapa jenis perumahan untuk menjadikannya lebih bersih. Saya memotong dan melekat batang popsicle yang dilekatkan dengan Sharpie ke sisi PCB untuk membuat kotak sementara untuk unit. Langkah pilihan lain ialah memasang klip bateri 9 volt ke pin VIN dan GND Arduino, menjadikannya dikendalikan bateri.

Langkah 3: Selesai

Selesai!
Selesai!
Selesai!
Selesai!
Selesai!
Selesai!

Ini adalah bagaimana penjana saya yang lengkap, jika anda mengikuti dan membuatnya sendiri, bagikan di bawah!

Pastikan anda memilih Instructable saya untuk Peraduan STEM jika anda rasa sesuai, dan tinggalkan komen / sebarang pertanyaan yang mungkin ada di bawah!

Disyorkan: