security · 6 دقائق قراءة

Base64 ليس تعمية

يبدو سرًّا. cGFzc3dvcmQxMjM= هي password123، ويستطيع أي أحد أن يرى ذلك في نحو أربع ثوانٍ.

هذا الخلط شائع بما يكفي ليكون له تصنيف خاص في فهارس الثغرات، وهو باقٍ لأن مخرجات Base64 تبدو تمامًا كما يتخيّل الناس شكل البيانات المعمّاة: جدار من الحروف والأرقام ينتهي بعلامة يساوي.

ليس فيه أي خلط. هو المعلومة نفسها مكتوبة بأبجدية أخرى، بقواعد منشورة في وثيقة عامة.

ثلاث وظائف مختلفة

الترميز يغيّر كيف تُمثَّل البيانات لتصمد في رحلة. لا مفتاح ولا سرّ، وقابل للعكس بالكامل من أي أحد. Base64 وترميز الروابط وكيانات HTML كلها ترميزات.

التعمية تجعل البيانات غير مقروءة دون مفتاح. لا يعكسها إلا من يملكه. هذه هي التي توفّر السرّية.

حساب البصمة ينتج قيمة ثابتة الطول وهو عمدًا غير قابل للعكس. يُستعمل للتحقّق من تطابق شيء، لا لتخزين شيء تحتاج استعادته.

الفحص الذي يفصل بينها: هل أستطيع استعادة الأصل، وماذا أحتاج لأفعل ذلك؟ لا شيء إطلاقًا يعني ترميزًا. مفتاح يعني تعمية. لا تستطيع يعني بصمة.

ما الغرض الحقيقي من Base64

أنظمة كثيرة بُنيت لتحمل نصًّا وتسيء التعامل مع البايتات الاعتباطية. البريد الإلكتروني هو المثال التاريخي — فقد صُمّم لمحارف من سبع بتّات، والبايت الذي بتّه الأعلى مضبوط كان يمكن أن يُغيَّر أو يُسقَط في الطريق.

يأخذ Base64 أي بيانات ويعيد كتابتها بـ64 محرفًا تصمد في تلك الرحلة سالمة: A–Z وa–z و0–9 وعلامة الزائد والشرطة المائلة. كل ثلاث بايتات تصير أربعة محارف، ومن هنا تأتي الزيادة البالغة 33% في الحجم، و= يحشو الآخر حين لا يكون طول المدخل من مضاعفات الثلاثة.

مرفق البريد الإلكتروني إذن هو Base64. عنوان البيانات الذي يضمّن صورة في ورقة أنماط هو Base64. كتلة ثنائية داخل مستند JSON هي Base64، لأن JSON لا يملك طريقة لحمل بايتات خام.

كله نقل. لا شيء منه حماية.

أين يكلّف الخلط شيئًا

بيانات الاعتماد في ملفات الإعداد. مرمَّزة لا معمّاة، لأن الصيغة المرمَّزة لا تبدو كلمةَ مرور لمن يلقي نظرة عابرة على الملف. أما لمن يقرأه عن قصد فلا تبدو شيئًا.

مصادقة HTTP الأساسية. الترويسة حرفيًّا username:password بترميز Base64. فوق HTTP العاري هذه كلمة مرور مُرسلة علنًا. أمان النقل يأتي كلّه من TLS، والترميز لا يسهم فيه بشيء.

رموز JWT التي تُعامَل كأنها مبهمة. حمولة الرمز هي Base64 — يقرؤها كل من يحمله. وضع أي شيء خاص فيها نشرٌ له لمن يملك الرمز.

الكوكيز والتخزين المحلّي. ترميز معرّف المستخدم لا يمنع المستخدم من تعديله. فكل ما يستطيع العميل فكّه يستطيع العميل تغييره.

الصيغ

Base64 الآمن للروابط يبدّل + و/ — ولهما معنى في الرابط — بـ- و_، ويُسقط الحشو عادةً. رموز JWT تستعمله، ولهذا يفشل لصق واحد منها في فاكّ قياسي حتى تُعاد المحارف إلى ما كانت.

Base64 بصيغة MIME يدرج فاصل سطر كل 76 محرفًا، فالسلسلة المنسوخة من ترويسة بريد تصل وفيها أسطر جديدة يرفضها بعض الفاكّات.

Base64 بلا حشو شائع، ويُفكّ بلا مشكلة في معظم التنفيذات لا في كلها.

ماذا تستعمل بدلًا منه

لتُبقي شيئًا خاصًّا، عمِّه — بمفتاح، واحفظ المفتاح في مكان غير الذي بجانب البيانات.

لتخزّن كلمة مرور، احسب بصمتها بخوارزمية مصمّمة لذلك. لا SHA-256 وحدها، فهي سريعة، والسرعة هي الخاصّية الخطأ في تخزين كلمات المرور.

لتتأكّد أن ملفًّا وصل سليمًا، قارن بصمة. أما تمرير بايتات عبر شيء لا يتعامل إلا مع النص — فذاك Base64، وهو الأداة الصحيحة تمامًا.

الخلاصة

Base64 تغيير أبجدية بلا مفتاح ولا سرّ. وُجد ليصمد الثنائي في قنوات لا تحمل إلا النص، وهو لا يخفي شيئًا عن أحد. فإن كنت ستستاء من طباعة الأصل على الصفحة، فترميزه لا يغيّر من ذلك شيئًا.

أسئلة

هل Base64 تعمية أم ترميز؟

ترميز. لا مفتاح فيه ولا سرّ — فالقواعد منشورة وعكسه عملية آلية تنفّذها أي أداة فورًا. هو يغيّر كيف تُمثَّل البيانات، لا من يستطيع قراءتها.

هل Base64 آمن؟

لا يقدّم أي أمان إطلاقًا. فمن يرى السلسلة يستطيع فكّها في ثوانٍ. معاملته على أنه حماية صنف معروف من الثغرات، وبيانات اعتماد خُزّنت «مرمَّزة» استُخرجت من ملفات الإعداد ومن الكوكيز ومن تطبيقات الهاتف مرات لا تُحصى.

هل ترميز Base64 قابل للعكس؟

نعم، بالكامل وبالضبط. هذا هو مقصده — فالترميز موجود ليصمد في النقل، فلا بدّ أن يُفكّ عائدًا إلى البايتات الأصلية. أما ما لا يُعكس فهو بصمة، وهي أداة أخرى لعمل آخر.

لماذا يكبّر Base64 بياناتي؟

يمثّل كل ثلاث بايتات بأربعة محارف، فتكبر المخرجات نحو 33% عن المدخلات. هذه كلفة الاقتصار على محارف تصمد في الأنظمة التي تعبث بالبايتات الاعتباطية، ولهذا يكون تضمين الصور الكبيرة عناوينَ بيانات مقايضة لا مكسبًا.

ما Base64 الآمن للروابط؟

Base64 القياسي يستعمل + و/ ، ولكليهما معنى في الرابط. أما الصيغة الآمنة للروابط فتضع - و_ مكانهما، وتُسقط عادةً حشو =. رموز JWT تستعمله، ولهذا لا يُفكّ رمز JWT بفاكّ عادي إلا بعد إعادة تبديل المحارف.

أدوات من هذا الدليل

المزيد من أدوات الأمان — كلّها تعمل في متصفّحك، ولا واحدة منها ترفع ملفًّا.