ฉันจะป้องกันซอฟต์แวร์บน Pi เพื่อการใช้งานเชิงพาณิชย์ได้อย่างไร


16

ฉันต้องการใช้ Raspberry Pi ในผลิตภัณฑ์เชิงพาณิชย์ แต่ฉันต้องการป้องกันไม่ให้วิศวกรรมย้อนกลับของซอฟต์แวร์บนอุปกรณ์ ซอฟต์แวร์ที่เป็นปัญหาจะถูกเขียนใน Ruby ฉันคิดว่าผู้ใช้ปลายทางมีสิทธิ์เข้าถึงทางกายภาพไปยังการ์ด SD และฉลาดพอที่จะเข้าถึงรูทไปยัง Pi

ตามที่ฉันเห็นตัวเลือกอาจรวมถึง:

  • เข้ารหัสส่วนหนึ่ง (หรือทั้งหมด) ของการ์ด SD
  • ทำให้งงงวยโค้ด Ruby หรือคอมไพล์ลงไปที่ bytecode (JRuby หรือ Rubinius)

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

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


ฉันกำลังมองหาวิธีการแก้ปัญหาที่คล้ายกัน คำตอบที่ดีที่สุดที่ฉันได้คือการเมานต์รูปภาพ (พาร์ติชั่น) ที่เข้ารหัสหลังจากบู๊ตโดยใช้เงื่อนไขบางอย่าง (อาจเรียกอาแจ็กซ์อย่าง DRM เพื่อเตรียมคีย์ถอดรหัสแบบไดนามิกหมายเลขซีเรียลพร้อมล็อค algoruthym (วันที่ SN * - 1)) - เท่านั้น วิธีอื่นคือการใช้รหัสที่สามารถรวบรวมรหัสของคุณลงในไบนารี - เช่น c ++ หรือ. net (mono) และหวังว่าซอฟต์แวร์แครกเกอร์ที่ดีจะไม่กำหนดเป้าหมายซอฟต์แวร์ของคุณ - คุณรู้ว่าสาเหตุเช่น Microsoft ไม่ได้มีปัญหานี้สำหรับ eons .. และยังไม่ แก้ไขแล้ว .. ขอให้โชคดี!
Piotr Kula

คำตอบ:


8

แน่นอนว่ามันเป็นไปได้ที่จะถอดรหัสไฟล์ / คอนเทนเนอร์ / ฯลฯ ที่เข้ารหัส โดยไม่ต้องขอรหัสผ่าน มันเพียงพอที่จะเก็บรหัสผ่าน (เข้ารหัส) ลงในการ์ด SD และใช้เพื่อถอดรหัสข้อมูลของคุณ ตัวอย่างเช่นตัวอย่างง่าย ๆopensslอาจเป็น:

openssl enc -a -e -salt -aes-256-cbc -pass pass:abc123 -in /tmp/plaintext.txt -out /tmp/ciphertext.enc

openssl enc -d -a -aes-256-cbc -pass pass:abc123 -in /tmp/ciphertext.enc

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

ไม่ว่าในกรณีใดตัวเลือกที่ดีที่สุดของคุณคือการเข้ารหัสและรวบรวมซอฟต์แวร์ของคุณเพื่อเพิ่มเลเยอร์การ obfuscation ที่แตกต่างกันในซอฟต์แวร์ของคุณ

สุดท้ายหากซอฟต์แวร์ของคุณต้องการการเชื่อมต่ออินเทอร์เน็ตคุณสามารถตั้งค่าให้ Pi ขอรหัสผ่านได้ทุกครั้ง คุณจะต้องซ่อนรหัสผ่านในการเชื่อมต่อคุณจะต้องใช้httpsและคุณจะต้องป้องกันการโจมตีตอบกลับโดยใช้เวลาปัจจุบันsaltสำหรับการเข้ารหัส

คุณมีตัวเลือกมากมาย (ราคาถูก) ที่จะทำให้ซอฟต์แวร์ของคุณปลอดภัย แต่คุณต้องรู้ว่าหากซอฟต์แวร์ของคุณมีค่านิยมตามเกณฑ์ความนิยมที่กำหนดไว้ซอฟต์แวร์จะแตกอย่างแน่นอนแม้ว่าคุณจะลงทุนเงินจำนวนมากในการป้องกันก็ตาม


1
ฉันสามารถเข้าสู่ระบบในฐานะ root ในเซฟโหมดอ่านไฟล์คีย์และถอดรหัสการทำงานหนักทั้งหมดของเขาและขายให้กับชาวรัสเซียนับล้าน ดีลอง .. แต่ไม่ได้พิสูจน์กระสุน แม้กระทั่ง https ก็สามารถถูกหลอกได้ด้วยการเปลี่ยนเส้นทาง DNS และใบรับรองปลอมทั้งหมดภายในเครือข่ายที่มีการจัดการ .. oops
Piotr Kula

1
@Avio: ก่อนอื่นภาคไม่เป็นที่รู้จัก มันจะต้องเป็นที่รู้จักก็ไม่ชัดเจนว่ามันอยู่ที่ไหน แต่เมื่อคุณต้องการค้นหาด้วยสคริปต์ / แอปพลิเคชันถอดรหัสคุณสามารถค้นหาได้ คุณต้องใส่รหัสที่จะถอดรหัสที่ไหนสักแห่ง คุณจะวางไว้ที่ไหน ใน initramfs พาร์ทิชันการ์ด SD บางส่วนหรืออื่น ๆ ที่ไม่ได้รับการป้องกัน ทุกคนสามารถเห็นแอปพลิเคชัน / สคริปต์ที่ใช้ในการถอดรหัสพาร์ติชันที่เข้ารหัสและ / หรือเพียงแค่เปลี่ยนพวกเขาเพื่อให้เข้าถึงบางชนิดก่อนที่จะถูกดำเนินการ
Krzysztof Adamski

1
วิธีการเข้ารหัสทั้งหมดของคุณนั้นดียกเว้นคีย์เก็บไว้ในการ์ด SD op น่าจะขาย SD card สำหรับ / กับพี่ให้กับผู้ใช้ จากนั้นฉันก็สามารถนำการ์ด SD ไปสู่การแฮ็คมันใช้ประโยชน์จากเซฟโหมดเข้าสู่รูท - อ่านไฟล์สำคัญและแทรกซึมเข้าไปในอุปกรณ์สื่อสารอื่น ๆ และซอร์สโค้ดทั้งหมด นั่นคือปริศนา ฉันแน่ใจว่า OP รู้วิธีเข้ารหัสสิ่งต่างๆ เขาถามว่าจะปกป้องซอฟต์แวร์ของเขาจากการถอดรหัสในขณะที่ปล่อยให้ระบบถอดรหัสโดยอัตโนมัติ
Piotr Kula

1
@Avio: ไม่ไม่ได้จริงๆ แต่เมื่อคุณถามว่า 'อย่างไร' ฉันจึงตอบไป ไม่ทราบว่าเป็นคำถามเชิงโวหาร คุณเขียนว่าการใช้ความคิดของคุณนั้นเพียงพอที่จะเริ่มเผยแพร่แอปพลิเคชัน แต่ฉันเชื่อว่า OP (และคนอื่น ๆ ที่อ่านข้อความนี้) ควรจะตระหนักถึงจุดอ่อนของวิธีการนี้ ที่ถูกกล่าวว่าฉันไม่เชื่อว่ามีทางออกที่ดีกว่าสำหรับราสเบอร์รี่ Pi สิ่งเดียวที่สามารถทำได้คือทำให้งงงวยมากยิ่งขึ้น บางทีแอปพลิเคชัน OP มีค่าเกินกว่าจะเสี่ยงและเขาตัดสินใจใช้สิ่งอื่นที่ไม่ใช่ RPi ซึ่งเขาสามารถสร้างกลไกการป้องกันที่ดีกว่า
Krzysztof Adamski

1
ในขณะที่คำตอบทั้งหมดที่นี่ให้การอภิปรายที่ดีของการแลกเปลี่ยนและความท้าทายที่เกี่ยวข้องกับคำถามของฉันฉันจะยอมรับคำตอบนี้ในตอนนี้เพราะมันมีทางออกที่เป็นรูปธรรมมากที่สุด การใช้หมายเลขซีเรียลจาก / proc / cpuinfo อาจเป็นลิงก์ที่ขาดหายไป
Schrockwell

6

ในทางปฏิบัติหากรหัสและกุญแจอยู่ในเครื่องการ์ด SD พวกเขาจะสามารถรวบรวมได้พวกเขาจะสามารถค้นพบกุญแจและพวกเขาจะสามารถดึงข้อมูลที่มีความละเอียดอ่อนได้

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

สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือเปลี่ยนเศรษฐศาสตร์ของวิศวกรรมย้อนกลับผลิตภัณฑ์ของคุณ

การเข้ารหัสและ / หรือการทำให้งงมีค่าหรือไม่

ตอนนี้เราได้พิสูจน์แล้วว่าไม่มีทางที่จะป้องกันตัวเองได้อย่างสมบูรณ์คำถามกลายเป็น

  1. มีโอกาสมากที่จะเกิดขึ้น?
  2. คุณค่าของอัลกอริธึมและข้อมูลของคุณคืออะไร
  3. พวกเขาต้องซื้อใบอนุญาตให้ใช้งานซอฟต์แวร์ของคุณราคาเท่าไหร่?
  4. ราคาของการจำลองอัลกอริทึมและข้อมูลของคุณคืออะไร
  5. ราคาของวิศวกรรมย้อนกลับอัลกอริทึมและข้อมูลของคุณคืออะไร
  6. คุณต้องปกป้องอัลกอริทึมและข้อมูลของคุณเป็นจำนวนเท่าใด

หากสิ่งเหล่านี้ก่อให้เกิดความจำเป็นทางเศรษฐกิจที่สำคัญในการปกป้องอัลกอริทึม / ข้อมูลของคุณคุณควรพิจารณาดำเนินการ ตัวอย่างเช่นหากมูลค่าของบริการและค่าใช้จ่ายต่อลูกค้าสูงทั้งคู่ แต่ค่าใช้จ่ายด้านวิศวกรรมย้อนกลับรหัสของคุณต่ำกว่าค่าใช้จ่ายในการพัฒนาตนเองมากผู้ใช้อาจลองใช้งาน

ดังนั้นสิ่งนี้นำไปสู่คำถามของคุณ

  • คุณรักษาความปลอดภัยอัลกอริทึมและข้อมูลของคุณอย่างไร?

obfuscation

ตัวเลือกที่คุณแนะนำ, ทำให้งงงวยรหัส, ยุ่งกับเศรษฐศาสตร์ข้างต้น - มันพยายามที่จะเพิ่มค่าใช้จ่ายให้กับพวกเขา (5 ข้างต้น) อย่างมีนัยสำคัญโดยไม่ต้องเพิ่มค่าใช้จ่ายให้กับคุณ (6) อย่างมาก ปัญหาคือว่าเช่นเดียวกับการเข้ารหัส DVD มันถึงวาระที่จะล้มเหลวและหากมีความแตกต่างเพียงพอระหว่าง 3, 4 และ 5 ในที่สุดก็มีคนจะทำมัน

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

การป้องกัน

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

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

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

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

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


SaaS อาจเป็นตัวเลือก แต่คุณต้องระวังว่าคุณจะต้องตรวจสอบคะแนน 1 ถึง 6 ใหม่สำหรับเซิร์ฟเวอร์ทุกเครื่องที่คุณออนไลน์ นอกจากนี้คุณยังเปิดเผยถึงการโจมตี DDoS
Avio

4

เมื่อเร็ว ๆ นี้ฉันได้คิดค้นวิธีการแก้ปัญหาที่ไม่อาจแก้ไขได้อย่างสง่างาม มันได้แรงบันดาลใจจากการ์ตูน xkcd นี้:

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นวิธีการแก้ปัญหาที่เรียกว่ากาวซุปเปอร์ หากหนึ่งการ์ด SD ของ superglue ไปที่ PI จะเป็นไปไม่ได้ที่จะแยกการ์ดออกมาโดยไม่ทำลาย

คุณสามารถใช้ดิสก์ SSD ภายนอกเข้ารหัสด้วยรหัสผ่านที่เก็บไว้ใน SD และรู้สึกปลอดภัย!

ป้อนคำอธิบายรูปภาพที่นี่


บางคนสามารถสร้างไฟล์รูปภาพได้อย่างง่ายดาย ( dd) จากมันและใช้ตามนั้น!
Vassilis

@Vassilis เป็นไปไม่ได้โดยไม่ต้องเข้าสู่ระบบหรือไม่?
ADOConnection

ใครก็ตามที่มีภาพสดลินุกซ์สามารถทำได้! ไม่จำเป็นต้องเป็นรากของระบบของคุณ
Vassilis

@Vassilis ฉันขอให้คุณชี้ไปที่บทความใด ๆ ที่อธิบายขั้นตอนนี้ได้โปรด
ADOConnection

สิ่งแรกที่เกิดขึ้นบน google คือนี่
Vassilis

2

การรวบรวม bytecode จะเป็นการขับไล่ที่ดีที่สุด สำหรับการเข้ารหัสซอฟต์แวร์สามารถจัดเก็บในปริมาณ TrueCrypt แต่ถ้าผู้ใช้ไม่ได้รับการเข้าถึงราก ไม่มีวิธีใดในการเก็บรหัสผ่านอย่างปลอดภัยเนื่องจากหน่วยความจำ / ดิสก์สามารถทิ้งได้ตลอดเวลาสำหรับการตรวจสอบ แม้แต่ความช่วยเหลือของอุปกรณ์รักษาความปลอดภัย (สมาร์ทการ์ด) ก็ไม่ได้ทำอะไรมากมายหากซอฟต์แวร์ทำงานซึ่งผู้ใช้มียูทิลิตี้ลินุกซ์มากมาย เท่าที่ฉันรู้บูตปลอดภัยไม่ได้เป็นตัวเลือกใน R-Pi ซึ่งจะป้องกันผู้ใช้ tinkering ภายในระบบปฏิบัติการ


1
การเข้ารหัสระหว่างการบู๊ตนั้นไม่ปลอดภัยอย่างที่คิด คุณเพียงแค่ต้องเข้าถึง / บายพาสการบูตระบบปกติและมันคือเนื้อสับทั้งหมด ไม่แม้แต่ Blurays ก็ถูกต้อง ..
Piotr Kula

ระบบปิดทั้งหมดเท่านั้นที่สามารถป้องกันแอปพลิเคชันของคุณ ฉันรู้เพียงสิ่งเดียวเท่านั้นที่ค่อนข้างสามารถตั้งโปรแกรมได้ - การ์ด Java
Tomas Q.

1
ใช่ - แต่คุณต้องใส่ PIN เสมอ - PIN จะไม่ถูกเก็บไว้ในการ์ด
Piotr Kula

1

หากคุณต้องการสร้างแอพพลิเคชั่นเชิงพาณิชย์อย่างแท้จริงแล้ว Pi เพราะมันอยู่ในรูปแบบผู้ใช้ปลายทางมันไม่ดีสำหรับคุณ!

คุณจะต้องออกแบบ PCB ของคุณเองใช้โปรเซสเซอร์ที่อยู่บน Pi ตัวอย่างและฝังหน่วยความจำแฟลชลงบน PCB

  1. เขียนเฟิร์มแวร์ที่เหมาะสมสำหรับ BCM ที่สร้างรหัสการเข้าสู่ระบบครั้งเดียวโดยใช้อัลกอริธึมลับสุดยอดบางอย่างที่สามารถใช้ได้ภายใน 10 วินาทีถัดไป
  2. รวบรวมเคอร์เนลของคุณเองด้วยซอฟต์แวร์ความเป็นเจ้าของของคุณและเปิดใช้งานฟีเจอร์ Linux บางตัวที่อนุญาตให้คุณติดตั้งรูทจากไฟล์ที่เข้ารหัสบนแฟลชซึ่งมีพาร์ติชั่นเข้ารหัสอีกไฟล์หนึ่งกับซอฟต์แวร์ของคุณ
  3. เฟิร์มแวร์ BCM ของคุณจะสร้างความลับสุดยอดเมื่อปิดคีย์รับรองความถูกต้องโดยใช้อัลกอริทึมที่ฉลาดหรือกุญแจสาธารณะและส่งไปยัง linux kernal ที่คุณกำหนดเองซึ่งจะโหลดพาร์ติชันรากเข้ารหัสและทำสิ่งเข้ารหัสเพิ่มเติมระหว่างการบูต ภายในภาพที่เข้ารหัส

เคล็ดลับ

  • ปุ่มรับรองความถูกต้องที่ดีมีความยาวไม่เกิน 8-16 ตัวอักษรเป็นสิ่งสำคัญที่จะต้องจัดหาคีย์รับรองความยาว 256/512 ไบต์โดยใช้สัญลักษณ์ของระบบมากขึ้น (HEX) และอักขระน้อยลง (ASCII)
  • อย่าใช้ AES, TKIP เพราะมันแตกง่าย
  • ณ วันนี้การเข้ารหัสของ Whirlpool เป็นหนึ่งในขั้นตอนที่ซับซ้อนที่สุดในการถอดรหัสโดยใช้คีย์ 256/512
  • แม้ว่าแฮ็กเกอร์สามารถลบแฟลชไดรฟ์หรือทิ้งเนื้อหา ซอฟต์แวร์ของคุณถูกเข้ารหัสสองครั้ง
  • หากพวกเขาตัดกุญแจ auth มันจะยากมากที่จะออกจากเฟิร์มแวร์ (เพราะ BCM สามารถป้องกันการทิ้งเฟิร์มแวร์)
  • แฟลชรอมที่ฉลาดบางตัวยังมีคุณสมบัติในการป้องกันการถ่ายโอนข้อมูลหน่วยความจำเต็ม
  • หากคุณกำลังออกแบบ PCB คุณจะใช้ชิปรักษาความปลอดภัยที่ให้ข้อมูลและคีย์การเข้ารหัสทั้งหมดของคุณ (เช่น Dell และ Apple) และป้องกันความพยายามในการใช้ Bruteforce Dell บางรุ่นมีการทำลายตนเองสำหรับการใช้งานทางทหาร หากคุณใส่รหัสผ่านไบออสอย่างไม่ถูกต้อง 2 ครั้งจะเป็นการลบไดรฟ์ด้วยการกระจายของระเบิด คุณสามารถใช้งานได้เหมือนกันถ้าคุณตรวจสอบการจัดการกุญแจ

สิ้นสุดวันที่ Raspberry Pi มีจุดประสงค์เพื่อการศึกษาสำหรับเด็กเพื่อเรียนรู้วิธีใช้ Linux และเขียนโปรแกรมบางโปรแกรม

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

ทางเลือก

  • เขียนซอฟต์แวร์ของคุณเพื่อให้สามารถรวบรวมและปรับใช้กับระบบเป้าหมายในรูปแบบไบนารี ตัวอย่าง EXE สำหรับ windows ที่ทำงานบน. NET, JAR สำหรับ Java หรือ (ไม่แน่ใจใน linux, C ++ หรือไม่)
  • โปรดจำไว้ว่ายิ่งคุณมีความปลอดภัยมากเท่าไรคุณก็จะยิ่งมีเงินมากขึ้นเท่านั้น ไม่มีข้อยกเว้น

1

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

สำหรับผู้ที่คัดลอกการ์ด SD ไปยังการ์ดใหม่แบบสุ่มมันจะไม่ทำงานสำหรับพวกเขาใน Pi อื่น สิ่งนี้จะทำให้คนส่วนใหญ่ขโมยซอฟต์แวร์ของคุณไป คนอื่นที่ฉลาดพอที่จะทำลายสิ่งนี้อาจฉลาดพอที่จะสร้างซอฟต์แวร์ใหม่พวกเขามีไม่มากและฉันไม่คิดว่าพวกเขาจะทำร้ายยอดขายของคุณ


0

คุณสามารถใช้วิธีแก้ปัญหาแบบ piggy-back: Software Serial Protection สำหรับ Raspberry Pi


2
แก้ไขฉันถ้าฉันผิด แต่อุปกรณ์นี้ดูเหมือนจะไม่ได้เพิ่มการป้องกันวิศวกรรมย้อนกลับใด ๆ การตรวจสอบ hardcoded อย่างง่าย ๆ เกี่ยวกับหมายเลขซีเรียลของ CPU จะทำเช่นเดียวกัน
EDP

0

ทำไมไม่เพิ่มแฟลชตาม SPI ไปยังบอร์ดผู้ให้บริการของคุณและเก็บรหัสของคุณไว้? ฉันกำลังพิจารณาตัวเลือกนี้สำหรับผลิตภัณฑ์ของฉันเอง ในกรณีที่ SD เสียหายฉันต้องการให้ผู้ใช้สามารถเขียนใหม่ซึ่งรวมถึงราสเบียนที่กำหนดเองและรหัสเพื่อติดตั้งแฟลช SPI และเรียกใช้ปฏิบัติการ

ตัวเลือกอื่นคือการจัดเก็บคีย์การเข้ารหัสใน RTC ของคุณ ชิป RTC ส่วนใหญ่มีที่เก็บข้อมูลบางส่วนและพวกเขาสามารถ preprogrammed ด้วยกุญแจที่อนุญาตให้ปลดล็อคและติดตั้งไฟล์ปฏิบัติการจาก SD หรือจากแฟลช SPI


-4

ฉันเชื่อว่าซีพียูทั้งหมดที่ใช้ในช่วงของ Raspberry Pi สนับสนุนการบูทอย่างปลอดภัยของพวกเขาเอง ฉันเชื่อว่ามันต้องใช้ 12 โวลต์ในการรีเฟรช 4,8,16,32 หรือ 64K ของแฟลชภายในหรือ EEPROM ซึ่ง pi นั้นไม่มี จากพวกเขาคุณสามารถตั้งค่า Trustzone ด้วยรหัสของคุณเพื่อให้สิ่งที่ดีทั้งหมดไม่สามารถมองเห็นได้ ฉันยังเข้าใจว่าสแตติกแรมทั้งสองรูปแบบมีความเสถียรสำหรับจำนวนของการเขียนซ้ำที่กำหนดเท่านั้น ขั้นตอนแรกของฉันคือการมีซีพียูสำรองและลอง reflashing หน่วยความจำบูตที่ปลอดภัยนี้สักสองสามชั่วโมงหรือหลายวัน ในที่สุดบิตทั้งหมดกลายเป็นคงที่ดังนั้นไม่มีใครสามารถแก้ไขรหัสของคุณและขึ้นอยู่กับผลิตภัณฑ์จริงคุณสามารถขอรหัสประจำตัว 2 ปัจจัย (เช่นธนาคาร) เป็นระยะเพื่อให้ผลิตภัณฑ์แยกรหัสและรหัสเปิดใช้งานใหม่ ที่อยู่อีเมล ถ้าคุณดัดแปลงปี่เล็กน้อย ฉันเชื่อว่า ARM ยังมี CPUID ดังนั้นจึงเป็นระดับความปลอดภัยที่คุณสามารถทำได้ ฉันหมายถึงคุณสามารถส่ง SMS ไปยังหมายเลขที่ต้องการได้ มีหลายวิธี


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