สารบัญ:
วีดีโอ: Arduino TOTP Generator: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
แรงบันดาลใจ
การมีเพื่อนที่มีความสนใจในการเข้ารหัสและการรักษาความปลอดภัย ฉันต้องการสร้างของขวัญวันเกิดที่สมบูรณ์แบบ
*นี่เป็นโปรเจ็กต์ที่ฉันทำขึ้นเพื่อเป็นของขวัญวันเกิดและสร้างขึ้นภายในเวลาจำกัด (ขออภัยในฝีมือที่เลอะเทอะ)
หมายเหตุ: รุ่น TOTP ที่ใช้ในโปรเจ็กต์นี้สร้างและใช้รหัส 6 หลัก แต่เนื่องจากฮาร์ดแวร์ที่มีอยู่ในปัจจุบันของฉัน ฉันจึงเลือกที่จะตัดตัวเลข 2 ตัวต่อท้ายและแสดงผลและใช้ 4 อย่างมีเนื้อหา (แต่ไม่มาก) ลด ความปลอดภัย.
ข้อมูลทั่วไป
โปรเจ็กต์นี้สร้างรหัสใหม่ทุก ๆ 30 วินาทีโดยใช้คีย์ที่แชร์ล่วงหน้าและเวลาปัจจุบัน (ซึ่งติดตามการใช้โมดูลนาฬิกาแบบเรียลไทม์) และแสดงบนจอแสดงผลเมื่อกดปุ่ม กรณีการใช้งานที่พบบ่อยที่สุดคือการตรวจสอบสองปัจจัยตามรหัสผ่านครั้งเดียวตามเวลา (TOTP) และรหัสผ่านครั้งเดียวตาม HMAC (HOTP) สำหรับการตรวจสอบสิทธิ์
TOTP เป็นอัลกอริทึมที่คำนวณรหัสผ่านแบบใช้ครั้งเดียวจากรหัสลับที่ใช้ร่วมกันและเวลาปัจจุบัน HTOP เป็นอัลกอริทึมที่ใช้อัลกอริทึม HMAC เพื่อสร้างรหัสผ่านแบบใช้ครั้งเดียว
บริษัทต่างๆ เช่น Google, Microsoft และ Steam ใช้เทคโนโลยี TOTP สำหรับการตรวจสอบสิทธิ์แบบสองปัจจัยแล้ว
ลิงค์ที่น่าสนใจ
บทความอธิบายวิธีที่ Google ใช้เทคโนโลยีนี้ในการตรวจสอบสิทธิ์ผู้ใช้ -
การใช้ JavaScript ของ HOTP และ TOTP ที่อาจใช้เมื่อสร้างซอฟต์แวร์โดยใช้โครงการนี้ -
ห้องสมุด Crytographic สำหรับ Arduino ที่ใช้ในโครงการนี้ -
เอกสาร TOTP -
ระดับความเชี่ยวชาญ
คำแนะนำนี้มีไว้สำหรับผู้ที่สนใจเรื่องความปลอดภัยและอาจต้องการใช้ส่วนประกอบฮาร์ดแวร์ที่ดีในการสร้าง TOTP คำแนะนำนี้เขียนขึ้นสำหรับผู้ชมที่เข้าใจพื้นฐานของการตีความไดอะแกรมอิเล็กทรอนิกส์และการเขียนโปรแกรมพื้นฐานแล้ว แต่ถ้าคุณวางแผนที่จะปฏิบัติตามคำแนะนำนี้อย่างตรงไปตรงมาไม่ต้องกังวลหากคุณไม่มีประสบการณ์และอย่าลังเลที่จะถามคำถามลงใน ความคิดเห็น! นอกจากนี้ โปรเจ็กต์ยังน่าสนใจสำหรับผู้ผลิตที่มีประสบการณ์มากขึ้นเช่นกัน เนื่องจากผลิตภัณฑ์ขั้นสุดท้ายไม่ได้เป็นเพียงชิ้นส่วนที่ดีเท่านั้น (ในความคิดของฉัน) แต่มีศักยภาพมากสำหรับการขยายและคุณสมบัติใหม่โดยไม่ต้องยุ่งยากมากนัก
เสบียง
วัสดุ:
- 1x Arduino นาโน (อเมซอน)
- 1x DS3231 AT24C32 โมดูลนาฬิกาเรียลไทม์ (RTC) (Amazon)
- 1x SH5461AS แคโทดทั่วไป 4 หลัก 7 ส่วน (Amazon)
- 1x ปุ่มกด (อเมซอน)
- ตัวต้านทาน 1x 10k (อเมซอน)
- ตัวเลือก 1x 5x7cm PCB (Amazon)
- ลวดเสริมสำหรับบัดกรีกับ PCB
- ตัวเลือก 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 นอกเหนือจากไฟล์ Fritzing (มีให้ที่นี่) โปรดทราบว่าฉันวางส่วนประกอบทั้งหมดไว้ที่ด้านบนของบอร์ดเพื่อความสวยงาม แต่ยังสามารถติดตั้งไว้ข้างใต้แล้วปิดไว้ในเคสบางประเภทเพื่อให้บอร์ดสะอาดขึ้น ฉันตัดและติดไอติมแท่งที่ติดกาวร้อนด้วย Sharpie ที่ด้านข้างของ PCB เพื่อสร้างกล่องชั่วคราวสำหรับยูนิต อีกขั้นตอนที่เป็นทางเลือกคือการติดคลิปแบตเตอรี่ขนาด 9 โวลต์เข้ากับพิน VIN และ GND ของ Arduino ทำให้ใช้แบตเตอรี่ได้
ขั้นตอนที่ 3: เสร็จแล้ว
นี่คือวิธีที่ตัวสร้างของฉันเสร็จสมบูรณ์ หากคุณทำตามและสร้างขึ้นเอง แบ่งปันด้านล่าง!
อย่าลืมโหวต Instructable ของฉันสำหรับการประกวด STEM หากคุณเห็นว่าเหมาะสมและแสดงความคิดเห็น / คำถามใด ๆ ที่คุณอาจมีด้านล่าง!
แนะนำ:
Arduino Waveform Generator: 5 ขั้นตอน (พร้อมรูปภาพ)
Arduino Waveform Generator: อัปเดต กุมภาพันธ์ 2021: ลองดูเวอร์ชันใหม่ที่มีอัตราการสุ่มตัวอย่าง 300x ตาม Raspberry Pi Pico ในห้องแล็บ มักต้องการสัญญาณซ้ำของความถี่ รูปร่าง และแอมพลิจูดที่แน่นอน อาจเป็นการทดสอบเครื่องขยายเสียง ตรวจสอบวงจร
Arduino Yún Morse Generator: 4 ขั้นตอน (พร้อมรูปภาพ)
Arduino Yún Morse Generator: เคยอยู่ในบาร์ที่คุณคุยกับเพื่อนไม่ได้เพราะเสียงเพลงดังเกินไปหรือเปล่า ทีนี้คุณสามารถขอเบียร์จากเขาด้วยรหัสมอร์สได้แล้ว! มาเริ่มกันเลย
Portable Function Generator บน Arduino: 7 ขั้นตอน (พร้อมรูปภาพ)
Portable Function Generator บน Arduino: ตัวสร้างฟังก์ชันเป็นเครื่องมือที่มีประโยชน์มาก โดยเฉพาะอย่างยิ่งเมื่อเราพิจารณาทดสอบการตอบสนองของวงจรของเราต่อสัญญาณบางอย่าง ในคำแนะนำนี้ ฉันจะอธิบายลำดับการสร้างเครื่องกำเนิดฟังก์ชันขนาดเล็ก ใช้งานง่าย คุณสมบัติของ
Arduino Synth / Tone Generator: 5 ขั้นตอน
Arduino Synth / Tone Generator: นี่คือ Synth / Tone Generator ที่ใช้คำสั่ง Tone ที่มีอยู่ใน Arduino มีคีย์เฉพาะ 12 ปุ่มที่สามารถตั้งค่าให้เล่นความถี่คลื่นสี่เหลี่ยมใดก็ได้ มันมีความสามารถในการขึ้นและลงอ็อกเทฟด้วยปุ่ม นอกจากนี้ยังมีส
Arduino Tone Generator ที่ไม่มีไลบรารี่หรือฟังก์ชั่นแบบอนุกรม (พร้อมอินเตอร์รัปต์): 10 ขั้นตอน
Arduino Tone Generator ที่ไม่มีไลบรารี่หรือฟังก์ชั่นแบบอนุกรม (พร้อมอินเตอร์รัปต์): นี่ไม่ใช่สิ่งที่ปกติแล้วฉันจะสอนได้ ฉันชอบงานโลหะมากกว่า แต่เนื่องจากฉันเป็นนักเรียนวิศวกรรมไฟฟ้าและต้องเรียนวิชาเกี่ยวกับไมโครคอนโทรลเลอร์ ( การออกแบบระบบสมองกลฝังตัว) ฉันคิดว่าฉันจะสร้างคำสั่งบนหนึ่งใน p