أدوات المطور · مولد UUID
يمكن للإصدار 1 من UUIDs تسريب عنوان MAC ووقت الإنشاء الخاص بك
· لماذا يهم
uuid التشفير متصفح API
يتضمن UUID المستند إلى الوقت طابعًا زمنيًا يبلغ 60 بت ومعرف عقدة 48 بت والذي غالبًا ما يكون عنوان بطاقة شبكة حقيقي. يوضح هذا المنشور ما يمكن لشخص خارجي قراءته من أحد الأشخاص ولماذا يتجنب الإنشاء العشوائي المشكلة.
المعرف الذي يطلق على الكمبيوتر المحمول الخاص بك - لماذا يمكن أن يكون المعرف الموجود في المستند المُصدر أكثر من مجرد معرف
يتم إنشاء الإصدار 1 UUID من طابع زمني وعنوان MAC وقيمة تسلسل الساعة. يمثل الطابع الزمني 60 بت عدد الفواصل الزمنية 100-نانو ثانية منذ 15 أكتوبر 1582، تاريخ إصلاح التقويم الغريغوري. يحتوي حقل العقدة 48-بت تقليديًا على عنوان IEEE 802 MAC لواجهة الشبكة التي أنشأت UUID. عندما تقوم بتصدير مستند، أو تشغيل أداة أو حفظ ملف يتضمن إصدار 1 UUID، يمكن لأي شخص يقوم لاحقًا بفك تشفير UUID أن يقرأ متى تم إنشاؤه، وإذا كان حقل العقدة هو عنوان MAC حقيقي، فما هو الجهاز الذي أنشأه. تتسرب هذه المعلومات بصمت مما يبدو أنه معرف غير شفاف.
تشريح الإصدار 1 UUID — حقول الطابع الزمني، وتسلسل الساعة وحقل العقدة، ومكان وجود كل منها في أحرف 36
يعد تسرب المعلومات أمرًا خفيًا ولكنه يؤثر على الخصوصية والإسناد. إذا كنت تتعاون مع مؤلف مشارك في مستند وكان عنوان MAC الخاص ببطاقة الشبكة الخاصة بك موجودًا في معرفات UUID v1 المضمنة، فسيتعرف المراقب على الأجهزة المستخدمة في مؤسسة أو موقع معين. إذا قمت بتصدير مستند في وقت محدد، فإن الطابع الزمني في كل v1 UUID حدود عند حدوث العمل. يمكن إخفاء هوية المؤلف الذي يحاول الحفاظ على اسم مستعار من خلال ربط الطابع الزمني UUID بتواريخ النشر المعروفة أو أحداث إنشاء المستندات. تظهر المعرفات غير ضارة لأنها منسقة كسلاسل أحرف 36 غير شفافة، ولكنها ليست مبهمة على الإطلاق لأي شخص يعرف تنسيق v1 ويهتم بفك تشفيرها.
ما يتعلمه المراقب - متى تم إنشاء السجل، وإذا كانت العقدة عبارة عن عنوان جهاز، فما هو الجهاز أو البائع الذي قام بإنشائه
يوضح تشريح الإصدار 1 UUID ما يمكن استخلاصه لأن البنية حتمية وموثقة علنًا. RFC 9562 يحدد التخطيط: 32 bits للوقت_المنخفض، 16 bits للوقت_المنتصف، 4 bits للإصدار المعين على 1، 12 bits للوقت_العالي، 2 bits للمتغير، 14 bits لـ Clock_seq و 48 bits للعقدة. تشتمل حقول الوقت على إجمالي 60 bits، والذي عند دمجه وتفسيره على أنه 100-فواصل زمنية نانو ثانية منذ 1582 ينتج عنه لحظة الإنشاء الدقيقة في حدود 100 نانو ثانية. عادةً ما يحتوي حقل العقدة 48-بت على العنوان MAC كعدد صحيح 48 بت. يعد فك التشفير أمرًا حتميًا: قراءة البايتات وإخفاء الحقول وتحويلها وتفسير القيم. لا يوجد أي تشفير. تجعل البنية UUID التشفير شفافًا تمامًا وقابلاً للعكس.
تاريخ تحذيري - كيف تم استخدام المعرفات المضمنة في المستندات لتتبع المؤلف، موصوفة دون تكهنات
RFC 9562 يقر بسجل الخصوصية ويوصي بعدم استخدام الإصدار 1 للتطبيقات الجديدة لأن التكاليف تفوق الفوائد. تتضمن المواصفات v4 بدائل عشوائية وv7 مرتبة زمنيًا مع توثيق اعتبارات الخصوصية. يتم الاحتفاظ بالإصدار 1 للتوافق مع الأنظمة المنشورة، ولكن لا ينبغي للتعليمات البرمجية الجديدة إنشاء v1 UUIDs دون مراجعة أمنية دقيقة وتبرير صريح للتعرض. ولم تكن الثغرة سهوًا؛ لقد كان اختيارًا متعمدًا للتصميم في الثمانينيات عندما لم تكن تسريبات الخصوصية هي الاهتمامات الأساسية وكان التتبع ميزة مقبولة لتحديد النظام الموزع.
مثال عملي - فك تشفير عينة v1 UUID يدويًا في الطابع الزمني وحقول العقدة
يعد المخطط الزمني مهمًا لفهم التعرض لأن الإصدار 1 UUID في مستند تم إنشاؤه في 1998 يتضمن طابعًا زمنيًا يرميز وقت 1998، وهو أمر مفيد للطب الشرعي ولكنه يمثل المشكلة نفسها. إذا كانت لديك مستندات تاريخية تحتوي على معرفات UUID v1 وقمت بمشاركتها لاحقًا، فستظل الطوابع الزمنية موجودة. لا يمكنك إزالة الحقيقة التاريخية بأثر رجعي المتمثلة في إنشاء UUID في وقت معين؛ يمكنك فقط التوقف عن إنشاء معرفات UUID v1 جديدة. حاولت بعض التطبيقات التخفيف من تسرب عنوان MAC عن طريق استبدال MAC الحقيقي باسم مستعار عشوائي، لكن الطابع الزمني يظل قابلاً للقراءة وفك التشفير بالكامل.
ما الذي تغير في الإصدارين 4 و7 - لا تحمل معرفات UUID العشوائية أي بيانات للجهاز؛ لا يزال الإصدار 7 يكشف عن وقت الإنشاء، والذي قد يكون مقبولاً أو غير مقبول
يوضح أحد الأمثلة العملية فك التشفير عمليًا باستخدام RFC 9562 لأمثلة المتجهات. خذ v1 UUID مثل f81d4fae-7dec-11d0-a765-00a0c91e6bf6 من المواصفات. البايتات بالترتيب هي f81d4fae 7dec 11d0 a765 00a0c91e6bf6. حقل الإصدار موجود في المجموعة الثالثة: 11d0 بالنظام الست عشري هو 0001 0001 1101 0000 بالنظام الثنائي. الإصدار الأول 4 bits هو 0001، وهو الإصدار 1. يتم تقسيم الطابع الزمني عبر المجموعة الأولى والثانية وجزء من المجموعة الثالثة: time_low هو f81d4fae بالنظام العشري 4170404526، time_mid هو 7dec بالنظام العشري 32236، time_high هو 1d0 من المجموعة الثالثة بعد إزالة إصدار nibble بالنظام العشري 464. يؤدي دمج هذه العناصر في قيمة 60 بت إلى الحصول على رقم يمثل 100 فواصل زمنية نانو ثانية منذ 1582.
ما لا يغطيه هذا هو خيار العقدة العشوائية الذي توفره بعض تطبيقات الإصدار 1، والذي يخفف من تسرب الطابع الزمني ولكنه لا يزيله
حقل العقدة في المجموعتين الرابعة والخامسة هو a765 00a0c91e6bf6، والذي يقوم بتشفير معلومات الجهاز إذا كانت البتة 0 تشير إلى الأصالة. إذا كانت البتة الأقل أهمية من الثماني الأولى من حقل العقدة هي صفر، فهذا يشير إلى عنوان IEEE حقيقي؛ إذا تم تعيينه على واحد، فإنه يشير إلى قيمة عشوائية زائفة تم إنشاؤها للخصوصية. في هذا المثال، a765 بالنظام الست عشري هو 10100111 01100101 بالنظام الثنائي؛ البت الأقل أهمية هو 1، لذا فهذه رمز زائف عشوائي، وليست MAC حقيقية. ومع ذلك، أحيانًا ما تقوم التطبيقات الأقدم بتخزين عناوين MAC الحقيقية مباشرة، وإذا فعلت ذلك، فسيتم فك تشفير حقل العقدة 48-بت إلى معرف بطاقة الشبكة. يحتفظ IEEE بسجل للبادئات MAC؛ إن معرفة أن بطاقة الشبكة تبدأ ببادئة معينة يضيق نطاق الشركة المصنعة وربما طراز الكمبيوتر المستخدم.
الخلاصة: تعرف على ما تكشفه معرفاتك — يقوم منشئ ToolAcre بسحب كل معرف من CSPRNG، لذا لا يوجد عنوان MAC أو طابع زمني للتسرب
RFC 9562 الإصدار 4 وما بعده يتعمد تجنب هذا التسرب باستخدام البيانات العشوائية فقط بدلاً من المعلومات المشفرة. الإصدار 4 UUID هو 122 bits من البيانات العشوائية المشفرة مع 4 bits لحقل الإصدار و2 bits للحقل المتغير. قراءة البتات لا تكشف شيئًا سوى أن UUID صالح؛ لا يوجد طابع زمني لفك التشفير، ولا توجد بيانات الجهاز لاستخراجها. يتضمن الإصدار 7 طابعًا زمنيًا لفرز الفوائد ولكن هذا الطابع الزمني مشتق من عصر Unix المألوف والموحد بدلاً من القيمة الغامضة المستندة إلى 1582، وتوثق المواصفات بوضوح أن معلومات الوقت موجودة في المعرف. تختلف خصائص الخصوصية بشكل أساسي بين الإصدارات.