สารบัญ:

Arduino TOTP Generator: 3 ขั้นตอน
Arduino TOTP Generator: 3 ขั้นตอน

วีดีโอ: Arduino TOTP Generator: 3 ขั้นตอน

วีดีโอ: Arduino TOTP Generator: 3 ขั้นตอน
วีดีโอ: How TOTP (Time-based One-time Password Algorithm) Works for 2 Factor Authentication 2024, พฤศจิกายน
Anonim
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator
Arduino TOTP Generator

แรงบันดาลใจ

การมีเพื่อนที่มีความสนใจในการเข้ารหัสและการรักษาความปลอดภัย ฉันต้องการสร้างของขวัญวันเกิดที่สมบูรณ์แบบ

*นี่เป็นโปรเจ็กต์ที่ฉันทำขึ้นเพื่อเป็นของขวัญวันเกิดและสร้างขึ้นภายในเวลาจำกัด (ขออภัยในฝีมือที่เลอะเทอะ)

หมายเหตุ: รุ่น TOTP ที่ใช้ในโปรเจ็กต์นี้สร้างและใช้รหัส 6 หลัก แต่เนื่องจากฮาร์ดแวร์ที่มีอยู่ในปัจจุบันของฉัน ฉันจึงเลือกที่จะตัดตัวเลข 2 ตัวต่อท้ายและแสดงผลและใช้ 4 อย่างมีเนื้อหา (แต่ไม่มาก) ลด ความปลอดภัย.

ข้อมูลทั่วไป

โปรเจ็กต์นี้สร้างรหัสใหม่ทุก ๆ 30 วินาทีโดยใช้คีย์ที่แชร์ล่วงหน้าและเวลาปัจจุบัน (ซึ่งติดตามการใช้โมดูลนาฬิกาแบบเรียลไทม์) และแสดงบนจอแสดงผลเมื่อกดปุ่ม กรณีการใช้งานที่พบบ่อยที่สุดคือการตรวจสอบสองปัจจัยตามรหัสผ่านครั้งเดียวตามเวลา (TOTP) และรหัสผ่านครั้งเดียวตาม HMAC (HOTP) สำหรับการตรวจสอบสิทธิ์

TOTP เป็นอัลกอริทึมที่คำนวณรหัสผ่านแบบใช้ครั้งเดียวจากรหัสลับที่ใช้ร่วมกันและเวลาปัจจุบัน HTOP เป็นอัลกอริทึมที่ใช้อัลกอริทึม HMAC เพื่อสร้างรหัสผ่านแบบใช้ครั้งเดียว

บริษัทต่างๆ เช่น Google, Microsoft และ Steam ใช้เทคโนโลยี TOTP สำหรับการตรวจสอบสิทธิ์แบบสองปัจจัยแล้ว

ลิงค์ที่น่าสนใจ

บทความอธิบายวิธีที่ Google ใช้เทคโนโลยีนี้ในการตรวจสอบสิทธิ์ผู้ใช้ -

การใช้ JavaScript ของ HOTP และ TOTP ที่อาจใช้เมื่อสร้างซอฟต์แวร์โดยใช้โครงการนี้ -

ห้องสมุด Crytographic สำหรับ Arduino ที่ใช้ในโครงการนี้ -

เอกสาร TOTP -

ระดับความเชี่ยวชาญ

คำแนะนำนี้มีไว้สำหรับผู้ที่สนใจเรื่องความปลอดภัยและอาจต้องการใช้ส่วนประกอบฮาร์ดแวร์ที่ดีในการสร้าง TOTP คำแนะนำนี้เขียนขึ้นสำหรับผู้ชมที่เข้าใจพื้นฐานของการตีความไดอะแกรมอิเล็กทรอนิกส์และการเขียนโปรแกรมพื้นฐานแล้ว แต่ถ้าคุณวางแผนที่จะปฏิบัติตามคำแนะนำนี้อย่างตรงไปตรงมาไม่ต้องกังวลหากคุณไม่มีประสบการณ์และอย่าลังเลที่จะถามคำถามลงใน ความคิดเห็น! นอกจากนี้ โปรเจ็กต์ยังน่าสนใจสำหรับผู้ผลิตที่มีประสบการณ์มากขึ้นเช่นกัน เนื่องจากผลิตภัณฑ์ขั้นสุดท้ายไม่ได้เป็นเพียงชิ้นส่วนที่ดีเท่านั้น (ในความคิดของฉัน) แต่มีศักยภาพมากสำหรับการขยายและคุณสมบัติใหม่โดยไม่ต้องยุ่งยากมากนัก

เสบียง

วัสดุ:

  1. 1x Arduino นาโน (อเมซอน)
  2. 1x DS3231 AT24C32 โมดูลนาฬิกาเรียลไทม์ (RTC) (Amazon)
  3. 1x SH5461AS แคโทดทั่วไป 4 หลัก 7 ส่วน (Amazon)
  4. 1x ปุ่มกด (อเมซอน)
  5. ตัวต้านทาน 1x 10k (อเมซอน)
  6. ตัวเลือก 1x 5x7cm PCB (Amazon)
  7. ลวดเสริมสำหรับบัดกรีกับ PCB
  8. ตัวเลือก 1x Breadboard สำหรับการทดสอบ (Amazon)

ขั้นตอนที่ 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 สแกนโค้ด QR หรือพิมพ์ "โค้ด Google Authenticator" ลงในแอป คุณจะเห็นตัวเลขที่แสดงในแอป หากทุกอย่างทำงานอย่างถูกต้อง เมื่อคุณกดปุ่ม ตัวเลข 4 หลักที่แสดงควรตรงกับ 4 ตัวแรกของรหัสปัจจุบันที่แสดงบนแอปสมาร์ทโฟน หากไม่เป็นเช่นนั้น ตรวจสอบให้แน่ใจว่าคอมพิวเตอร์ที่ใช้อัปโหลดโค้ด Arduino ถูกตั้งค่าเป็นเวลา UTC แล้วลองอีกครั้ง

ขั้นตอนที่ 2: ถ่ายโอนไปยัง PCB

กำลังถ่ายโอนไปยัง PCB
กำลังถ่ายโอนไปยัง PCB
กำลังถ่ายโอนไปยัง PCB
กำลังถ่ายโอนไปยัง PCB

หลังจากตรวจสอบให้แน่ใจว่าทุกอย่างใช้งานได้ดีแล้ว คุณสามารถถ่ายโอนส่วนประกอบไปยัง PCB และประสานทุกอย่างเข้าด้วยกันตามที่คุณเห็นว่าเหมาะสม ฉันได้แนบไดอะแกรม PCB นอกเหนือจากไฟล์ Fritzing (มีให้ที่นี่) โปรดทราบว่าฉันวางส่วนประกอบทั้งหมดไว้ที่ด้านบนของบอร์ดเพื่อความสวยงาม แต่ยังสามารถติดตั้งไว้ข้างใต้แล้วปิดไว้ในเคสบางประเภทเพื่อให้บอร์ดสะอาดขึ้น ฉันตัดและติดไอติมแท่งที่ติดกาวร้อนด้วย Sharpie ที่ด้านข้างของ PCB เพื่อสร้างกล่องชั่วคราวสำหรับยูนิต อีกขั้นตอนที่เป็นทางเลือกคือการติดคลิปแบตเตอรี่ขนาด 9 โวลต์เข้ากับพิน VIN และ GND ของ Arduino ทำให้ใช้แบตเตอรี่ได้

ขั้นตอนที่ 3: เสร็จแล้ว

ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!

นี่คือวิธีที่ตัวสร้างของฉันเสร็จสมบูรณ์ หากคุณทำตามและสร้างขึ้นเอง แบ่งปันด้านล่าง!

อย่าลืมโหวต Instructable ของฉันสำหรับการประกวด STEM หากคุณเห็นว่าเหมาะสมและแสดงความคิดเห็น / คำถามใด ๆ ที่คุณอาจมีด้านล่าง!

แนะนำ: