وأوضح Punycodes

وأوضح Punycodes

عقدة المصدر: 1903509

عندما تكون مقيدًا باستخدام ASCII، كيف يمكنك تمثيل أشياء أكثر تعقيدًا مثل الرموز التعبيرية أو الأحرف غير اللاتينية؟ إحدى الإجابات هي Punycode، وهي طريقة لتمثيل أحرف Unicode في ASCII. ومع ذلك، في حين أنه يمكنك تقنيًا تشفير البتات الأولية من Unicode إلى أحرف، مثل Base64، هناك عقبة. يتطلب نظام اسم النطاق (DNS) عمومًا أن تكون أسماء المضيفين غير حساسة لحالة الأحرف، لذا سواء كتبت HACKADAY.com أو HackADay.com أو hackaday.com فقط، فإن كل شيء يذهب إلى نفس المكان.

[أ. كوستيلو] في جامعة كاليفورنيا، اقترح بيركلي فكرة Punycode في RFC 3492 في مارس 2003. وهو يوضح خوارزمية بسيطة حيث يتم سحب جميع أحرف ASCII العادية ولصقها على جانب واحد مع وجود فاصل بينهما، في هذه الحالة، واصلة. ثم يتم ترميز أحرف Unicode وتعليقها في نهاية السلسلة.

أولاً، يتم ضرب نقطة التشفير الرقمية والموضع في السلسلة معًا. ثم يتم ترميز الرقم كـ a قاعدة 36 (az و0-9) عدد صحيح متغير الطول. على سبيل المثال، التحية واليونانية للشكر، "مرحبًا، ευχαριστώ” يصبح "مرحبًا، -mxahn5algcq2". وكذلك المدينة الجميلة ميونيخ يصبح منشين-3ya.

كما قد تلاحظ في المثال اليوناني، لا يوجد ما يساعد وحدة فك الترميز في معرفة الأحرف الأساسية 36 التي تنتمي إلى رمز Unicode الأصلي. بفضل الأعداد الصحيحة ذات الطول المتغير، يمكن التعرف على كل رقم مهم، حيث توجد حدود للأرقام التي يمكن تشفيرها. تأتي آلة الحالة المحدودة للإنقاذ. يقدم RFC بعض التعليمات البرمجية الزائفة المثالية التي تحدد الخوارزمية. إنه أمر ذكي جدًا، حيث يستخدم التحيز الذي يتدحرج مع استمرار عملية فك التشفير. وبما أنها تتزايد دائمًا، فهي دالة رتيبة مع بعض الخصائص الذكية.

بالطبع، لمنع تفسير عناوين URL العادية على أنها رموز صغيرة، تحتوي عناوين URL على بادئة صغيرة خاصة xn-- للسماح للمتصفح بمعرفة أنه رمز. يتضمن ذلك جميع أحرف Unicode، لذا فإن الرموز التعبيرية صالحة أيضًا. فلماذا لا يمكنك الذهاب إلى xn-mnchen-3ya.de؟ إذا كتبته في متصفحك أو نقرت على الرابط، فقد ترى أن متصفحك يحول مجموعة الأحرف المربكة هذه إلى عنوان URL جميل (لا تفعل كل المتصفحات هذا). المشكلة الأكبر هي Unicode نفسها.

في حين أن Unicode يقدم دعمًا مذهلاً لجعل مئات اللغات المستخدمة حول الويب يوميًا ممكنة، وحتى نجرؤ على القول، حتى بشكل مباشر إلى حد ما، هناك بعض الثآليل. تسمح الحروف السيريلية ذات العرض الصفري وغيرها من شذوذات Unicode لأولئك الذين لديهم نوايا شريرة بإعداد نطاق، عند عرضه، يعرض كموقع ويب معروف. شهادات SSL صالحة، ويتم التحقق من كل شيء آخر. تتضمن السيريلية أحرفًا تبدو متطابقة بصريًا مع نظيراتها اللاتينية ولكن يتم تمثيلها بشكل مختلف. إن فرص المتسللين ومحاولات التصيد الاحتيالي كبيرة جدًا، وحتى الآن، لم يتم السماح باستخدام رموز Punycode في معظم النطاقات.

على سبيل المثال، هل يمكنك معرفة الفرق بين هذين المجالين؟

hackaday.com

hackаday.com

ستعرض بعض المتصفحات نص التمرير على هيئة Punycode، والبعض الآخر سيحتفظ به باعتباره مكافئًا لـ UTF-8. تم استبدال الحرف "a" (U+0061) بالحرف السيريلي "a" (U+0430)، والذي تعرضه معظم أجهزة الكمبيوتر بنفس الحرف تمامًا.

هذا هو هجوم التماثل المتماثل لـ IDN، حيث يعتمدون على قيام المستخدم بالنقر فوق رابط لا يمكنهم التمييز بينه. في عام 2001، نشر باحثان أمنيان بحثًا حول هذا الموضوع، حيث قاما بتسجيل "microsoft.com" بأحرف السيريلية كدليل على المفهوم. ردًا على ذلك، يوصى بأن تقبل نطاقات المستوى الأعلى فقط أحرف Unicode التي تحتوي على أحرف لاتينية وأحرف من اللغات المستخدمة في ذلك البلد. ونتيجة لذلك، فإن العديد من نطاقات المستوى الأعلى الشائعة الموجودة في الولايات المتحدة لا تقبل أسماء نطاقات Unicode على الإطلاق. على الأقل يتم ربط الأحرف غير القابلة للعرض على وجه التحديد بواسطة ICANN، مما يتجنب وجود علبة كبيرة من الديدان، ولكن وجود أحرف متطابقة بصريًا ولكن مختلفة من حيث البت يؤدي إلى الارتباك.

ومع ذلك، يتم تنفيذ إجراءات تخفيف هذه الأنواع من الهجمات ببطء. كطبقة أولى من الحماية، تعرض المتصفحات المستندة إلى Firefox وChromium فقط الإصدار الذي لا يحتوي على Punycode إذا كانت جميع الأحرف من نفس اللغة. تقوم بعض المتصفحات بتحويل جميع عناوين URL الخاصة بـ Unicode إلى Punycode. تستخدم تقنيات أخرى التعرف البصري على الأحرف (OCR) لتحديد ما إذا كان من الممكن تفسير عنوان URL بشكل مختلف. خارج المتصفح، قد لا تتمتع الروابط المرسلة عبر الرسائل النصية أو رسائل البريد الإلكتروني بنفس المستوى من الذكاء، ولن تعرف ذلك حتى تفتحها في متصفحك. وبحلول ذلك الوقت، يكون قد فات الأوان.

بغض النظر عن التحديات، هل سيحصل Punycodes على وقته في الشمس؟ هل سيحصل Hackaday على ☠️📅.com؟ من تعرف. ولكن في غضون ذلك، يمكننا أن نتمتع بحل ذكي تم اقتراحه في عام 2003 للمشكلة الشائكة المتمثلة في تدويل أسماء النطاقات والتي لم نتمكن بعد من حلها بالكامل.

الطابع الزمني:

اكثر من هاك يوم