เหตุผลที่จะไม่ถือว่าที่อยู่ MAC ของอุปกรณ์นั้นไม่เหมือนกัน


18

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

backstory ของสิ่งนี้คือฉันกำลังทำการวิจัยการใช้งานการใช้งานฮาร์ดแวร์ชนิด IOT ส่วนตัวสำหรับลูกค้า เราจะจัดเตรียมชุดอุปกรณ์ฮาร์ดแวร์ที่มีความสามารถด้านเครือข่ายเพื่อติดตั้งในสถานที่ห่างไกล อุปกรณ์เหล่านี้จะสื่อสารกลับไปที่ API โดยการส่งข้อความ เพื่อลดความซับซ้อนในการตั้งค่าฉันหวังว่าจะส่งที่อยู่ MAC ของอินเทอร์เฟซเครือข่ายบนอุปกรณ์ในข้อความเพื่อผูกข้อความเหล่านี้กลับไปที่ "device_id" ที่ด้าน API ความคิดของฉันคือการทำสิ่งที่ไม่จำเป็นต้องติดตั้งบนอุปกรณ์ก่อนการใช้งานก็สามารถสอบถามได้ในระหว่างการทำงานปกติ ฉันสามารถสรุปได้อย่างปลอดภัยว่าเราสามารถระบุได้ว่าที่อยู่ MAC ของแต่ละอุปกรณ์นั้นมีความเป็นเอกลักษณ์


4
อุปกรณ์เสมือนได้สร้างที่อยู่ MAC ซึ่งเป็นเอกลักษณ์เฉพาะโดเมนออกอากาศภายใน มีอินสแตนซ์อื่น ๆ ที่ mac อาจชนกับอุปกรณ์อื่น - บางอุปกรณ์ให้คุณอัปเดต mac ในเฟิร์มแวร์ อุปกรณ์ HA มี mac เสมือนในบางกรณี ตัวอย่างเหล่านี้อาจไม่เกี่ยวข้องกับสถานการณ์ของคุณ
พอล

9
ผู้คนสับสนอย่างมากเกี่ยวกับเอกลักษณ์ของที่อยู่ MAC สิ่งที่ไม่ซ้ำกันเกี่ยวกับที่อยู่ MAC คือ OUI ที่กำหนดให้กับองค์กร ที่อยู่แต่ละรายการภายใน OUI ไม่รับประกันว่าจะไม่ซ้ำกันและ IEEE บอกว่าการมอบหมายที่อยู่ภายใน OUI นั้นขึ้นอยู่กับดุลยพินิจของเจ้าของ OUI
Ron Maupin

2
นอกจากนี้ยังง่ายสำหรับบุคคลที่จะแก้ไขที่อยู่ MAC ของอุปกรณ์ นั่นหมายความว่าที่อยู่ MAC สามารถโคลนหรือกำหนดในลักษณะที่สร้างรายการซ้ำ บุคคลที่กำหนดที่อยู่ MAC นั้นควรจะตั้งค่าบิต U / L แต่ก็ไม่ค่อยเกิดขึ้น
Ron Maupin

5
มีจะต้องมีที่อยู่ MAC ที่เหมือนกันใน wild ตัวอย่างเช่น Intel ได้ลงทะเบียน 7 OUI แต่ละครั้งมี 16.7 ล้านที่อยู่ภายใต้คำนำหน้าของพวกเขานั่นคือทั้งหมด 116 ล้านที่อยู่ Heck มีการ์ดเครือข่าย Intel ในเกือบทุกเมนบอร์ด คุณจะบอกฉันว่ามีคอมพิวเตอร์ในโลกน้อยกว่า 116 ล้านเครื่องใช่ไหม ไม่แน่นอน แต่ผลที่ตามมาคือ: แน่นอนว่า MACs ไม่ได้มีลักษณะเฉพาะใด ๆ เป็นเพียงความเป็นไปได้ที่จะมี MAC ที่เหมือนกันสองตัวใน LAN เดียวกันนั้นค่อนข้างต่ำดังนั้นจึงไม่ใช่ปัญหา
Damon

7
ฉันลงเอยด้วยที่อยู่ MAC สองที่เหมือนกันในเครือข่ายเดียวกันโดยบังเอิญโดยบังเอิญ - มันเป็นนรกที่จะดีบั๊ก
คริสเตียน

คำตอบ:


34

จากคำแถลงของคุณที่คุณสามารถยืนยันได้ในระหว่างการจัดเตรียมว่าผู้ผลิต MAC นั้นมีความเป็นเอกลักษณ์ในเครือข่ายของอุปกรณ์ที่คุณกำลังสร้าง (ซึ่งไม่ได้อยู่ในตัวของมันเองและแน่นอน แต่ให้พิจารณาคำถามต่อไปนี้:

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

  • 48 บิตกว้างพอหรือไม่ มันอาจจะเป็น แต่ก็คุ้มค่าที่จะถาม

  • คุณจะต้องซ่อมอุปกรณ์ด้วยการเปลี่ยนอุปกรณ์หรือไม่

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

  • จะมีอินเทอร์เฟซการบำรุงรักษาใด ๆ ที่ผู้ใช้ (ได้รับอนุญาตหรือไม่) อาจเปลี่ยนแปลง nic ที่ ROM, ไดรเวอร์หรือระดับ OS? ผู้โจมตีสามารถแนะนำข้อบกพร่องในข้อมูลของคุณหากพวกเขาต้องการแก้ไข MAC

  • ข้อมูลของคุณจะถูกรวมเข้ากับแหล่งข้อมูลอื่น ๆ โดยใช้ MAC เป็นกุญแจได้หรือไม่

  • คุณเคยใช้ MAC สำหรับจุดประสงค์ในการเชื่อมต่อเครือข่ายใด ๆ นอกเหนือไปจากการนำทางเลเยอร์ 2 LAN ที่อุปกรณ์เชื่อมต่ออยู่ (แบบใช้สายหรือไร้สาย) หรือไม่

  • LAN ที่อุปกรณ์ของคุณเชื่อมต่ออยู่จะเป็นเครือข่ายส่วนตัวหรือหนึ่งที่ลูกค้าชั่วคราวจำนวนมาก (เช่นโทรศัพท์มือถือของพนักงาน) จะเชื่อมต่อหรือไม่

หากคำตอบของคุณคือ

NO, yes, no, no, no, no, no, private

ถ้างั้นฉันก็ไม่สามารถคิดถึงข้อบกพร่องที่แท้จริงในแผนของคุณ

โปรดทราบว่าคุณไม่จำเป็นต้องใช้ MAC ที่มีเอกลักษณ์ทั่วโลกเพื่อดึงสิ่งนี้ออก คุณเพียงแค่ต้องตรวจสอบให้แน่ใจว่าชุดย่อยของอุปกรณ์อินเทอร์เน็ตที่เรียก API ของคุณนั้นไม่เหมือนใคร เช่นเดียวกับ nic ที่ซ้ำกันที่ได้รับมอบหมายในสองเมืองที่แตกต่างกันไม่สามารถชนกันได้เพราะอยู่ใน LAN ที่แตกต่างกันคุณไม่สามารถมีคีย์ฐานข้อมูลใน MAC ได้หากไม่เคยเรียก API ของคุณ


2
ในช่วงกลางทศวรรษที่เพื่อนดูแลระบบคนหนึ่งบอกฉันว่าเขาเพิ่งได้รับกล่อง Nics จากผู้ผลิตว่าทุกคนมี NIC เหมือนกัน ฉันไม่รู้ว่าเรื่องนี้จริงแค่ไหน แต่เป็นเรื่องเดียวที่ฉันเคยได้ยินนอกเหนือจากข้อกล่าวหาทั่วไปที่ผู้ผลิตบางรายมี "การใช้มากเกินไป" การจัดสรรของพวกเขาในครั้งเดียวหรืออื่น
Frank Thomas

ขอบคุณสำหรับคำตอบโดยละเอียด ฉันคิดว่าคำตอบเดียวที่ไม่ตรงกันคือ # 3 แต่ถ้าเราต้องซ่อมอุปกรณ์ด้วยนิคที่ชำรุดเราอาจจะเปลี่ยนอุปกรณ์ทั้งหมด ไคลเอ็นต์ควบคุมทั้ง api และฮาร์ดแวร์และจะมีการควบคุมทางกายภาพเพื่อป้องกันการเข้าถึงอุปกรณ์โดยไม่ได้รับอนุญาต นอกจากนี้ฉันคิดว่ามันเป็นสิ่งสำคัญที่จะต้องทราบว่าความคิดเห็น / คะแนนจำนวนมากในที่นี้เกี่ยวข้องกับการพยายามใช้ MAC เพื่อจุดประสงค์ในการเชื่อมต่อเครือข่ายซึ่งฉันเข้าใจว่าเป็นปัญหาที่จะถือว่าไม่ซ้ำกัน สิ่งนี้มีไว้สำหรับ uuid / อุปกรณ์ที่ไม่ต้องการการสร้าง
Matt Phillips

ต่อ: ที่ฉันเข้าใจจะเป็นอุปกรณ์ / ผู้ผลิตเฉพาะนิค
Matt Phillips

7
@FrankThomas: มันไม่เกิดขึ้น ฉันเคยไปที่การประชุมคอมพิวเตอร์ที่มีกลุ่มคนจำนวนไม่กี่โหลที่มืออาชีพส่วนใหญ่มีไม่กี่คนที่บอกว่าพวกเขาได้พบสิ่งนี้ เห็นได้ชัดว่าแผนกการปรับปรุงผู้ผลิตรายใหญ่มีแนวโน้มที่จะทำเช่นนี้โดยเฉพาะ
TOOGAM

@ Frankthomas เพิ่งได้รับกล่องของ Nics ... ทุกคนมี NIC ที่เหมือนกัน
Dmitry Kudriavtsev

9

ที่อยู่ MAC นั้นไม่ซ้ำกัน

สามารถมีและจะซ้ำกับ MACs มีสาเหตุหลายประการที่เป็นหนึ่งที่พวกเขาไม่จำเป็นต้องไม่ซ้ำกัน (ทั่วโลก)

MAC จะต้องไม่ซ้ำกันในเครือข่ายท้องถิ่นดังนั้น ARP / NDP สามารถทำงานได้และสวิตช์รู้ตำแหน่งที่จะส่งดาตาแกรมเข้ามา โดยปกติ (ไม่จำเป็น) ว่าเงื่อนไขเป็นจริงและสิ่งต่าง ๆ ใช้งานได้ดีเพียงเพราะความเป็นไปได้ที่จะมี MAC ที่เหมือนกันสองเครื่องใน LAN เดียวกันแม้ว่าพวกเขาจะไม่ได้เป็นเอกลักษณ์ก็ยังค่อนข้างต่ำ

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

พื้นที่ที่อยู่แบ่งออกเป็นสองส่วน 24 บิต (ซับซ้อนกว่าเล็กน้อย แต่ให้เพิกเฉยต่อรายละเอียดเล็กน้อย) ครึ่งหนึ่งคือ OUI ที่คุณสามารถลงทะเบียนกับ IEEE และมอบหมายให้ บริษัท ของคุณประมาณ 2,000 ดอลลาร์ ส่วนที่เหลืออีก 24 บิตคุณทำสิ่งที่คุณต้องการ แน่นอนคุณสามารถลงทะเบียน OUI หลายตัวซึ่งเป็นสิ่งที่ผู้เล่นรายใหญ่ทำ

ยกตัวอย่างของ Intel พวกเขาลงทะเบียนรวมทั้งสิ้น 7 OUI ทำให้มีที่อยู่ทั้งหมด 116 ล้านที่อยู่
เมนบอร์ดของคอมพิวเตอร์ของฉัน (ซึ่งใช้ชิปเซ็ต X99) เช่นเดียวกับเมนบอร์ดของแล็ปท็อปและเมนบอร์ดของคอมพิวเตอร์ทุกเครื่องที่ใช้ x86 ที่ฉันเป็นเจ้าของในช่วง 10-15 ปีที่ผ่านมามีการ์ดเครือข่าย Intel เป็นส่วนหนึ่งของชิปเซ็ต แน่นอนว่ามีคอมพิวเตอร์มากกว่า Intel มากกว่า 116 ล้านเครื่องในโลก ดังนั้น MACs ของพวกเขาอาจจะไม่ซ้ำกัน (ในแง่ของความเป็นเอกลักษณ์ระดับโลก)

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

ทีนี้จะทำอย่างไรกับปัญหาของคุณ?

วิธีแก้ปัญหาอาจง่ายกว่าที่คุณคิด อุปกรณ์ IoT ของคุณส่วนใหญ่อาจต้องใช้เวลาบ้างโดยปกติเวลาจะได้รับโดยอัตโนมัติผ่าน NTP ความแม่นยำโดยทั่วไปของ NTP อยู่ในช่วงไมโครวินาที (ใช่นั่นคือขนาดเล็กไม่ใช่หนึ่งในพัน) ฉันวิ่งntpq -c rlเพื่อให้แน่ใจและได้บอก 2 -20

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

เวลาบูตของอุปกรณ์ IoT ของคุณจะเท่ากันทุกอุปกรณ์ ยกเว้นว่าไม่เป็นความจริงเลย
ด้วยตัวจับเวลาความละเอียดสูงเวลาการบู๊ตจะแตกต่างกันอย่างมากแม้ในอุปกรณ์เดียวกันทุกครั้ง มันอาจจะเป็นเพียงนาฬิกาไม่กี่เห็บที่แตกต่างกัน (หรือไม่กี่แสนถ้าคุณอ่านบางสิ่งบางอย่างเช่นการนับเวลาของ CPU) ดังนั้นจึงไม่ซ้ำกันมาก แต่มันเพิ่มเอนโทรปีบางอย่าง
ในทำนองเดียวกันเวลาที่ใช้connectในการส่งคืนในครั้งแรกที่คุณเข้าถึงไซต์ API จะมีความแตกต่างกันเล็กน้อย แต่สามารถวัดได้ทุกครั้ง ในทำนองเดียวกันgetaddrinfoจะใช้เวลาต่างกันเล็กน้อยซึ่งสามารถวัดได้สำหรับทุกอุปกรณ์เมื่อค้นหาชื่อโฮสต์ของเว็บ API เป็นครั้งแรก

เชื่อมเอนโทรปีที่สามหรือสี่เหล่านี้ (ที่อยู่ MAC, เวลาเปิดเครื่องครั้งแรก, เวลาที่จะบู๊ตเป็นครั้งแรก, เชื่อมต่อครั้ง) และคำนวณแฮชจากนั้น MD5 จะทำได้ดีสำหรับวัตถุประสงค์นั้น ที่นั่นคุณมีเอกลักษณ์

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

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


ถูกคำสั่งควรจะเป็นntpq -c rl?
ทอม

1
@ ทอม: ใช่ฉันไม่แน่ใจว่าทำไมมันถึงอ่าน "r1" ในคำตอบของฉันแน่นอนต้องเป็น "rl"! จะแก้ไขให้ถูกต้อง :)
เดมอน

ฉันจัดการ LAN เมื่อประมาณ 30 ปีที่แล้วและเรามี MAC ที่ซ้ำกัน ผู้ขายใช้หมายเลขซีเรียลของบอร์ด I / O เพื่อสร้าง MAC แต่พวกเขาลืมที่จะรวมหมายเลขรุ่นและเรามีสองรุ่นที่แตกต่างกันพร้อมหมายเลขอนุกรมเดียวกัน โชคดีที่พวกเขามีวิธีตั้งค่า MAC ด้วยตนเองดังนั้นเราจึงลบล้างมันบนอุปกรณ์ใดอุปกรณ์หนึ่ง
Barmar

โดยทั่วไป MAC แอดเดรสจะถูกจัดสรรโดยผู้จำหน่ายบอร์ดไม่ใช่ผู้ขายชิป ดังนั้น Intel จะต้องได้รับที่อยู่สำหรับบอร์ด Intel ไม่ใช่ชิป Intel
plugwash

เราอาจจะไปเส้นทางที่คล้ายกับย่อหน้าสุดท้ายของคุณ ขอบคุณสำหรับความคิด!
Matt Phillips

2

เนื่องจากปัญหาที่นี่เป็นปัญหา XY จริง ๆ ฉันจะแก้ไขปัญหาดังกล่าว: วิธีการรับตัวระบุที่ไม่ซ้ำกันสำหรับชิ้นส่วนของฮาร์ดแวร์ในครั้งแรกที่บูทโดยไม่ต้องโหลดตัวระบุล่วงหน้าลงบนพวกเขา วิธีการที่ดีทั้งหมดต้มลงไปสิ่งหนึ่งจริง ๆ : มีแหล่งของเอนโทรปี

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

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


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

0

ฉันไม่ต้องการตอบคำถามโดยตรงเนื่องจากมีคำตอบที่ดีมาก ๆ แต่ฉันอยากจะแนะนำอีกค่าที่เหมาะสมกว่าซึ่งอาจใช้เป็นรหัสอุปกรณ์ได้

หากฮาร์ดแวร์ของคุณรองรับคุณสามารถพิจารณาใช้ SMBIOS UUID นี่คือรหัสที่ไม่ซ้ำกันสำหรับเมนบอร์ดและอุปกรณ์ โปรดทราบว่าอุปกรณ์ IoT สามารถมี NIC หลายตัว (LAN & WiFi) ดังนั้นหากคุณเลือกเส้นทาง MAC คุณยังต้องหาวิธีการเลือกหนึ่งอย่างสม่ำเสมอ

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


0

ฉันเกลียดการสันนิษฐานว่าเป็นปัญหา XY เพราะบ่อยครั้งที่ OP มีเหตุผลที่ซับซ้อนแม้ว่าจะทำสิ่งต่าง ๆ ในแบบที่พวกเขากำลังทำอยู่ แต่คุณอาจต้องการดูวิธีอื่น ๆ ในการสร้างตัวระบุที่ไม่ซ้ำกันสำหรับอุปกรณ์แต่ละตัวเช่น MAC address เป็น "อุปกรณ์สร้าง" ในอุปกรณ์และไม่จำเป็นต้องสร้างตัวระบุของคุณเอง

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

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

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


จริง ๆ แล้วฉันไม่แน่ใจว่านี่เป็นปัญหา XY อย่างแท้จริงไม่ใช่อย่างน้อยสำหรับผู้ชมของเรา ว่า OP ต้องการกลไกสำหรับซอฟต์แวร์ของเขาในการระบุอุปกรณ์อย่างต่อเนื่องและจากนั้นจึงผูกค่าอย่างมีเหตุผลให้ชัดเจนและไม่คลุมเครือ OP ไม่ได้ถามคำถามผิด หากพวกเขาถามว่ากลไกใดที่พวกเขาสามารถใช้เพื่อระบุอุปกรณ์คำถามนี้จะถูกปิดเป็น offtopic เนื่องจากมีความสัมพันธ์กับการเขียนโปรแกรมบางส่วนและไม่แสดงปัญหาเฉพาะกับฮาร์ดแวร์หรือซอฟต์แวร์คอมพิวเตอร์ การขอให้เพื่อนทบทวนการตัดสินใจด้านเทคนิคไม่ใช่ XY
Frank Thomas

@ Frankthomas อย่างที่ฉันพูดฉันเกลียดการสมมติว่ามีปัญหา XY ฉันไม่ได้สมมติปัญหา XY ที่นี่ ฉันยอมรับว่าเป็นที่ยอมรับได้อย่างสมบูรณ์ในการขอตรวจสอบวิธีแก้ไขปัญหาเฉพาะแม้ว่าจะมีวิธีแก้ไขปัญหาอื่น ๆ ก็ตาม แต่บ่อยครั้งที่ผู้คนกล่าวหาว่าเป็นปัญหาแบบ XY
Micheal Johnson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.