ما الذي يمنحك إياه فعلياً تشفير قرص مستأجر
للخادم حالتان، ولتشفير القرص رأي في واحدة منهما فقط. عند الإطفاء، تكون وحدة التخزين نص مشفّر: التخزين يحتوي بايتات لا يمكن تمييزها عن الضوضاء بدون المفتاح. عند التشغيل، تكون وحدة التخزين مُركّبة، ما يعني أن المفتاح الرئيسي اشتُقّ، وحُمّل إلى ذاكرة النواة، وبقي هناك طوال مدة تشغيل الجهاز. كل ملف يستطيع نظام التشغيل قراءته، يستطيع قراءته لأن ذلك المفتاح موجود في الذاكرة. التشفير لم يتوقف عن العمل — إنه ببساطة يقوم بالضبط بما طُلب منه.
هذا ضمان أضيق مما يوحي به التسويق، ومع ذلك يستحق الحصول عليه، لأن الأحداث التي يغطيها هي التي تحدث فعلياً. محرك يُسحب من الخدمة ويُعاد بيعه. NVMe معطوب يُعاد إلى المورّد ضمن RMA وبياناتك عليه. عقدة تُطفأ وتُؤخذ صورة لأقراصها. أرشيف نسخ احتياطي يغادر المبنى على وسيط لم يشفّره أحد. شخص لديه وصول مادي إلى الرف يأخذ الشيء الخطأ إلى منزله. هذه الحالات غير مثيرة، وهي الغالبية الساحقة من حالات التسرّب الواقعية — أكثر شيوعاً بكثير من مداهمة جهاز يعمل التي يتخيلها الجميع.
| السيناريو | حالة الجهاز | هل يساعد LUKS؟ | ما الذي يُكشف |
|---|---|---|---|
| محرك سُحب من الخدمة، أُعيد بيعه أو أُرسل ضمن RMA | مُطفأ | نعم، تماماً | النص المشفّر وترويسة LUKS |
| عقدة أُطفئت، أُخذت صورة لأقراصها | مُطفأ | نعم | النص المشفّر، تخطيط الأقسام، /boot بنص واضح |
| أرشيف نسخ احتياطي نُسخ خارج الموقع | لا ينطبق | فقط إذا كان الأرشيف نفسه مشفّراً | كل ما يحويه الأرشيف، بنص واضح |
| استحواذ حي على نسخة تعمل | يعمل | عملياً لا | كل شيء — المفتاح موجود في RAM |
| اختراق النظام أثناء عمله | يعمل | لا | كل ما تكشفه وحدة التخزين المُركّبة |
المُشرف الافتراضي يقع داخل نموذج تهديدك، والتشفير لا يزيله
على VPS، نواتك (kernel) هي ضيف (guest). من يُشغّل المُشرف الافتراضي يملك ذاكرة ذلك الضيف بالطريقة نفسها التي تملك بها محتوى ملف، ولا توجد خطوة تشفير بينهما. virsh dump يكتب ذاكرة RAM لآلة افتراضية تعمل إلى ملف كعملية روتينية؛ والهجرة الحية تنسخ تلك الذاكرة نفسها عبر الشبكة بحكم التصميم، لأن هذا هو جوهر الهجرة. مفتاح LUKS الرئيسي المقيم في ذاكرة الضيف موجود داخل كل ذلك.
إذاً الجملة الصادقة هي هذه: تشفير القرص الكامل على VPS يحمي بياناتك من الجميع باستثناء الجهة التي تُشغّل المُشرف الافتراضي — وحتى من تلك الجهة أيضاً، لكن فقط بينما الجهاز مُطفأ. أي مضيف يدّعي أن تشفير قرص الضيف لديك يجعل بياناتك غير قابلة للقراءة من طرفه على نسخة تعمل، إنما يصف جهازاً غير موجود. نفضّل أن نكتب هذا بوضوح على أن نتركك تستنتج شيئاً أكثر راحة.
إذا كان المزوّد فعلاً ضمن نموذج تهديدك، فالإجابة ليست خوارزمية تشفير أقوى. إنها إزالة المُشرف الافتراضي: الخادم المخصص يُشغّل نواتك مباشرة على المعدن (metal)، فقراءة ذاكرته يعني امتلاك الجهاز مادياً فعلياً وشنّ هجوم من نوع DMA أو cold-boot ضد RAM — بطيء، صاخب، ويتطلب مستوى وصول لا يمنحه طلب روتيني. دليل VPS مقابل المخصص يغطي أين يُثمر هذا التحوّل من أسباب أخرى أيضاً. امتدادات الحوسبة السرّية مثل AMD SEV-SNP وIntel TDX تستهدف بالضبط هذه الثغرة، لكنها ليست سلعة متاحة على VPS المستأجر اليوم، وهي تنقل الثقة إلى مورّد المعالج بدلاً من إزالتها.
ثلاث طرق لتشغيله، وما تكلفه كل واحدة منها
هناك ثلاثة أشكال عملياً، وهي تقايض الأمان بمدى إيلام عمليات إعادة التشغيل. جذر مشفّر يُفتح من الكونسول هو الأقوى والأكثر إزعاجاً: لا شيء ينجو من إعادة التشغيل دون تدخل بشري. جذر مشفّر مع خادم SSH داخل initramfs هو الأمان نفسه مع فتح عن بُعد، وهو ما ينبغي لمعظم الناس بناؤه. وحدة بيانات مشفّرة على جذر بنص واضح هو الخيار السهل والذي يخيّب الآمال بهدوء.
يخيّب الآمال لأن الجذر بنص واضح يجمع أسرارك سواء قصدت ذلك أم لا. سجلّ systemd يكتب هناك. وكذلك تاريخ الصدفة (shell history)، وذاكرة تخزين الحزم المؤقتة، وتفريغات الذاكرة (core dumps)، و/tmp، وجذر بيانات Docker الافتراضي، و — العنصر الذي يوقع بالجميع تقريباً — swap، وهو المكان الذي تذهب إليه ذاكرة عملية ما عندما يكون الجهاز تحت ضغط. تشفير /var/lib/mysql بينما يبقى swap بجانبه بدون تشفير ليس دفاعاً جزئياً، بل دفاع كامل بثقب في منتصفه.
| الإعداد | الفتح | ينجو من إعادة تشغيل غير مراقَبة | الحكم الصادق |
|---|---|---|---|
| جذر مشفّر، فتح من الكونسول | KVM-over-VNC أو IPMI | لا — يبقى متوقفاً حتى يفتحه إنسان | الأقوى؛ مناسب لجهاز نادراً ما تعيد تشغيله |
| جذر مشفّر، dropbear في initramfs | SSH إلى منفذ الفتح | لا — لكن يمكنك الفتح من أي مكان | الخيار الافتراضي المعقول |
| وحدة بيانات مشفّرة، جذر بنص واضح | سكربت أو يدوياً بعد الإقلاع | نعم | ضعيف ما لم تُعالَج swap والسجلات والملفات المؤقتة |
| جذر مشفّر، ملف مفتاح على /boot بنص واضح | تلقائي | نعم | يدافع ضد محرك أُعيد بيعه ولا شيء آخر |
تثبيت جذر مشفّر، خطوة بخطوة
1. أقلِع مُثبِّتاً (installer)، لا قالباً جاهزاً. صورة مُعدّة مسبقاً لا يمكنها أن تمنحك جذراً مشفّراً لأن القرص كُتب قبل أن توجد كعميل. كل خطة من BitVPS تدعم إعادة البناء من ISO، ورفع ISO مخصص، وnetboot، وكل خطة تتضمن كونسول طوارئ KVM-over-VNC — وهذا هو الجزء المهم، لأنك تحتاج إلى مراقبة مُثبِّت سيطرح أسئلة. الخوادم المخصصة تعرض القدرة نفسها عبر نقطة IPMI محمية بـVPN مع تركيب ISO ووصول إلى BIOS.
2. جزّئ الأقراص مع منطقة إقلاع صغيرة بنص واضح. قسم صغير واحد لـ/boot أو قسم نظام EFI، وكل شيء آخر داخل حاوية LUKS واحدة. يجب أن يكون محمّل الإقلاع وinitramfs قابلين للقراءة قبل وجود أي مفتاح، لذلك يبقى ذلك القسم مقروءاً لأي شخص يأخذ صورة للقرص. صمّم حول هذه الحقيقة بدلاً من التظاهر بعكسها.
3. أنشئ الحاوية. cryptsetup luksFormat --type luks2 --pbkdf argon2id /dev/vda2. LUKS2 مع argon2id هو صلب الموضوع: argon2id كثيف الذاكرة (memory-hard)، مُحدَّد في RFC 9106، ويجعل هجوم التخمين دون اتصال مكلفاً على مستوى العتاد وليس بطيئاً فقط على مستوى البرمجيات — الفرق بين مزرعة GPU تلتهم عبارة مرورك ومزرعة GPU لا تستحق توجيهها نحوها أصلاً. أبقِ تكلفة الذاكرة ضمن ما يستطيع الجهاز تخصيصه خلال الإقلاع المبكر؛ فعلى نسخة بـ4 GB، تكلفة مضبوطة على حاسوبك المحمول ذي 64 GB ستفشل في الفتح ببساطة.
4. افتحها وثبِّت. cryptsetup open /dev/vda2 cryptroot، ثم LVM أو نظام ملفات مباشرة على /dev/mapper/cryptroot، ثم شغّل مُثبِّت التوزيعة عليها مع وضع /boot على القسم بنص واضح. Debian وUbuntu وAlpine وArch وRocky وFedora وFreeBSD كلها تتعامل مع هذا؛ صفحات dm-crypt في ويكي Arch هي المرجع الأكثر اكتمالاً بغض النظر عن التوزيعة التي تُشغّلها فعلياً.
5. ضع خادم SSH داخل initramfs. ثبّت dropbear-initramfs، وضع مفتاحك العام في /etc/dropbear/initramfs/authorized_keys، وأضف معامل ip= إلى سطر أوامر النواة حتى تظهر الواجهة قبل طلب عبارة المرور. تجاوَز هذا المعامل وستكون قد بنيت جهازاً يُقلِع إلى موجّه لا يستطيع أحد الوصول إليه.
6. أعد البناء وأعد التشغيل. update-initramfs -u يخبز الخادم ومفتاحك وإعدادات الشبكة داخل الصورة التي يحمّلها محمّل الإقلاع. ثم أعد التشغيل مع إبقاء الكونسول مفتوحاً، لأن المحاولة الأولى هي التي تسوء عادةً.
7. افتح واحصل على تأكيد التسليم. اتصل عبر SSH بمنفذ الفتح وشغّل cryptroot-unlock. يعرض initramfs مفتاح مضيف مختلفاً عن النظام المُثبَّت، لذلك سيُحذّر عميلك بصوت عالٍ عند أول اتصال — هذا سلوك صحيح وإشارة مفيدة، وليس عائقاً: ثبّت تلك البصمة كإدخال known_hosts خاص بها بدلاً من إيقاف التحقق من مفتاح المضيف. انقطاع الجلسة هو الطريقة التي تعرف بها أن النظام الحقيقي قد تولّى الأمر.
الفتح عن بُعد، وسؤال الساعة 04:00 الذي لا يطرحه أحد أولاً
شغّل خادم SSH الخاص بـinitramfs على منفذه الخاص — 2222 هو المتعارف عليه — حتى لا يتصادم مفتاحا المضيف أبداً في إدخال known_hosts نفسه. فضّل ip= ثابتاً على DHCP: initramfs بيئة دنيا (minimal)، وجولة DHCP تفشل تترك لك جهازاً يعمل، وغير قابل للوصول إليه، وممسكاً بموجّه انتظار. إذا كنت تعتمد على IPv6، تحقّق من أن initramfs الخاص بك يهيّئه فعلياً؛ عدة توزيعات ما زالت تُفعّل v4 فقط في تلك المرحلة.
أبقِ الكونسول كخيار احتياطي حتى بعد أن يعمل الفتح عبر SSH. العطل الذي ستصادفه في النهاية ليس عطلاً تشفيرياً، بل تحديث نواة أعاد بناء initramfs بدون مفتاحك، أو معامل شبكة تغيّر من تحتك — وفي تلك اللحظة الطريق الوحيد للدخول هو كونسول KVM-over-VNC الذي جاء مع الخطة. امتلاك الاثنين ليس تكراراً زائداً، إنه الفرق بين مجرد إزعاج وإعادة بناء كاملة.
ثم السؤال التشغيلي، وهو الذي ينبغي حسمه قبل بناء أي من هذا: الجذر المشفّر يعني أن إعادة تشغيل غير مراقَبة تترك خدمتك متوقفة حتى يفتحها إنسان. صيانة عقدة، أو انهيار نواة (kernel panic)، أو حادث كهرباء — يعود الجهاز إلى موجّه انتظار، لا إلى تطبيقك. إذا كان هذا غير مقبول لعبء العمل، لا تُغطِّ عليه بملف مفتاح على قسم الإقلاع بنص واضح. هذا قفل مع مفتاحه ملصق على الباب، ويدافع ضد محرك أُعيد بيعه ولا شيء آخر. اخترها عن قصد إن أردت، لكن دوّن في دفتر تشغيلك الخاص أن هذا ما اخترته.
كل ما يتسرّب حول وحدة التخزين المشفّرة
نادراً ما تكون وحدة التخزين هي مصدر الخطأ. ما يسوء هو المادة التي لم تدخلها أصلاً.
| التسرّب | لماذا يحدث | الحل |
|---|---|---|
| Swap | ذاكرة العملية — بما فيها المفاتيح — تنسكب إلى القرص تحت الضغط | swap داخل الحاوية، أو جهاز swap بمفتاح عشوائي، أو بلا swap إطلاقاً |
| صورة السبات (hibernation) | تفريغ كامل لـRAM يُكتب إلى القرص بحكم التصميم | عطّله على الخادم؛ لا مكان له هناك |
| /boot وinitramfs بنص واضح | يجب أن يكونا قابلين للقراءة قبل وجود أي مفتاح | تقبّل ذلك، وعامل أي تعديل عليهما كاختراق — تحقّق، أو استخدم Secure Boot حيثما توفّر |
| سجل يُكتب قبل التركيب (mount) | سجلات الإقلاع المبكر تحطّ على القسم بنص واضح | تحقّق أين يقيم سجلّك فعلياً قبل فتح وحدة التخزين |
| جذر بيانات Docker | يفترض /var/lib/docker، خارج وحدة بيانات مُلحَقة | انقله إلى الداخل، أو شفّر الجذر بدلاً من ذلك |
| مراقبة وسجلات خارج الجهاز | عملاء (agents) يرسلون محتوى الملفات إلى طرف ثالث بنص واضح | دقّق ما يرسله العميل قبل أن تثق بوحدة التخزين |
خاصية واحدة يجب أن تكون واضحاً بشأنها، لأنها كثيراً ما تُسوَّق بمبالغة: ترويسة LUKS تُعلن عن نفسها. أي شخص يأخذ صورة للقرص يرى أن حاوية مشفّرة موجودة، وأي خوارزمية تشفير تستخدمها، ومعاملات KDF، وعدد فتحات المفاتيح المشغولة. LUKS يمنحك السرّية، لا الإنكار المعقول (plausible deniability)، وبناء خطة تعتمد على ألا يلاحظ أحد الحاوية هو بناء على الرمال.
عبارات المرور، ملفات المفاتيح والترويسات المنفصلة
عبارة المرور هي النظام بأكمله. argon2id يجعل كل محاولة تخمين مكلفة، لكن التكلفة مضروبة في مساحة مفاتيح صغيرة تبقى رخيصة: خمس أو ست كلمات من قائمة diceware تتفوّق على كلمة مرور من 11 حرفاً مع استبدالات فيها، بفارق ليس قريباً. اضبط التكلفة باستخدام --iter-time بناءً على الجهاز الذي سيفتح وحدة التخزين فعلياً، لا الجهاز الذي تكتب عليه، ولا تُعِد أبداً استخدام عبارة مرور اقتربت يوماً من حساب خضع لـKYC.
ملف المفتاح يزيل الكتابة وينقل المشكلة: cryptsetup luksAddKey يضيف واحداً إلى فتحة احتياطية، والنسخة الوحيدة التي تستحق الامتلاك هي تلك التي لا تستقر أبداً على الخادم — تُحفظ على جهازك الخاص أو رمز عتادي (hardware token) وتُغذّى إلى عملية الفتح عبر جلسة SSH. الترويسة المنفصلة (--header) تذهب أبعد: يصبح جهاز البيانات غير قابل للتمييز عن بايتات عشوائية لأن البيانات الوصفية تقيم في مكان آخر. الجانب الآخر لا يرحم. افقد الترويسة وتختفي وحدة التخزين، نهائياً، بلا أي وسيلة للاسترجاع — لذا خذ cryptsetup luksHeaderBackup على محمل الجد واحفظ تلك النسخة الاحتياطية في مكان مشفّر هو نفسه. أسئلة cryptsetup الشائعة وتوثيق dm-crypt الخاص بالنواة هما المرجعان اللذان يستحقان القراءة قبل أن تلتزم بتخطيط معيّن.
وقاعدة بلا استثناءات: عبارة المرور لا تدخل أبداً في تذكرة دعم. لا تذكرتنا، ولا تذكرة أي أحد. لا شيء نقوم به يتطلبها، ولا عملية يمكننا تنفيذها نيابة عنك تحتاجها، والتذكرة سجل مكتوب في قاعدة بيانات. إذا طلبها منك مضيف يوماً ما، فتلك نهاية المحادثة.
ما الذي تكشفه فعلياً صورة القرص
لنأخذ حالة الإطفاء بشكل ملموس، لأن الغموض هنا لا يفيد أحداً. المحقق الذي يملك صورة لقرصك يملك: النص المشفّر، ترويسة LUKS بخوارزميتها ومعاملات KDF وعدد الفتحات، جدول الأقسام، أحجام كل شيء، وقسم الإقلاع بأكمله بنص واضح — نواتك، initramfs الخاص بك، وطوابع وقت تعديل كل ملف فيه. هذا العنصر الأخير أكثر إفادة مما يتوقع الناس. أوقات تثبيت الحزم ترسم خطاً زمنياً، وinitramfs يحتوي مفتاح dropbear يقول شيئاً عن كيفية إدارة الجهاز.
ما لا يملكونه هو المحتوى. أمام حاوية LUKS2 حديثة مع argon2id وعبارة مرور حقيقية، الهجوم دون اتصال ليس مسألة انتظار أطول — إنه ببساطة غير مطروح على الطاولة. هذا هو كامل عرض القيمة، وهو عرض جيد.
حالة التشغيل هي العكس تماماً، والإجابة قصيرة: كل شيء. ليس لأن التشفير فشل، بل لأن المفتاح موجود في الذاكرة، وهذا هو الشرط الذي يعمل بموجبه نظام ملفات مُركّب أصلاً.
اللقطات (snapshots) تقع بين الحالتين وتفاجئ الناس. لقطاتنا الساعية بفترة احتفاظ 7-day هي على مستوى الكتلة (block-level)، لذا تُلتقط وحدة التخزين المشفّرة كنص مشفّر — جيد، والنتيجة الحتمية تعضّ: تلك اللقطة أيضاً ليست نسخة يمكنك قراءتها بدون عبارة المرور. افقد المفتاح وتصبح اللقطات غير قابلة للاسترجاع تماماً كالأصل. خطّط لمسار استعادة يتضمن عبارة المرور، وإلا فأنت قد بنيت سبعة أيام من ضوضاء موثوقة جداً. ما نحتفظ به عنك خارج وحدة التخزين مدوّن في سياسة الخصوصية، وننشر كناري الإنذار القانوني الأسبوعي الموقّع بـPGP كدليل قائم بدلاً من وعد.
الأجزاء التي تحسم النتيجة ليست تشفيرية
لم يفقد أحد بياناته لأن AES-256-XTS خذله. يفقدونها لأن عبارة المرور أُعيد استخدامها من حساب منصة تبادل احتفظت بصورة جواز سفرهم، أو لأن ملف المفتاح تُرك على قسم الإقلاع بنص واضح لجعل إعادة التشغيل هادئة، أو لأن النسخة الاحتياطية خارج الموقع كانت ملف tarball عادياً، أو لأن عبارة المرور موجودة في تاريخ صدفة حاسوبهم المحمول، أو لأن عميل مراقبة كان يرسل محتوى الملفات إلى SaaS طوال الوقت.
والحقيقة الهادئة: خادم لا يُطفأ أبداً يقضي حياته كلها في الحالة التي لا يفيد فيها أي من هذا. نسخة بوقت تشغيل 400 يوم كانت مفكوكة التشفير طوال 400 يوم. إذا كانت البيانات باردة فعلاً — أرشيف، نسخة احتياطية لمفتاح، سجلات تراجعها مرتين في السنة — احفظها في حاوية تفتحها عند الحاجة وتُغلقها بـcryptsetup close عند الانتهاء. عشر ثوانٍ من الكتابة تحوّل تعرّضاً دائماً إلى تعرّض لحظي، وذلك التحوّل يستحق أكثر من أي معامل يمكنك تمريره إلى luksFormat.
وطبّق المنطق نفسه على الولاية القضائية طالما أنت في هذا الموضوع. التشفير يحدد ما هو قابل للقراءة؛ مكان وجود الجهاز يحدد من له الحق في السؤال، وأي تحالفات يمر عبرها الطلب. الاثنان ليسا بديلين عن بعضهما، والذين يفهمون هذا بشكل صحيح يعاملونهما كقرار واحد.
ما نوفّره، وما لا نستطيع توفيره
كل خطة ابتداءً من Starter بسعر $8.50 تأتي بما يتطلبه فعلياً جذر مشفّر: افتراضية KVM مع صلاحيات جذر كاملة، القدرة على إقلاع ISO مخصصة وnetboot، إعادة البناء من ISO عبر لوحة التحكم، تحميل وحدات النواة، وكونسول طوارئ KVM-over-VNC للحظة التي لا يعود فيها initramfs. فئات الخوادم المخصصة تضيف نقطة IPMI محمية بـVPN مع كونسول، وإعادة تدوير الطاقة، وتركيب ISO، ووصول BIOS. لا شيء في التشفير هو منتج نبيعه لك — إنه شيء تبنيه أنت، ومهمتنا ألا نقف في طريقك.
ما لا نستطيع فعله أكثر فائدة أن نذكره. على VPS يعمل، يستطيع المُشرف الافتراضي قراءة ذاكرة الضيف؛ هذه هي البنية، لا إعداد سياسة، ولا تشفير تُثبّته داخل الضيف يغيّر ذلك. ما نقدّمه ضد ذلك ليس رياضيات بل موقف وأدلة: لا netflow، لا PCAP، لا مرآة NIC، عناوين IP لجلسات لوحة التحكم تُمسح خلال 24 ساعة، لا KYC عند التسجيل حتى لا يكون الحساب رافعة ضغط، دفع بالعملات المشفّرة فقط حتى لا يكون أثر الفوترة رافعة أخرى، وكناري إنذار قانوني أسبوعي موقّع بـPGP يمكنك التحقق منه بنفسك. فقط العتاد المخصص يُزيل المُشرف الافتراضي من الصورة، وفقط الإطفاء يُزيل RAM منها.
إذا بدا هذا حجة ضد VPS الخاص بنا في نماذج تهديد معينة، فهو كذلك فعلاً. نفضّل أن نبيعك الشيء الصحيح مرتين على أن نبيعك الشيء الخاطئ مرة واحدة. انشر نسخة بـISO وجرّب التثبيت على Starter لمدة شهر؛ إذا تبيّن أن الإجابة هي المعدن، فئات المخصص تبدأ من $39.50 وتستغرق من ساعتين إلى أربع ساعات للتزويد بدلاً من 41 ثانية.