← المدونة

كيف تحمي الأدوات المستندة إلى المتصفح بياناتك: WebAssembly و Web Workers والمعالجة بدون معرفة

استكشف البنية التقنية وراء المعالجة من جانب العميل — من WASM و Web Workers إلى التنفيذ المعزول وتصميم عدم المعرفة.

  • متصفحات الويب الحديثة هي من بين أكثر منصات البرمجيات تطوراً التي تم إنشاؤها على الإطلاق. يمكنها عرض رسومات ثلاثية الأبعاد معقدة، وبث فيديو عالي الدقة، وتشغيل أدوات التعاون في الوقت الفعلي، وكما تظهر أدوات مثل بيبوب، أداء معالجة بيانات ثقيلة كانت ممكنة فقط على برامج سطح المكتب المخصصة. فهم كيفية قيام الأدوات المستندة إلى المتصفح بحماية بياناتك مع تقديم هذا الأداء يتطلب نظرة على أربع تقنيات رئيسية: التنفيذ المعزول، WebAssembly، Web Workers، وفلسفة التصميم بدون معرفة.
  • لنبدأ بنموذج أمان المتصفح نفسه. كل متصفح حديث يطبق شيئاً يسمى سياسة نفس الأصل وبيئة تنفيذ معزولة (sandbox). عندما تزور موقعاً إلكترونياً، فإن كود JavaScript و WebAssembly الذي يعمل على تلك الصفحة محصور في حاوية افتراضية — صندوق رمل — ليس لديه وصول مباشر إلى نظام الملفات الخاص بك أو نظام التشغيل الخاص بك أو علامات التبويب الأخرى في المتصفح. هذا الصندوق الرملي يتم فرضه على مستوى نظام التشغيل بواسطة بنية عمليات المتصفح: كل علامة تبويب تعمل في عملية نظام تشغيل خاصة بها، معزولة عن كل علامة تبويب أخرى وعن النظام بشكل عام.
  • هذا الصندوق الرملي ليس مجرد مفهوم نظري — إنه الأساس الذي تقوم عليه أمان البيانات من جانب العميل. لأن كود صفحة الويب يمكنه فقط التفاعل مع ما تسمح به واجهة برمجة تطبيقات المتصفح صراحةً، فإن الأداة المصممة بشكل صحيح المستندة إلى المتصفح لا يمكنها حرفياً إرسال ملفاتك إلى أي مكان ما لم تبدأ طلب شبكة صراحة. يمكنك التحقق من ذلك بنفسك: افتح أدوات المطور في متصفحك (F12)، وانتقل إلى علامة التبويب Network، واستخدم أي أداة من أدوات هذا الموقع. سترى صفر طلبات HTTP صادرة أثناء المعالجة. البيانات لا تغادر أبداً.
  • WebAssembly تأخذ هذا خطوة أبعد من خلال جلب أداء الكود الأصلي إلى صندوق الرمل الخاص بالمتصفح. تقليدياً، إذا أردت معالجة PDF أو ضغط صورة في المتصفح، كنت مقيداً بـ JavaScript — لغة عالية المستوى ومكتوبة بشكل ديناميكي، ورغم أنها متعددة الاستخدامات بشكل لا يصدق، إلا أنها أبطأ بشكل أساسي من اللغات المترجمة مثل C++ أو Rust للعمليات كثيفة الاستخدام لوحدة المعالجة المركزية. WASM تغير هذا من خلال توفير هدف ترجمة لهذه اللغات يعمل في المتصفح بسرعة قريبة من السرعة الأصلية، مع البقاء داخل نفس الصندوق الرملي الأمني.
  • لبيبوب، WASM يعني أنه يمكننا استخدام نفس المكتبات المثبتة التي تعتمد عليها الأدوات من جانب الخادم — مكتبات مثل pdf.js لعرض PDF، و libjpeg-turbo لضغط الصور، و zlib للضغط للأغراض العامة — مترجمة لتعمل مباشرة في متصفحك. ليس هناك إعادة تنفيذ JavaScript مخففة؛ إنه نفس كود C و Rust المختبر، مترجم إلى WASM، وينفذ على جهازك بنفس الكفاءة التي كان سيعمل بها على الخادم. لكن لأنه يعمل في صندوق الرمل الخاص بمتصفحك، فليس لديه وصول إلى بيانات أخرى على نظامك ولا يمكنه الاتصال بالخادم بمعلوماتك.
  • Web Workers تحل مشكلة مختلفة لكنها مهمة بنفس القدر: الحفاظ على استجابة واجهة المستخدم أثناء المعالجة الثقيلة. قبل أن يتم توحيد معيار Web Workers، أي عملية JavaScript أطول من حوالي 50 مللي ثانية كانت ستجمد علامة تبويب المتصفح، مما يجعل الصفحة غير مستجيبة ويخلق تجربة مستخدم سيئة. Web Workers هي خيوط خلفية تقوم بتشغيل كود JavaScript و WASM بالتوازي مع خيط واجهة المستخدم الرئيسي. تتواصل مع الخيط الرئيسي فقط من خلال نظام آمن لتبادل الرسائل، يتبادل رسائل عادية — أبداً مراجع ذاكرة مباشرة أو مقابض ملفات.
  • تصميم تبادل الرسائل هذا هو ميزة أمنية في حد ذاته. لأن Worker لا يمكنه الوصول مباشرة إلى DOM أو التخزين المحلي للمتصفح أو متغيرات الخيط الرئيسي، هناك فصل صارم للوصول إلى البيانات. الخيط الرئيسي يحمّل ملفك، وينقل نسخة من البيانات إلى Worker، ويقوم Worker بمعالجتها في عزلة. بمجرد اكتمال المعالجة، يرسل Worker النتيجة كرسالة، ويقوم الخيط الرئيسي بتنظيف كل من البيانات الأصلية و Worker. هذا يعني أن البيانات الوسيطة الحساسة — محتويات الملفات المُفككة، المخازن المؤقتة — توجد فقط في ذاكرة Worker المعزولة، وليس في الخيط الرئيسي المرئي عالمياً.
  • فلسفة التصميم بدون معرفة (zero-knowledge) تربط هذه التقنيات معاً في بنية خصوصية متماسكة. الأداة بدون معرفة هي تلك التي، بتصميمها ذاته، لا يمكنها معرفة أي شيء عن البيانات التي تعالجها. على بيبوب، يتم تحقيق ذلك من خلال قيد معماري متعمد: خادم الويب الذي يوفر ملفات HTML و CSS و JavaScript منفصل تماماً عن أي منطق معالجة بيانات. الخادم لا يرى ملفك أبداً، ولا يخزنه أبداً، ولا يسجله أبداً، ولا ينقله أبداً. من منظور الخادم، تفاعلك لا يمكن تمييزه عن شخص قام بتحميل الصفحة ولم يستخدم أي أداة على الإطلاق.
  • قارن هذا بأداة نموذجية من جانب الخادم. في هذا النموذج، أنت تضع ثقتك في مزود الخدمة للتعامل مع بياناتك بمسؤولية، لتأمين بنيتهم التحتية ضد الاختراقات، لعدم الاحتفاظ بالسجلات لفترة أطول من اللازم، وعدم استخدام بياناتك لأغراض لم تقصدها. حتى لو كان المزود جديراً بالثقة — والكثير منهم كذلك — فإن البيانات لا تزال تعبر الإنترنت العام، وتهبط على خادم لا تتحكم فيه، وتتم معالجتها بواسطة برامج تعمل في بيئة لا يمكنك فحصها. سطح الهجوم يشمل مسار الشبكة، ونظام تشغيل الخادم، ومكتبة المعالجة، وقاعدة البيانات، وأي خدمات طرف ثالث مدمجة في خط الأنابيب.
  • مع أداة من جانب العميل مثل بيبوب، يتقلص سطح الهجوم إلى نقطة واحدة: متصفحك الخاص. الكود الوحيد الذي يلمس بياناتك هو الكود الذي تم تسليمه إلى متصفحك في تحميل الصفحة الأولي، ويمكنك فحص كل بايت منه باستخدام أدوات المطور في المتصفح. ملفات WASM الثنائية مفتوحة المصدر أو مبنية من مكتبات معروفة. كود JavaScript الذي يدير المعالجة قابل للقراءة في علامة تبويب Sources في أدوات المطور الخاصة بك. لا توجد استدعاءات شبكة، ولا قواعد بيانات خادم، ولا واجهات برمجة تطبيقات معالجة طرف ثالث، ولا سياسات احتفاظ بالبيانات للوثوق بها — لأنه لا يوجد شيء للاحتفاظ به.
  • التخزين المحلي وإدارة الجلسات على بيبوب تتبع نفس مبادئ الخصوصية أولاً. نحن لا نستخدم ملفات تعريف الارتباط للتتبع أو التحليلات أو تحديد هوية المستخدم. التخزين الوحيد في المتصفح الذي نستخدمه هو ذاكرة التخزين المؤقت القياسية للمتصفح لتسريع تحميل الصفحات اللاحقة — وهذا يخزن فقط كود الأداة، وليس بياناتك أبداً. إذا قمت بتحديث الصفحة أو إغلاق علامة التبويب، يتم تجاهل جميع نتائج المعالجة. لا توجد حسابات مستخدمين، ولا رموز جلسة، ولا معرفات دائمة. زيارتك للموقع مجهولة بالتصميم، ونحن نعتزم إبقائها على هذا النحو.
  • الشفافية في البنية من جانب العميل هي واحدة من أقوى مزاياها الأمنية. أي شخص لديه مهارات تطوير ويب أساسية يمكنه التحقق بالضبط مما تفعله الأداة ببياناته. علامة التبويب Network لا تكذب: إذا لم يكن هناك طلب صادر يحمل ملفك، فإن ملفك لم يغادر جهازك. علامة التبويب Sources تكشف كل سطر من JavaScript وكل وحدة WASM تم تحميلها بواسطة الصفحة. هذه الشفافية مستحيلة مع الأدوات من جانب الخادم، حيث يكون منطق المعالجة مخفياً خلف نقطة نهاية API وليس لديك طريقة للتحقق مما يفعله الخادم فعلياً بالبيانات التي رفعتها.
  • باختصار، الأدوات المستندة إلى المتصفح تحمي بياناتك من خلال نهج أمني متعدد الطبقات: الصندوق الرملي المدمج في المتصفح يعزل تنفيذ العملية؛ WebAssembly تمكن المعالجة بسرعة أصلية دون مغادرة ذلك الصندوق الرملي؛ Web Workers تحافظ على البيانات الحساسة في خيوط خلفية معزولة؛ والتصميم بدون معرفة يضمن أن الخادم لا يلمس ملفاتك أبداً على الإطلاق. معاً، هذه التقنيات تجعل من الممكن الحصول على معالجة بيانات بجودة احترافية تكون في نفس الوقت أسرع وأكثر خصوصية وشفافية من البدائل من جانب الخادم. في المرة القادمة التي تحتاج فيها إلى أداة عبر الإنترنت، تذكر: الخادم الأكثر أماناً لبياناتك هو لا خادم على الإطلاق — إنه متصفحك الخاص.