الخصوصية التصميم الأول: الالتزام بجنون العظمة بتطبيقات المذكرة
هذه الصفحة مترجمة آليًا من الأصل الياباني. اقرأ الأصل الياباني
1. لماذا تعتبر الخصوصية مهمة لتطبيقات المذكرات
أفكار العمل والمسودات الشخصية والسجلات اليومية. يجمع تطبيق المذكرة المعلومات قبل عرضها على الأشخاص. بنفس أهمية القدرة على الكتابة بسرعة، من المهم فهم مكان تخزينها وأين يتم إرسالها.
في هذه المقالة، سنشرح التشفير وذاكرة التخزين المؤقت للاتصال وعرض الشاشة وسجل التشخيص وتحليل الاستخدام في المحطة الطرفية بشكل منفصل. لا تضمن الحماية الواحدة حماية الطرق الأخرى.
2 لم يتم تمكين وظيفة إخفاء الملاحظات تلقائيا في مبدل التطبيق
iOS يستخدم الشاشة كلقطة بعد انتقال التطبيق إلى الخلفية. يرشدك Apple إلى إزالة المعلومات السرية على الشاشة عند الانتقال إلى الخلفية.
في مصدر 5.8.17 المؤكد، يقوم sceneWillResignActive وsceneDidEnterBackground بحفظ المسودة ولا تتصل بعملية عرض تراكب الخصوصية. تبقى وظيفة العرض السابقة، ولكنها ليست مسارا يعمل كحماية صالحة.
قد تبقى الملاحظة المعروضة ظاهرة في صورة مبدّل التطبيقات. تشفير Outbox لا يخفي صورة الشاشة. نصحح هنا وصف النسخة السابقة من المقالة الذي ادّعى إخفاء محتوى الملاحظات دائماً.
3. جلسة URL سريعة الزوال: تقليل تخزين القرص في ذاكرة التخزين المؤقت للاتصال
يخزن URLSession القياسي ذاكرة التخزين المخابئ وملفات تعريف الارتباط ومعلومات المصادقة على القرص. هذه ميزة مفيدة للتطبيقات العامة، ولكنها غير ضرورية لتطبيقات المذكرات ويمكن أن تشكل خطرا.
إذا بقيت ذاكرة التخزين المؤقت للاتصال على المحطة الطرفية، فهذا يعني أن هناك آثارا ل URL ومتى قمت بالوصول إليها على القرص. إذا تم حفظ ملف تعريف الارتباط، فهذا يعني أن معلومات الجلسة ستبقى على المحطة الطرفية.
يستخدم هذا التطبيق URLSessionConfiguration.ephemeral.
private let session: URLSession = {
let config = URLSessionConfiguration.ephemeral
config.httpCookieAcceptPolicy = .never
config.httpShouldSetCookies = false
config.urlCache = nil
return URLSession(configuration: config)
}()
- لا يوجد ذاكرة التخزين المؤقت للقرص:لا تحفظ ذاكرة التخزين المؤقت لجلسة عنوان URL هذه على القرص
- تعطيل استخدام ملفات تعريف الارتباط:لا تقبل جلسة URL هذه ملفات تعريف الارتباط ولا تحدد الطلب
- تم تعطيل ذاكرة التخزين المؤقت URL:تعيين تخزين ذاكرة التخزين المؤقت نفسه على
nil - التكوين الذي لا يستخدم التخزين المستمر:لا يخزن معلومات جلسة URLSession إلى قرص
هذه حماية تتعلق بذاكرة التخزين المؤقت ل URLSession، وما إلى ذلك، وليست وظيفة تقضي على أحداث الاستخدام التي يخزنها التطبيق وينقلها بشكل منفصل أو سجلات الإرسال على جانب الخادم. يتم أيضا إجراء الارتباط بواسطة معرف تحليل الاستخدام بشكل منفصل عن هذا الإعداد.
4. نطاق الإخراج لسجل قياس الأداء
PerformanceLogger محاط ب #if DEBUG. في الإنشاءات التي لا يتم فيها تعريف DEBUG، لا يتم تضمين معالجة إخراج السجل لهذا المسجل.
يسجل logError الخاص بالمسجل هذا النوع، وليس البيان التفصيلي للخطأ. على سبيل المثال، استخدم نوع URLError ولا تقم بتحرير localizedDescription كما هو، والذي قد يحتوي على مسارات ملفات ومدخلات المستخدم.
من ناحية أخرى، فهي ليست آلية تجعل تلقائيا جميع أسماء الأحداث والسلاسل الإضافية التي يتم تمريرها إلى logEvent غير ضارة. من الضروري عدم تمرير عنوان البريد الإلكتروني أو نص المذكرة أو معلومات المصادقة لدى المتصل.
لا ينبغي تعميم هذا الشرح بوصفه ضماناً لعدم وجود أي سجلات في التطبيق أو حزم SDK الخارجية أو نظام التشغيل بأكمله. يظل إرسال أحداث الاستخدام الخاصة بنا وAppsFlyer مفعّلين كآليتين منفصلتين. نشرح نطاق البيانات المجموعة في الأسئلة الشائعة عن تحليل الاستخدام في هذه المقالة وفي سياسة الخصوصية.
5. نطاق حماية Outbox بتشفير AES-GCM
تتم إدارة المذكرات التي تنتظر الإرسال في قائمة انتظار تسمى Outbox في المحطة الطرفية. عند الحفظ، استخدم CryptoKit من Apple للتشفير باستخدام AES-GCM. يتم إنشاء مفتاح التشفير الجديد باستخدام بتات 256.
احتفظ بالمفتاح في سلسلة المفاتيح واستخدم kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. باستخدام هذا الإعداد، يمكنك الوصول من إلغاء القفل الأول بعد إعادة التشغيل إلى إعادة التشغيل التالية، ولن يتم نقل المفتاح عند استعادة النسخة الاحتياطية إلى محطة طرفية أخرى. يقرأ التطبيق مفتاح التشفير وفك التشفير.
هذه هي حماية البيانات المخزنة، وليس لإخفاء الشاشة المعروضة أو ضمان الأمان من أي انتهاك طرفي. قبل تغيير النموذج، يرجى التأكد من أن الملاحظات الضرورية قد وصلت إلى عنوان التخزين.
عند استخدام إرسال البريد الإلكتروني، تتم معالجة النص بواسطة Relay API ومنصة التسليم، ويظل كبريد إلكتروني في صندوق الوارد. التشفير في المحطة الطرفية لا يعني التشفير من طرف إلى طرف (E2EE) لتسليم البريد. يتم شرح التفاصيل في سياسة الخصوصية و مسار البيانات.
للاطلاع على قوائم انتظار الإرسال، راجع شرح بنية Outbox.
6 حماية نص المذكرة ودور SDK الخارجي
iOS في التطبيق، استخدم CryptoKit لتشفير نص المذكرة، وسلسلة المفاتيح لتخزين المفاتيح، وURLSession لإرسال النص. Network.framework يراقب حالة الاتصال، و BackgroundTasks مسؤول عن جدولة نقل الخلفية.
من ناحية أخرى، يستخدم التطبيق أيضا SDK خارجي. يتم استخدام GoogleSignIn وFirebase Authentication لإدخال رسائل البريد الإلكتروني التعسفية تلقائيا باستخدام حساب Google، ويتم تهيئة فحص تطبيق Firebase عند بدء التشغيل لحماية الواجهة الخلفية API. يستخدم AppsFlyer لتحليل الاستحواذ والاستخدام، ويحدد معرف التثبيت الشائع في تحليلك الخاص.
حتى لو لم يتضمن التصميم نص المذكرة في عنصر الحدث، يظل ارتباط المعرفات وسجلات الإرسال قائما. يجب تأكيد نطاق تحليل الاستخدام، بما في ذلك SDK، بشكل منفصل عن تشفير النص. يتم وصف العناصر والاستخدامات في سياسة الخصوصية.
7. حدد نطاق الحماية
التشفير في المحطة الطرفية، والتعامل مع ذاكرة التخزين المؤقت للاتصالات، وتحليل الاستخدام لكل منها أدوار مختلفة. حتى مع تشفير Outbox وجلسة URL سريعة الزوال، فإن هذا لا يعني أنه سيتم التخلص من مجموعة أحداث الاستخدام.
نحن نقدر القدرة على ترك الملاحظات بسرعة وفهم المعلومات التي سيتم الحصول عليها. اشرح الوجهة والمعرف ونطاق الارتباط لتحليل الاستخدام، وراجعه وفقا للتغييرات في التطبيق.
الأسئلة الشائعة
المراجع
- مطور Apple — CryptoKit Documentation — AES-GCM يستخدم لتنفيذ حماية بيانات Outbox مع التشفير
- مطور Apple — وثائق URLSession — تأمين الخصوصية من خلال اتصالات الشبكة من خلال جلسات سريعة الزوال (مؤقتة)
- مطور Apple — منع اتصالات الشبكة غير الآمنة (أمان نقل التطبيقات) — TLS ضمان الأمان عند نقل البيانات عن طريق فرض الاتصال
- مطور Apple - إنشاء رسائل السجل من التعليمات البرمجية الخاصة بك - نطاق تخزين السجل والتعامل مع المعلومات السرية
- مطور Apple - إعداد واجهة المستخدم الخاصة بك للتشغيل في الخلفية - لقطات ومعلومات على الشاشة لمحولي التطبيقات
- مطور Apple - الوصول إلى سلسلة المفاتيح بعد إلغاء القفل لأول مرة، هذا الجهاز فقط - شروط الوصول الرئيسية وقيود الترحيل إلى المحطات الطرفية الأخرى