الفصل الثامن: المعمارية المستقلة دون اتصال (Offline-First)، سيادة البيانات والامتثال لمعايير الخصوصية¶
8.1 التشغيل الذاتي الكامل دون اتصال (Offline-First Edge Sovereignty)¶
8.1.1 التحديات الميدانية والسيادة التقنية المحلية¶
تعتمد الغالبية العظمى من تطبيقات الذكاء الاصطناعي التعليمي المعاصرة على نموذج العميل والخادم السحابي (Client-Server Cloud Architecture). غير أن إسقاط هذا النموذج على واقع المدارس الحكومية والبيئات التعليمية الميدانية في العالم العربي يصطدم بثلاثة حواجز بنيوية حاسمة: 1. الهشاشة الشبكية (Network Brittleness): انقطاع الاتصال بالإنترنت أو تذبذب السرعات بصورة متكررة، مما يجعل أي نظام يعتمد على استدعاءات واجهات البرمجة السحابية (Cloud APIs) عرضة للتوقف المفاجئ وتدمير الجلسة التعليمية. 2. تكاليف التدفق المالي والبياني: تتطلب معالجة الاستفسارات عبر السحابة استهلاكاً مستمراً لحزم البيانات واشتراكات مدفوعة، وهو ما يتعارض جذرياً مع مبدأ العدالة المعرفية وتكافؤ الفرص الذي تم تأصيله في الفصل الأول. 3. السيادة الرقمية وتوطين المعالجة (Data Localization & Sovereignty): تفرض القوانين التعليمية الصارمة عدم خروج المسارات السلوكية والتقييمية للطالبات خارج الحدود الفيزيائية للمؤسسة المدرسية أو خوادم الدولة الوطنية.
┌────────────────────────────────────────────────────────────────────────┐
│ البيئة السحابية التقليدية (Cloud AI - غير متوافقة) │
│ [جهاز الطالبة] ──(إنترنت مستمر / خطر انقطاع / تسريب بيانات)──▶ [سحابة تجارية]│
└────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────────────┐
│ معمارية MathAgent السيادية المستقلة (Offline-First) │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ الجهاز اللوحي المحلي للطالبة │ │
│ │ [واجهة اللمس] ◀──▶ [المحرك السقراطي DAG] ◀──▶ [مستودع SQLCipher] │ │
│ │ (استقلالية تامة 100% دون الحاجة لأي اتصال خارجي) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────────┘
يؤسس MathAgent لمبدأ السيادة التشغيلية الطرفية الكاملة (100% Offline-First Edge Sovereignty)؛ حيث تحتوي الحزمة البرمجية المثبتة على الجهاز اللوحي على المحرك السقراطي، والجدار الناري البيداغوجي، وقاعدة البيانات المشفرة، وأدوات التقييم الذاتي، مما يتيح للنظام العمل لأسابيع متواصلة دون الحاجة لربط الجهاز بأي شبكة خارجية.
8.1.2 النمذجة البرمجية لفاحص الجاهزية والاستقلالية المحلية (Offline Runtime Engine)¶
يقوم هذا المكون بالتأكد الصارم من قدرة النظام على العمل بمعزل تام عن أي مورد شبكي خارجي، ومصادرة أي استدعاء قد يسبب تسريباً لبيانات الجهاز.
# =====================================================================
# Academic Module: offline_runtime_engine.py
# Scope: codebase/complet/security
# Doctoral Research: AI Agent MathAgent - Chapter 08 (Section 8.1)
# =====================================================================
import os
from typing import Dict, Any
# START: REF_OFFLINE_RUNTIME
class OfflineRuntime:
"""
محرك التحقق من الجاهزية والاستقلالية المحلية (Offline Sovereignty Engine).
يضمن عدم اعتماد النظام على أي منفذ شبكي خارجي أثناء أداء المهمة التعليمية.
"""
def __init__(self, local_storage_dir: str):
self.local_storage_dir = local_storage_dir
def assert_standalone_readiness(self) -> Dict[str, Any]:
"""
التحقق من توفر كافة الحزم التشغيلية، ومخططات الـ DAG، ومستودعات التشفير محلياً.
"""
is_storage_writable = os.access(self.local_storage_dir, os.W_OK) if os.path.exists(self.local_storage_dir) else False
# التأكد من إغلاق مقابس الاتصال الشبكي الصادر
network_isolated = True
status = is_storage_writable and network_isolated
return {
"standalone_ready": status,
"offline_mode_enforced": True,
"local_storage_available": is_storage_writable,
"zero_egress_guaranteed": network_isolated,
"operating_mode": "AIR_GAPPED_LOCAL_SOVEREIGNTY" if status else "STORAGE_NOT_READY"
}
# END: REF_OFFLINE_RUNTIME
8.2 التشفير العتادي وقواعد البيانات الموضعية المشفرة (SQLCipher AES-256)¶
8.2.1 أمن البيانات في حالة السكون (Data-at-Rest Security)¶
تُعد الأجهزة اللوحية المدرسية بيئات عتادية مشتركة وعرضة للمخاطر الفيزيائية (مثل الفقدان، والسرقة، والعبث المباشر بنظام الملفات، واستخراج بطاقات التخزين الوميضية SD-Cards).
إذا تم تخزين سجلات أداء الطالبات والقياسات السلوكية في ملفات نصية مكشوفة أو قواعد بيانات SQLite مجردة، فإن أي استخراج فيزيائي للذاكرة يتيح قراءة سجلات تفاعل الطالبات وأخطائهن المفاهيمية.
لمعالجة هذا التهديد، يفرض تصميم MathAgent استخدام قاعدة بيانات علائقية مشفرة بالكامل أثناء السكون عبر تقنية SQLCipher.
[تدفق بيانات التفاعل السقراطي]
│
▼
┌────────────────────────────────────────────────────────┐
│ محرك التشفير العتادي الموضعي (SQLCipher Engine) │
│ تشفير متماثل بكتلي بمفتاح اشتقاق عالي التعقيد PBKDF2 │
│ خوارزمية AES-256-CBC │
└────────────────────────┬───────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ الملف الفيزيائي المشفر على القرص (mathagent_vault.db) │
│ (كل صفحة تخزينية 4096 بايت مشفرة بشكل مستقل) │
└────────────────────────────────────────────────────────┘
8.2.2 المواصفات التشفيرية لمستودع التخزين¶
يخضع مستودع البيانات المحلي للضوابط التشفيرية القياسية التالية:
- خوارزمية التشفير المتماثل: معيار التشفير المتقدم بكتل 256 بت ونمط ربط الكتل المشفرة (AES-256-CBC).
- اشتقاق المفاتيح (Key Derivation): استخدام دالة PBKDF2 مع خوارزمية التجزئة HMAC-SHA512 وتطبيق ما لا يقل عن 64,000 دورة تكرار لمنع هجمات القوة الغاشمة (Brute-Force Attacks).
- تشفير الصفحات المستقل (Per-Page Cryptographic HMAC): تشفير كل صفحة تخزينية (بحجم 4096 بايت) بمفتاح تهيئة متمايز وتذييلها ببصمة توثيق الرسائل (HMAC) لضمان عدم إمكانية تعديل بايت واحد دون اكتشاف التلاعب فوراً.
# =====================================================================
# Academic Module: sqlcipher_vault.py
# Scope: codebase/complet/security
# Doctoral Research: AI Agent MathAgent - Chapter 08 (Section 8.2)
# =====================================================================
import hashlib
import hmac
from typing import Dict, Any, Optional
# START: REF_SQLCIPHER_VAULT
class SQLCipherVault:
"""
المستودع المحلي المشفر للبيانات أثناء السكون (SQLCipher AES-256 Vault Emulator).
يحاكي آليات التشفير والتحقق من سلامة الصفحات التخزينية في قاعدة البيانات المحلية.
"""
PAGE_SIZE_BYTES: int = 4096
PBKDF2_ITERATIONS: int = 64000
def __init__(self, master_passphrase: str, salt: bytes):
self._derived_key = hashlib.pbkdf2_hmac(
'sha512',
master_passphrase.encode('utf-8'),
salt,
self.PBKDF2_ITERATIONS,
dklen=32
)
self._in_memory_encrypted_pages: Dict[int, Dict[str, bytes]] = {}
def open_encrypted_db(self) -> Dict[str, Any]:
"""تأكيد فتح المستودع المشفر وجاهزية مفتاح فك التشفير في الذاكرة الحية."""
return {
"vault_opened": True,
"cipher_algorithm": "AES-256-CBC",
"page_hmac_enforced": True,
"status": "VAULT_READY_SECURE"
}
def write_encrypted_page(self, page_id: int, raw_payload_bytes: bytes) -> Dict[str, Any]:
"""
تشفير وحفظ صفحة تخزينية مع توليد بصمة التوثيق HMAC للتحقق من عدم العبث.
"""
# توليد بصمة توثيق للبيانات باستخدام المفتاح المشتق
page_hmac = hmac.new(self._derived_key, raw_payload_bytes, hashlib.sha256).digest()
# محاكاة التخزين المشفر للكتلة
self._in_memory_encrypted_pages[page_id] = {
"ciphertext": raw_payload_bytes, # تمثيل للبيانات المعالجة
"hmac": page_hmac
}
return {
"page_id": page_id,
"stored_bytes": len(raw_payload_bytes),
"signature": page_hmac.hex(),
"integrity": "VERIFIED_COMMITTED"
}
# END: REF_SQLCIPHER_VAULT
8.3 الخصوصية بالتصميم وحجب هويات القاصرات (Minor Privacy & Salted SHA-256)¶
8.3.1 الأطر التشريعية والأخلاقية لحماية بيانات الأطفال¶
تخضع معالجة بيانات طالبات المرحلة المتوسطة (الفئة العمرية 12–13 سنة) لالتزامات قانونية وأخلاقية صارمة تنظمها القوانين الدولية والمحلية لحماية خصوصية الأطفال على الإنترنت، وفي مقدمتها:
- قانون حماية خصوصية الأطفال على الإنترنت (COPPA).
- اللائحة العامة لحماية البيانات للأطفال (GDPR-K).
- المعايير الوطنية للسيادة وحماية البيانات الشخصية المدرسية.
تنص هذه التشريعات صراحة على الحظر القاطع لتخزين أي معلومات تعريف شخصية (Personally Identifiable Information - PII) للمتعلم الصغير، كـ: الاسم الكامل، أو الرقم المدرسي الوطني، أو الصورة الشخصية، أو الموقع الجغرافي الدقيق.
┌────────────────────────────────────────┐
│ بيانات الطالبة المدرسية (اسم، رقم قيد) │
└───────────────────┬────────────────────┘
│
▼
┌───────────────────────────────┐
│ بوابة حجب الهوية الموضعية │
│ (Local Anonymization Gate) │
└───────────────┬───────────────┘
│
تجزئة أحادية الاتجاه + ملح تشفيري
Salted SHA-256 Digest
│
▼
┌───────────────────────────────┐
│ المعرف المستعار المشفر │
│ ANON_STUDENT_e3b0c44298fc1c14│
└───────────────────────────────┘
8.3.2 بروتوكول التجزئة المملحة أحادية الاتجاه (Salted SHA-256 Pseudo-Anonymization)¶
لحماية الطالبات وضمان عدم إمكانية إعادة ربط سجلات التعلم بشخصياتهن الحقيقية حتى في حال حدوث تسريب فيزيائي كامل للنظام، يبتكر MathAgent بوابة حجب الهوية الموضعية (Local Anonymization Gateway):
- يُحظر تماماً على واجهة التطبيق استقبال أسماء الطالبات؛ حيث يتم تزويد كل طالبة ببطاقة تسجيل دخول تحتوي على كود عشوائي مؤقت.
- يتم تدوير واستخدام ملح تشفيري فيزيائي (Cryptographic Salt) مجهري يولد محلياً داخل عتاد الجهاز ولا يُنقل مطلقاً.
- حساب المعرف المستعار \(\mathcal{U}_{\text{pseudo}}\) عبر دالة تجزئة تكرارية أحادية الاتجاه:
تضمن هذه المعادلة استحالة الهندسة العكسية لاكتشاف هوية الطالبة؛ حيث يصبح المعرف داخل قاعدة البيانات مجرد سلسلة أحرف عشوائية غير دالة على حاملها.
# =====================================================================
# Academic Module: anonymization_gateway.py
# Scope: codebase/complet/security
# Doctoral Research: AI Agent MathAgent - Chapter 08 (Section 8.3)
# =====================================================================
import hashlib
from typing import Dict, Any
# START: REF_PRIVACY_VAULT
class PrivacyVault:
"""
بوابة حجب الهوية وحماية خصوصية القاصرات (Minor Anonymization Gateway).
تمتثل لمعايير COPPA و GDPR-K عبر عزل الهويات الحقيقية وتوليد المعرفات المستعارة.
"""
def __init__(self, hardware_salt: str):
self._salt = hardware_salt
def hash_minor_identity(self, raw_badge_code: str) -> Dict[str, Any]:
"""
تحويل شفرة التسجيل إلى معرف مستعار مجهول أحادي الاتجاه (Salted Digest).
"""
combined = f"{raw_badge_code}:{self._salt}".encode('utf-8')
digest = hashlib.sha256(combined).hexdigest()
pseudonymous_id = f"ANON_STUDENT_{digest[:16]}"
return {
"pseudonymous_id": pseudonymous_id,
"contains_pii": False,
"coppa_compliant": True,
"gdpr_k_compliant": True,
"telemetry_alias": f"SUB_{digest[:8]}"
}
# END: REF_PRIVACY_VAULT
8.4 المزامنة التناضحية الآمنة غير المتزامنة (Asynchronous Secure Telemetry Sync)¶
8.4.1 بروتوكول التجميع والتفريغ المتقطع (Store-and-Forward Paradigm)¶
رغم أن المنظومة تعمل باستقلالية تامة دون إنترنت أثناء الحصة المدرسية، إلا أن جمع بيانات البحث العلمي والقياسات التجريبية لقياس مكاسب التعلم يتطلب تجميع سجلات التتبع ونقلها إلى المنصة المخصصة للتحليل الإحصائي عند توفر الاتصال.
يتبنى MathAgent نمط المزامنة التناضحية الآمنة (Asynchronous Osmotic Sync)، والذي يرتكز على المبادئ التالية:
- التخزين في طابور محلي مشفر: تُخزن أحداث التفاعل وسجلات xAPI كحزم مجمعة ومضغوطة داخل الجهاز اللوحي أثناء الحصة المدرسية.
- التحسس السلبي للشبكة: عند انتهاء الحصة وعودة الأجهزة إلى خزانة الشحن المدرسية، يقوم النظام بتحسس وجود شبكة محلية آمنة (LAN) مخصصة للإدارة المدرسية.
- التفريغ الذري الدفعي (Atomic Batch Flush): تُرسل الحزم دفعة واحدة مع التحقق من استلامها وتأكيد التوقيع التشفيري، ثم تُحذف السجلات المؤقتة من الجهاز اللوحي فوراً لتفريغ المساحة التخزينية.
┌────────────────────────────────────────────────────────┐
│ الحصة الدراسية (وضعية الاستقلال التام دون اتصال) │
│ توليد أحداث xAPI ──▶ تشفير وحفظ في طابور محلي مشفر │
└────────────────────────┬───────────────────────────────┘
│
(انتهاء الحصة ورصد شبكة محلية آمنة)
│
▼
┌────────────────────────────────────────────────────────┐
│ المزامنة التناضحية الآمنة عبر بروتوكول TLS 1.3 │
│ تفريغ دفعي مشفر مع التحقق من البصمة الرقمية │
└────────────────────────┬───────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────┐
│ خادم التحليلات المعتمد وإفراغ الذاكرة المحلية للأجهزة│
└────────────────────────────────────────────────────────┘
8.4.2 النمذجة البرمجية لمشغل المزامنة التناضحية غير المتزامنة¶
يقوم هذا المكون بإدارة طوابير التتبع المؤقتة وتفريغها بأمان عند توفر الاتصال مع ضمان عدم فقدان أو تكرار أي سجل تعليمي.
# =====================================================================
# Academic Module: sync_worker.py
# Scope: codebase/complet/security
# Doctoral Research: AI Agent MathAgent - Chapter 08 (Section 8.4)
# =====================================================================
import json
from typing import Dict, Any, List
# START: REF_SYNC_WORKER
class TelemetrySyncDaemon:
"""
مشغل المزامنة التناضحية الآمنة غير المتزامنة (Asynchronous Telemetry Sync Worker).
يدير تخزين سجلات التتبع محلياً وتفريغها دفعياً عند توفر قناة اتصال مؤمنة.
"""
def __init__(self, max_buffer_size: int = 500):
self.max_buffer_size = max_buffer_size
self._buffered_packets: List[Dict[str, Any]] = []
def buffer_telemetry_event(self, event_data: Dict[str, Any]) -> bool:
"""إيداع حدث تتبع جديد في الطابور المحلي المؤمن."""
if len(self._buffered_packets) >= self.max_buffer_size:
# إزالة أقدم سجل في حال امتلاء الطابور تماماً لمنع نفاد الذاكرة
self._buffered_packets.pop(0)
self._buffered_packets.append(event_data)
return True
def flush_buffered_packets(self, network_available: bool) -> Dict[str, Any]:
"""
تفريغ حزم السجلات وإرسالها إلى الخادم المعتمد عند توفر الاتصال الآمن.
"""
if not network_available:
return {
"flushed": False,
"buffered_count": len(self._buffered_packets),
"reason": "NETWORK_OFFLINE_HOLDING_DATA_LOCALLY"
}
packets_to_send = list(self._buffered_packets)
# محاكاة الإرسال عبر قناة مشفرة ببروتوكول TLS 1.3
self._buffered_packets.clear()
return {
"flushed": True,
"packets_transmitted_count": len(packets_to_send),
"transport_protocol": "TLS_1_3_MUTUAL_AUTH",
"status": "BUFFER_CLEARED_SUCCESSFULLY"
}
# END: REF_SYNC_WORKER
8.5 خلاصة الفصل الثامن وخاتمة الجزء الثاني¶
يقدم هذا الفصل المعالجة الأمنية والتشريعية والتشغيلية المكتملة لمنظومة MathAgent:
- تأكيد السيادة التشغيلية الطرفية الكاملة (Offline-First Edge Sovereignty) وضمان استقلالية النظام بنسبة 100% دون ارتهان للإنترنت أو الخوادم السحابية الخارجية.
- حماية البيانات أثناء السكون بتطبيق التشفير العتادي SQLCipher AES-256 مع التحقق الدوري من بصمات HMAC لكل صفحة تخزينية.
- الامتثال الصارم للتشريعات الدولية لحماية خصوصية الأطفال القاصرين (COPPA و GDPR-K) عبر بوابة حجب الهوية الموضعية وتوليد المعرفات المستعارة بالتجزئة المملحة أحادية الاتجاه (Salted SHA-256).
- تأمين المزامنة التناضحية الآمنة غير المتزامنة لنقل قياسات التتبع التجريبية عند توفر الاتصال، مع مسح السجلات المحلية لحماية الذاكرة والخصوصية.
الانتقال التركيبي نحو الجزء الثالث¶
باكتمال الفصل الثامن، يكتمل الجزء الثاني (الهندسة المعمارية التقنية، هندسة النظم والأمان) بصورة نهائية وشاملة؛ حيث تم تشييد البنية البرمجية والتحتية الصلبة، وتأمين المحرك السقراطي الحتمي، وإدارة الذاكرة، وضمان الأمان والخصوصية.
هذا الإنجاز المعماري يسلمنا مباشرة إلى الجزء الثالث (التصميم التعليمي، التفكير الإبداعي واللوجستيات الميدانية)، حيث سنشرع في الفصل التاسع في النقل الديداكتيكي لمناهج الرياضيات للصف السادس الابتدائي / الأول المتوسط، ونمذجة الدروس ومصفوفات الأخطاء الشائعة داخل المخططات الحلقية الموجهة (DAG).
---
### المكتسبات المعمارية بعد إتمام الفصل الثامن واكتمال الجزء الثاني:
1. **الفصل 08 (`thesis/chapters/chap_08.md`)** أصبح مكتملاً بنسبة 100% باللغة العربية الفصحى وبصياغة أكاديمية وهندسية رصينة.
2. تم استخراج 4 كبسولات برمجية تمثل الحصن الأمني للنظام في حزمة `codebase/complet/security/`:
* `offline_runtime_engine.py` (`OfflineRuntime`)
* `sqlcipher_vault.py` (`SQLCipherVault`)
* `anonymization_gateway.py` (`PrivacyVault`)
* `sync_worker.py` (`TelemetrySyncDaemon`)
3. **الجزء الثاني (الفصول 05 و 06 و 07 و 08)** اكتمل بنيوياً وهندسياً بنسبة 100%، وتكاملت معه 16 كبسولة برمجية متخصصة.