EL OUATINETECHNICIEN OUATINE

🔐 إدارة المفاتيح

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

ما هو التشفير المغلف؟

بدل تشفير بياناتك مباشرة بالمفتاح الرئيسي، تُنشئ المنصة مفتاح بيانات عشوائي (32 بايت) لكل مفتاح من مفاتيحك. بياناتك تُشفَّر بمفتاح البيانات (AES-256-GCM)، ومفتاح البيانات نفسه يُشفَّر بالمفتاح الرئيسي ويُخزَّن مشفّراً. النتيجة: المفتاح الرئيسي يُستعمل فقط للفّ المفاتيح ولا يلمس بياناتك أبداً — وهذا هو نفس المبدأ المستعمل في أنظمة التشفير السحابية الكبرى.

مفاتيحك، تحت سيطرتك

كل مفتاح تملكه مرتبط بحسابك وحده. يمكنك إنشاء مفاتيح جديدة، تدويرها (إصدار مفتاح بيانات جديد مع الاحتفاظ بالقديم لفك تشفير البيانات السابقة)، وتعطيلها متى شئت. المفتاح المعطّل يرفض أي تشفير جديد لكنه يبقى قادراً على فك التشفير — لتستعيد بياناتك دائماً.

سجل تدقيق لكل عملية

كل عملية (إنشاء، تشفير، فك تشفير، تدوير، تعطيل) تُسجَّل في سجل تدقيق مع الوقت وعنوان IP. السجل يحمل بيانات وصفية فقط — لا يُخزَّن فيه أي مفتاح ولا أي نص مشفّر ولا أي بيانات مفكوكة.

نقاط الوصول

الطريقةالمسارالصلاحيةالوصف
POST/api/kms/keysحساب الزبونإنشاء مفتاح بيانات جديد
POST/api/kms/encryptحساب الزبونتشفير نص (حتى 64KB) — يُرفَض إذا كان المفتاح معطلاً
POST/api/kms/decryptحساب الزبونفك تشفير ظرف — يعمل حتى للمفاتيح المعطلة (استعادة)
POST/api/kms/rotateحساب الزبونتدوير: إصدار مفتاح بيانات جديد، والقديم يبقى لفك التشفير
POST/api/kms/disableحساب الزبونتعطيل المفتاح (يوقف التشفير الجديد فقط)
GET/api/kms/keysحساب الزبونقائمة مفاتيحك — بيانات وصفية فقط، لا مفاتيح ملفوفة

مثال برمجي

// Node.js — create a key, encrypt, decrypt (customer session cookie)
const base = 'https://securecelleouatine.com';
const k = await (await fetch(base + '/api/kms/keys', { method: 'POST' })).json();
const keyId = k.key_id; // ek_...

const enc = await (await fetch(base + '/api/kms/encrypt', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ key_id: keyId, plaintext_b64: Buffer.from('secret').toString('base64') })
})).json();
// enc.envelope = { v, iv, ct, tag } — store it, it only decrypts with this key

const dec = await (await fetch(base + '/api/kms/decrypt', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ key_id: keyId, envelope: enc.envelope })
})).json();
console.log(Buffer.from(dec.plaintext_b64, 'base64').toString()); // 'secret'

ملاحظات أمنية

  1. المفتاح الرئيسي (32 بايت عشوائية) يعيش في ملف على الخادم فقط، بصلاحيات مقيدة، ولا يغادر الخادم أبداً ولا يُعرَض في أي واجهة.
  2. إذا فُقد المفتاح الرئيسي أو حُذف الملف، تتوقف كل عمليات التشفير فوراً (خطأ 503) — هذا مقصود: لا مفتاح رئيسي = لا تشفير، ولا وضع متدهور.
  3. مفاتيح البيانات العشوائية تُمسَح من الذاكرة فور استعمالها، ولا تُسجَّل في أي سجل.
  4. كل ظرف تشفير مرتبط بمفتاحه وإصداره (بيانات مصادقة إضافية) — لا يمكن إعادة استعمال ظرف مع مفتاح آخر.
  5. تصميم بمفتاح رئيسي واحد: بسيط وشفاف، لكنه ليس HSM — من يملك صلاحية الجذر على الخادم يمكنه نظرياً قراءة الملف. انسخ الملف احتياطياً في مكان آمن.
EL OUATINE — SecureCell Tech by El Ouatine LLC