ฉันจะเพิ่มการเข้ารหัสระดับแอปพลิเคชันในการเชื่อมต่อ Android BLE ได้อย่างไร

Aug 17 2020

Android บลูทู ธ พลังงานต่ำเอกสารแนะนำการเพิ่มการเข้ารหัสชั้นโปรแกรมประยุกต์บนด้านบนของการเชื่อมต่อ BLE หากข้อมูลแลกเปลี่ยนมีความไว:

ข้อควรระวัง : เมื่อผู้ใช้จับคู่อุปกรณ์ของตนกับอุปกรณ์อื่นโดยใช้ BLE ข้อมูลที่สื่อสารระหว่างอุปกรณ์ทั้งสองจะเข้าถึงแอปทั้งหมดในอุปกรณ์ของผู้ใช้

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

เนื่องจากฉันต้องการหลีกเลี่ยง "การเข้ารหัสของฉันเอง" ฉันกำลังมองหาวิธีเข้ารหัสแพ็กเก็ตที่พร้อมใช้งานจริง

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

ฉันมองว่าNoise Protocol Frameworkเป็นทางเลือกที่มีน้ำหนักเบากว่าสำหรับ TLS แต่รู้สึกว่ามันยังต้องทำงานด้วยตนเองอยู่มาก (?)

มีวิธีง่ายๆหรือไม่? ดูเหมือนว่าจะต้องมีการแก้ไขปัญหา

คำตอบ

1 CBHacking Aug 18 2020 at 05:26

อันดับแรกคำแนะนำ: StackExchange ไม่ได้มีไว้เพื่อแนะนำผลิตภัณฑ์ที่เฉพาะเจาะจงดังนั้นฉันจะค่อนข้างทั่วไปที่นี่ ใครก็ตามที่อ่านสิ่งนี้ในอนาคตอาจอยู่ในโลกที่มีทางเลือกใหม่และดีกว่ามากหรือแม้กระทั่งที่ยามเก่าถูกพบว่าเสีย

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

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


สำหรับตัวอย่างที่ดีถือไม่กี่เมื่อกลางปี 2020 พิจารณาLibSodiumหรือMonocypher ทั้งสองได้รับการยกย่องตรวจสอบและเน้นการใช้งานง่าย ทางเลือกอื่น ๆ ได้แก่ NaCl, LibHydrogen และอื่น ๆ โปรดทราบว่าสิ่งเหล่านี้ไม่ได้มุ่งเน้นไปที่ความปลอดภัยความเร็วหรือความสะดวกเท่า ๆ กัน ตัวอย่างเช่น TweetNaCl เน้นขนาดโค้ดที่น้อยที่สุดโดยเสียสละความเร็วจำนวนมากและอาจมีความปลอดภัยบางอย่างในกระบวนการเมื่อเทียบกับ NaCl ดั้งเดิม