กลับไปหน้ารวมไฟล์
password-usb-key-05e45e.md

โปรเจคแบบนี้มีให้เห็นในเน็ตอยู่บ้างแหละ

แต่ ไม่มีสักอันที่ทำมาให้ชาว Arduino ใช้จริงจัง ส่วนใหญ่ก็แจกไฟล์ .hex หรือ main.c มาให้เฉยๆ ซึ่งน้องปรับแต่งหรือ rebuild เองไม่ได้เลย

พี่เลยตัดสินใจเขียนโค้ดใหม่ทั้งหมดใน Arduino IDE พร้อมกับไลบรารีที่ปรับให้ใช้กับ DigiStump ได้

เอ้า! มาอธิบายกันดีกว่า

Hardware Passwords: ความปลอดภัยที่เหนือกว่าแค่ซอฟต์แวร์

ตัวจัดการรหัสผ่านแบบซอฟต์แวร์ก็ดีอยู่หรอก แต่มันเสี่ยงโดน keylogger หรือเครื่องโดนแฮกได้ Password USB Key ตัวนี้จะพาน้องเข้าสู่โลกของ "ความปลอดภัยระดับฮาร์ดแวร์" โดยใช้ไมโครคอนโทรลเลอร์เฉพาะทางในการเก็บและพิมพ์ข้อมูลลับสุดยอดของน้อง ด้วยการทำตัวเป็น Virtual Keyboard (USB HID) ทำให้เจ้านี่ไม่ยึดติดกับแพลตฟอร์ม—จะใช้บน Windows, Mac, Linux หรือแม้แต่โทรศัพท์ Android ที่มีสาย OTG ก็ได้—โดยไม่ต้องลงซอฟต์แวร์พิเศษอะไรเพิ่มในเครื่องเลย

หลักการง่ายๆ: พอน้องเสียบ USB Key เข้าไป มันก็จะพิมพ์รหัสผ่านออกมาเสมือนเป็นคีย์บอร์ด

ตัวอย่าง (และเป็นแรงบันดาลใจแรกของพี่)

พลังแห่ง DigiSpark (Attiny85)

ในขณะที่โปรเจคแบบนี้ส่วนใหญ่เป็นไฟล์ .hex แบบปิดซอร์ส โปรเจคนี้ถูกสร้างขึ้นทั้งหมดใน Arduino IDE เพื่อให้ปรับแต่งได้สุดๆ:

  • DigiStump Library: โปรเจคนี้ใช้ไลบรารีพิเศษที่ทำให้ชิป Attiny85 บน DigiSpark จำลองตัวเองเป็นคีย์บอร์ด USB ได้
  • EEPROM Vault: รหัสผ่านไม่ได้ถูก hard-code ไว้ในโค้ด แต่จะถูกเก็บไว้ใน Non-volatile Memory (EEPROM) ของชิปแทน แปลว่า USB Key จะเก็บข้อมูลของน้องไว้ได้แม้จะดึงออกจากเครื่องแล้ว
  • Dual-Function Logic: ใช้ปุ่มกดเดียวแบบง่ายๆ แต่มีสองโหมด:
    1. กดสั้นๆ: จะพิมพ์รหัสผ่านที่เก็บไว้ลงในช่องข้อความที่กำลังใช้งานทันที
    2. กดค้าง (2 วินาที): จะสร้างรหัสผ่านใหม่แบบสุ่ม ที่มีทั้งตัวเลข ตัวอักษร และสัญลักษณ์ จากนั้นก็อัพเดทลงใน vault ภายในทันที

ในเวอร์ชันของพี่ จะมีปุ่มเล็กๆ ติดอยู่บนบอร์ด—กดค้างไว้ 2 วินาที มันก็จะสร้างรหัสผ่านใหม่สุดโหดที่เซฟลง EEPROM ทันทีเลย

ไฟ RGB คอยบอกสถานะ

เพื่อให้อุปกรณ์นี้ "เป็นมิตรกับมนุษย์" เราจึงใช้ LED RGB ตัวเล็กๆ มาคอยบอกสถานะ:

  • ไฟเขียวกระพริบ: พิมพ์รหัสผ่านหรือสร้างรหัสผ่านใหม่สำเร็จ
  • ไฟน้ำเงินกะพริบ: กำลังรออินพุตจากผู้ใช้ หรือรอยืนยันการกดค้าง
  • ไฟแดงเตือน: เกิดข้อผิดพลาดในการเข้าถึงหน่วยความจำ หรือการเชื่อมต่อ USB ล้มเหลว

ทิปส์สำหรับการประกอบ DIY ให้ปลอดภัย

เนื่องจากอุปกรณ์นี้จะต้องเสียบตรงเข้าไปในพอร์ต USB ที่แพงหูฉี่ของคุณ คุณภาพการประกอบจึงสำคัญมาก:

  • ตัวต้านทานดึงขึ้น (Pull-up Resistors): ใช้ ตัวต้านทาน 1k Ohm เพื่อให้แน่ใจว่าสัญญาณอินพุตไม่ "ลอย" ซึ่งจะช่วยป้องกันการกดรหัสผ่านโดยไม่ได้ตั้งใจ
  • ขนาดกะทัดรัด: ความสวยของ DigiSpark อยู่ที่ขนาดมันนี่แหละ ด้วยการบัดกรีที่ระมัดระวังหน่อย เราสามารถติดปุ่มและ LED ลงบนบอร์ดได้โดยตรง ทำให้อุปกรณ์สุดท้ายมีขนาดไม่ใหญ่ไปกว่าธัมบ์ไดรฟ์ทั่วไป

สิ่งที่ต้องใช้มีแค่นี้:

  • DigiStump จาก Digispark 1 ตัว (หาซื้อได้ตาม Amazon หรือในเน็ต)
  • ตัวต้านทานดึงขึ้น (Pull-up Resistor) 1k Ohms 1 ตัว
  • ปุ่ม SMD 1 ปุ่ม
  • LED RGB 1 ดวง (ใส่หรือไม่ใส่ก็ได้)

โปรเจคนี้เป็นบทนำที่เพอร์เฟคสำหรับการเริ่มต้น เขียนโปรแกรม Attiny85 และแสดงให้เห็นว่าเหล่า makers อย่างเราสามารถใช้ไมโครคอนโทรลเลอร์ราคาถูกมาแก้ปัญหาเรื่องความปลอดภัยระดับสูงได้ยังไง จัดไปวัยรุ่น! สู้งานนะน้อง

ข้อมูล Frontmatter ดั้งเดิม

title: "กุญแจ USB รหัสลับ งานง่ายแต่หล่อ!"
description: "อุปกรณ์จิ๋วแต่ตึงๆ อย่าง USB Key ที่มันจะสร้างและเก็บพาสเวิร์ดแบบ Ultra Secure ให้เราเอง อุ่นใจจัดไป!"
author: "Mushux95"
category: ""
tags:
  - "embedded"
  - "security"
views: 17402
likes: 1
price: 299
difficulty: "Easy"
components:
  - "1x RGB Diffused Common Cathode"
  - "1x Pushbutton switch 12mm"
  - "1x Soldering iron (generic)"
  - "1x Resistor 1k ohm"
  - "1x DigiSpark"
tools: []
apps:
  - "1x Drivers"
downloadableFiles: []
documentationLinks: []
passwordHash: "2396cb4e2db05c591747283879943dd81e2f83fef407e85da72e74bad7e4744e"
encryptedPayload: "U2FsdGVkX18C4Dx0tHJvFNCiFhA9hLsw9t07LAK1X0777TaCyC8oPYaGF06Cszg9pYYEpmXAoHSC6VAgY9ptHw=="
seoDescription: "Create and store ultra secure passwords with this compact Password USB Key project."
videoLinks:
  - "https://www.youtube.com/embed/kpNSycoUCZM"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/password-usb-key-05e45e_cover.jpg"
lang: "en"