ملاحظة: يشير الرمز المميز إلى الرمز المميز المعجمي ، وليس الرمز المميز للتشفير . على سبيل المثال ، قد يتحول الرمز المميز إلى "تعلم" ، "تعلم" ، "تعلم" في الرمز المميز ".
إذا كنت لا تحتاج إلى تشفير ، فإن Tantivy أفضل في كل طريقة.
يتوفر عرض GUI الأساسي باستخدام Dioxus ومجموعة Enron Email على github هنا. في المقام الأول لإظهار أن سرعة البحث لائقة لنوع مجموعات البيانات التي شوهدت مخزنة على التطبيقات الجانبية العميل.
هذا لا يزال عمل مستمر. لا توجد ضمانات حول هذه المكتبة أو تبعياتها ، في التنفيذ ، من الناحية المفاهيمية أو غير ذلك. لم يتم إجراء أي عمليات تدقيق أمنية. استخدم على مسؤوليتك الخاصة.
كل كلمة رئيسية في البحث أو الفهرس مميز. هذا الرمز المميز واسم الجدول الذي يحدث فيه ، يتم تجزئة مع blake2b-128 ثم مشفرة مع AES-128-ECB قبل تخزينها أو استخدامها للاستعلامات.
Encrypt(Hash(token + table_name))
يستخدم وضع البنك المركزي الأوروبي للتشفير. يتسبب البنك المركزي الأوروبي في أن يصبح النص العادي متطابقًا متطابقًا ، ولكن هذا ليس مصدر قلق للقيم الفريدة مثل تجزئة اسم الرمز المميز والجدول. هذا يعني أن نفس الرمز المميز سيكون له نص مشفر مختلف إذا حدث في جداول منفصلة.
يتم تشفير معرف المستند باستخدام AES-128-ECB. ويرتبط هذا بعد ذلك بعداد 32 بت.
نظرًا لأن معرف المستند يظهر عدة مرات ويكون عدد معرفات المستند أصغر بكثير مما يمكن تعداده بـ 128 بت ، يمكن ضغط معرفات المستند.
على افتراض 1000 رمز / وثيقة فريدة ، فإن تكلفة تخزين حوادث رمز في المستندات هي:
| وثائق | غير محسوس | 32 بت |
|---|---|---|
| 1000 | 16 ميجابايت | 4 ميجابايت |
| 10K | 160 ميجابايت | 40 ميجابايت |
| 50 كيلو | 800 ميجابايت | 200 ميجابايت |
| 100 كيلو | 1.6 جيجابايت | 400 ميجابايت |
| 250k | 4 غيغابايت | 1 جيجا بايت |
| مليون | 16 جيجابايت | 4 غيغابايت |
| مليار | 16 تيرابايت | 4 تيرابايت |
الاختلاف يمثل القيم في تسلسل كفرق بينهما. هذا يخلق قيمًا يمكن تمثيلها مع عدد أقل من البتات ، مما يسمح بتعبئة أكثر إحكاما.
يتم استخدام قفص bitpacking للاختلاف و bitpacking كتل من 128 أعداد صحيحة.
يعمل الاختلاف بشكل أفضل عند فرز القيم ، ولكن الحفاظ على القيم المرتبة والبيئة سيتطلب إعادة ترميز جميع القيم عند إضافة إدخال خارج الطلب. يمكن أن يؤدي استخدام نهج مبهج مع مجموعة من قيم Out Out Order إلى تقليل تكلفة التغييرات عن طريق إطفاءها.
| رقم الطبقة | مخطط التعبئة | فرز | الانتشار |
|---|---|---|---|
| 0 | لا شيء - 32 بت (<128 ints) | لا أحد | لا |
| 1+ | bitpacker4x (128 ints) | طبقات amoung على مستوى العالم فوق 0 | نعم |
تم ضغط ما يقرب من 9،000-10،000 من رسائل البريد الإلكتروني Enron الأقصر وكان حجم FTS DB الناتج 235 ميجابايت باستخدام ترميز 32 بت. باستخدام bitpacking الاختلاف المطفأ والطبقات غير ذلك إلى 21 ميجابايت.
حذف ملف هو ... مكلف ... إطفاء tod
تودو استكشاف. شيء مثل rocksdb memtable أو الزلاجات. يتغير المتجر في الذاكرة ، ثم قم بتدفق كل 500 مللي ثانية أو عند الوصول إلى حد الذاكرة.
قم بفرز الدلو بأحرف 3 أو 4 أحرف (وليس رمزية) ، ضغط؟ وتشفير. كتلة تشفير بشيء مع انتشار مثل CBC أو GCM (تشفير Autheniced). هذا يعني أن الإكمال التلقائي سيركل بعد 3 أو 4 أحرف. هذا لا يزال في المرحلة المفاهيمية.
تعتبر تكامل البيانات اختياريًا عن طريق تجزئة ملف قاعدة البيانات في وقت قريب وتخزين نسخة مشفرة من التجزئة.
لا يوجد انتشار على معرفات المستند المشفرة. تتطلب إضافة الانتشار تشفير معرفات المستند باستخدام IV تم إنشاؤها عشوائيًا. هذا من شأنه أن يجعل الضغط مستحيل. سيؤدي تخزين IV إلى إضافة 128 بت لكل رمز وزوج مستند (لـ AES CBC).
ما يلي مرئي للمهاجم بدون مفتاح:
في حالة وجود فهرس في قائمة المرضى في مكتب الطبيب ، يمكن للمهاجم الذي لا يتمكن من رؤية عدد المرضى وتوزيع الرموز المستخدمة في المستندات. لم يتمكنوا من رؤية أي نص عادي ، مثل الأسماء أو المعرفات الأخرى ، ولم يتمكنوا حتى من رؤية معرف المستند لأي مرضى. يمكن أن يروا ما إذا كان اثنان من المرضى يشتركان في رمز بحث ، ولكن لا شيء حول من هو المرضى أو ما هي المعلومات المشتركة.
على سبيل المثال ، إذا كان فهرس البحث مبنيًا فقط على أسماء في بلد له أسماء أخرى شائعة ، مثل فيتنام ، فيمكنك إجراء تحليل للتردد ومعرفة العدد المحتمل للمرضى الذين يعانون من الاسم الأخير Nguyen (38 ٪ من سكان فيتنام). يعتمد هذا على أن تكون سابقة (توزيع الألقاب) صالحة لمجموعة البيانات في متناول اليد. سيكون أيضًا فعالًا فقط ضد الأسماء الشائعة ، والتي لا تحدد ، ومن غير المرجح أن تميز وثقة المستندات التي تحتوي حتى على الثانية من اللقب الثالث الأكثر شيوعًا في فيتنام (Tran بنسبة 11 ٪ و LE بنسبة 10 ٪).
بمجرد إضافة مزيد من المعلومات إلى مؤشر البحث ، مثل العمر ، مسقط رأس ، العنوان ، الوصف ، وما إلى ذلك ، تختفي القدرة على إجراء تحليل التردد تقريبًا.
قد يكون أحد القلقين هو عدم تعبئة تخزين مجموعات البيانات الفريدة ، حيث يمكن استخدام تحليل تردد لمجموعة بيانات النص العادي المعروفة الكبيرة لإظهار أنه بما لا يدع مجالًا للشك ، كان هناك جهاز معين تم فهرسة مجموعة البيانات. هذا يبدو على ما يبدو يؤثر فقط على المنشقين في البلدان الاستبدادية أو المجرمين. يمكن تخفيف ذلك عن طريق تشفير القرص الكامل عند إيقاف تشغيل الجهاز.
دع d1 يكون وثيقة مع رمز t1 . دع t2 يكون رمزًا يصطدم بجامع تجزئة t1 وليس رمزًا للوثيقة d1 .
يمكن أن تحدث الإيجابيات الخاطئة ، حيث تم تضمين نتائج إضافية غير ذات صلة في نتيجة بحث ، إلى d1 إذا كان البحث يحتوي على t2 وليس t1 .
يمكن أن تحدث السلبيات الخاطئة ، حيث تم حذف النتائج ذات الصلة من نتيجة بحث ، فقط إذا تم حذف أحد الرموز المتصاعدة لمستند. هذا من شأنه أن يؤدي إلى "حذف" الرمز الآخر أيضًا.
تنطبق الإيجابيات أو السلبيات الخاطئة فقط على المستندات التي تحتوي على واحدة من الرموز المتصاعدة ، عندما يكون الرمز المميز الآخر موجودًا في استعلام البحث. هذا يجعل حصص مثل هذا الاصطدام منخفضة للغاية.
الخطر الفعلي للتصادم هو صغير هزلي لتجزئة 128 بت (انظر مشكلة عيد الميلاد على ويكيبيديا).
يؤدي تشفير 64 بت فقط إلى عدد قليل من ميغابايت من توفير المساحة للفهارس الكبيرة جدًا. اللغة الإنجليزية لديها حوالي 1،000،000 كلمة وأقل رموز. 64 مليون بت هي فقط 8 ميجابايت. بالنظر إلى توزيعات نوع قانون الطاقة التي شوهدت باللغات ، حيث يمكن أن تشتمل الكلمات الأولى أو نحو ذلك على نصف التردد ، ستكون المدخرات الفعلية أقل بكثير.