ห้องสมุดการเข้ารหัสสำหรับ Arduino


9

ฉันใช้ Arduino เพื่ออ่านแผงปุ่มกดและเปิดตัวจู่โจมด้วยไฟฟ้าเมื่อป้อนรหัส PIN สำหรับร่างนี้ฉันต้องการใช้การเข้ารหัสเบา ๆ เพื่อจัดเก็บ PIN ใน EEProm ไม่มีใครรู้เกี่ยวกับห้องสมุดดังกล่าวหรือไม่ ฉันได้ยินมาว่าอาจเป็นไปได้หากใช้ TwoFish

คำตอบ:


12

คุณไม่ต้องการเข้ารหัสรหัสผ่าน (PIN) - คุณต้องการแฮชพวกเขา เมื่อมีคนป้อนรหัสผ่านคุณแฮรหัสผ่านนั้นและเปรียบเทียบแฮชกับแฮชที่เก็บไว้ ประโยชน์ที่จะใช้วิธีนี้ (ใช้มานานกว่า 30 ปี) คือว่าแม้ว่าบางคนได้รับถือของแหล่งที่มาและแฮชที่พวกเขายังคงไม่สามารถบอกได้ว่าหมุดที่ตรงกับแฮชที่ตราบเท่าที่คุณเลือกแข็งแรงพอที่ฟังก์ชันแฮช

คุณไม่ต้องการใช้การเข้ารหัสด้วยตนเอง - คุณต้องการใช้ห้องสมุดของคนอื่นโดยเฉพาะอย่างยิ่งการใช้งานแบบเปิดที่ได้รับการทดสอบโดยชุมชนขนาดใหญ่ การเข้ารหัสนั้นยากการทดสอบนั้นยากและการทดสอบการเข้ารหัสนั้นยากมากดังนั้นให้คนอื่นมาทำแทนคุณ

คุณควรเช็คเอาต์AVR Crypto Libraryซึ่งได้รับสิทธิการใช้งานกับ GPLv3 นอกจากนี้ยังมีการนำSkein สำหรับ AVRมาใช้ด้วย


1
Upvoted - ทรัพยากรที่ดีและควรตั้งเป็นคำตอบสำหรับคำถาม
Lou

9

ลิงค์นั้น Hristos โพสต์ในขณะที่อาจมีประโยชน์แน่นอนไม่นับเป็น "การเข้ารหัส" มันเป็นแค่ "ความสับสน" เท่านั้น

วิทยาการเข้ารหัสลับที่ถูกต้องนั้นง่ายต่อการเข้าใจผิดแม้แต่กับคนที่รู้คณิตศาสตร์

ในการตอบกลับโพสต์ดั้งเดิม - วิธีการโจมตีที่จะให้คนเข้าถึง PIN ใน EEProm คืออะไร? แน่นอนถ้าพวกเขาได้มีที่ไกลในอุปกรณ์อิเล็กทรอนิกส์ของคุณพวกเขาสามารถเพียงแค่ "ตัดด้วยขากรรไกรสายสีแดง" และเปิดประตู?

หากคุณอย่างใดทำมีระบบที่ผู้โจมตีอาจได้รับถือของเนื้อหา EEPROM แล้วโดยไม่ต้องมีการเข้าถึงมากพอที่จะเปิดประตูของคุณคุณอาจต้องการที่จะออกแบบมัน คุณสามารถดูฟังก์ชันแฮชทางเดียวซึ่งคล้ายกับการแฮชรหัสผ่าน Unix - วิธีที่ EEProm ไม่จำเป็นต้องมีคีย์ถอดรหัส - ปัญหาคือพื้นที่ค้นหาสำหรับ PIN มีขนาดเล็กมาก - ถ้าฉันสามารถดาวน์โหลดเวอร์ชันแฮชของ PIN ฉันสามารถลองใช้ PIN ที่เป็นไปได้ทั้งหมด 10,000 รายการอย่างรวดเร็วฉันสงสัยว่าแล็ปท็อปสมัยใหม่ทุกรุ่นจะทำงานทั้งหมดในไม่กี่วินาที


ฉันเห็นด้วย (และเห็นด้วยด้านบน) แฮชแบบทางเดียวจะเป็นประโยชน์และถ้าคุณกำลังเขียนโปรแกรมระบบคุณสามารถสร้างพินได้ตราบใดที่คุณต้องการเช่น 8 หลักให้ 100000 000 ชุดซึ่งควรใช้เวลานานกว่ามาก
Amos

1

ปัญหาที่ฉันเห็นคือหากพวกเขาสามารถเห็นพินของคุณพวกเขายังสามารถเห็นโปรแกรมของคุณที่เข้ารหัส / ตรวจสอบ / ถอดรหัสพินของคุณ นอกจากนี้หากพวกเขามีชิปของคุณพวกเขาสามารถไม่เพียง แต่เปลี่ยนโปรแกรมให้ผลบวกเสมอ (ผ่านการตรวจสอบได้อย่างมีประสิทธิภาพ) สำหรับพินใด ๆ


1

คุณวางแผนที่จะถอดรหัส PIN ที่เข้ารหัสเพื่อตรวจสอบว่าผู้ใช้ป้อน PIN ที่ถูกต้องได้อย่างไร คุณจะต้องจัดเก็บคีย์ถอดรหัส ... ณ จุดนี้หากผู้โจมตีสามารถอ่าน eeprom ของคุณเขายังสามารถอ่านแฟลชของคุณเพื่อค้นหาคีย์เข้ารหัส โดยพื้นฐานแล้วการเข้ารหัสทั้งหมดของคุณไร้ประโยชน์อย่างสมบูรณ์ อย่างที่คนอื่น ๆ พูดกันว่าถ้าเขามีความสามารถในการอ่านชิปของคุณแล้วเขาก็สามารถเขียนโปรแกรมใหม่ได้ ง่ายกว่ามากที่จะเปิดประตูฉันสงสัยว่าทุกคนจะต้องเจอกับปัญหาในการพยายามแฮ็คชิปของคุณ


1

นี่คือวิธีการสมัครง่าย ๆ ใน C ซึ่งสามารถนำไปใช้กับ Arduino ได้อย่างง่ายดาย ดูเหมือนว่าวิธีที่ง่ายที่สุดในการเข้ารหัสข้อมูลด้วยทรัพยากรที่ จำกัด ของ arduino

-EDIT- เพื่อป้องกันไม่ให้โปรแกรมออกจากโปรแกรมคุณสามารถทำ PIN ครึ่งหนึ่งได้ ซึ่งหมายความว่าโปรแกรมของคุณใช้กุญแจครึ่งหนึ่งของ PIN เพื่อถอดรหัส 1/2 PIN ที่เข้ารหัสซึ่งเก็บไว้ใน EEProm หากคีย์ถอดรหัสจาก EEProm ตรงกับส่วนของพินที่ไม่ใช่กุญแจประตูจะปลดล็อค สิ่งนี้จะทำงานในสถานการณ์ที่เป็นไปไม่ได้ที่ผู้บุกรุกจะพังประตูหรือ reprogram Arduino เท่านั้น


แต่ถ้าพวกเขาไม่สามารถเข้าถึงชิปของคุณคุณไม่จำเป็นต้องเข้ารหัสพิน
Amos

1

ฉันเกลียดที่จะไม่ตอบคำถามในขณะที่ถามคำถามอื่น แต่ ...

มีเหตุผลบางอย่างที่ทำให้อุปกรณ์ของคุณไม่ได้รับการพิสูจน์ว่าผิดปกติ ฉันได้เห็นสวิตช์ปุ่มกดในรูสกรูที่ติดตั้ง 'บนม้านั่ง' เพื่อตรวจจับชนิดของการแก้ไขดัดแปลงที่คุณกังวล ถ้าอย่างนั้นเขามาที่นี่พร้อมกับไฟฉายขนาดเล็กบิวเทนที่จัดการเพื่อรับชิปของคุณโดยไม่คลายเกลียว (หรือทำลายชิป) .. อย่างใดเขารู้การออกแบบระบบพิสูจน์การงัดแงะของคุณซึ่ง (หวังว่า) แสงโดยรอบและ / หรือเสียง เมื่อฝาครอบหลุดออกมาทั้งคู่ต่างออกไป .. ทั้งกลางวันและกลางคืน

หากเป็นเช่นนั้นควรเป็นระบบสองส่วนที่ชิ้นส่วนที่ถูกเปิดใช้งานสื่อสารกับบางสิ่งที่มีการใช้การเข้ารหัสได้ง่ายขึ้น นอกจากนี้บัญชี checksums (ช่วยเหลือ) สำหรับเด็กที่มีไฟฉาย

ฉันคิดว่าคุณกำลังขอไขควงเป็นค้อน


1

ความคิดเห็นเหล่านี้เป็นจุดที่แท้จริง ไม่มีอะไรผิดปกติกับการพยายามทดสอบเพื่อเรียนรู้เกี่ยวกับการเข้ารหัส แต่นี่ไม่ใช่โครงการที่ดีสำหรับการเรียนรู้สิ่งต่าง ๆ คุณต้องการหนังสือเรียนและคอมพิวเตอร์ที่ดีและอย่างที่ @bigiain พูดว่าคณิตศาสตร์นั้นผิดพลาดได้ง่าย

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

หากคุณเพียงต้องการรักษาความปลอดภัยให้กับโครงการของคุณนี่เป็นวิธีที่ไม่มีประสิทธิภาพในการทำเช่นนั้น หากคุณสนใจการเข้ารหัสเริ่มต้นด้วยหนังสือเล่มนี้และคอมพิวเตอร์


ฉันเข้าใจการอ่านรหัสอ่าน Bruce Schneier และตั้งโปรแกรมมานานกว่ายี่สิบปี ฉันเข้าใจว่าภัยคุกคามที่แท้จริงนั้นเพิ่งทำลายประตูและเดินผ่านคอนโทรลเลอร์ Arduino ทุกประเภท ฉันไม่สามารถติดตั้งมโนธรรมที่ดีได้ด้วย PIN แบบข้อความที่ชัดเจนใน EEP จากหากสามารถหลีกเลี่ยงได้ บิน

มีวิธีการทำให้งงงวยง่าย ๆ หลายวิธีที่จะมีผลบังคับใช้กับบทบาทนี้หากคุณต้องการหลีกเลี่ยงการจัดเก็บ PIN แบบข้อความอย่างชัดเจน ผู้ตอบคำถามข้างต้นพยายามช่วยให้คุณเข้าใจว่าการเข้ารหัสทำอะไรได้บ้างและไม่ได้ทำ นี่คือห้องสมุด AES: hoozi.com/Articles/AESEncryption.htm ฉันอยากจะบอกว่าเพียงเพราะคุณตั้งโปรแกรมมา 20 ปีมันไม่ได้แปลว่าคุณเข้าใจการเข้ารหัส มันเป็นสนามที่แตกต่างกันโดยสิ้นเชิง ช่างอัตโนมัติ 20 ปีเป็นคนที่มีทักษะ แต่ฉันไม่คิดว่าเขาจะออกแบบรถบัส CAN ตั้งแต่เริ่มต้น โปรดตรวจสอบทัศนคติของคุณ
Lou

โอ้พระเจ้า ... การเข้ารหัส 20 ปีและคุณคิดว่าเป็นไปได้ในการเข้ารหัสข้อมูลรันไทม์ ????? เลิก.
MickLH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.