โปรเจคแบบนี้มีให้เห็นในเน็ตอยู่บ้างแหละ
แต่ ไม่มีสักอันที่ทำมาให้ชาว 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: ใช้ปุ่มกดเดียวแบบง่ายๆ แต่มีสองโหมด:
- กดสั้นๆ: จะพิมพ์รหัสผ่านที่เก็บไว้ลงในช่องข้อความที่กำลังใช้งานทันที
- กดค้าง (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 อย่างเราสามารถใช้ไมโครคอนโทรลเลอร์ราคาถูกมาแก้ปัญหาเรื่องความปลอดภัยระดับสูงได้ยังไง จัดไปวัยรุ่น! สู้งานนะน้อง