Поиск совпадений и дедупликация в потоке / Леонид...
-
Upload
ontico -
Category
Engineering
-
view
293 -
download
9
Transcript of Поиск совпадений и дедупликация в потоке / Леонид...
Сегментация иПоиск совпаденийв бинарном потокеЛеонид ЮрьевPositive Technologies
О чем этот доклад?
1 000 000 000 файлов
Выявление совпадающих фрагментов
В потоке,без произвольного доступа
Проблема сегментациибинарного потока данных
Идея решения
Методконструирования резака
Что считать совпадением?
Что и как сравнивать…
Размер и полезность:
2 бита, 3 байта, 10 раз по 4
42 подряд, 1 Килобайт
Устойчивость к искажениям:
Обратный порядок, Инверсия
Разбавить «пробелами»…
Оперируем байтами
Равенство двух подстрок
Видеть 42 и больше*
Где возникает такая задача?
1. Дедупликация
2. Предотвращение утечек
3. Обнаружение утечек
Ликбез-0: Работа с дайджестами блоков
1. Нарезаем на блоки
2. Считаем хэш-функцию(SHA1, MD5…)
3. Оперируем дайджестами(4…32 байта)
Полное равенствоили хэш-коллизия
Видим поблочно
Точность размер блоков
Ликбез-1: Блоками равного размера
1. Подряд на равные блоки
2. Последний дополняетсяили отбрасывается
3. Границы кратны размеру
Хорошо для backup
При вставке или удалении«хвост отваливается»
Ликбез-2: Шинглирование слов Черепица
съешь ещё этих мягких французских булок, да выпей чаю
съешь ещё этих мягких
ещё этих мягких французских
этих мягких французских булок
мягких французских булок, да выпей
французских булок, да выпей чаю
1.
2.
3.
4.
5. 9459da43
7237602b
56aef20f
01a31914
74890a17
Ликбез-3: Шинглирование слов
1. По границам слов
2. Несколько слов в блоке
3. Блоки с наложением
Хорошо для текстов
Нужны границы слов
Задача и штатные решения
Набор образцов
Много, Большие
Конфиденциальны
Обнаруживать фрагменты
В других файлах
В потоке
Данные произвольны
Только дайджесты
Сжатие объёма Конфиденциальность
Штатные варианты
Фиксированными блоками Шинглирование слов– не подходят…
Что делать нам?
Сложности
Хвост не должен отваливаться
Нет структуры и слов
Идея
Смотрим
– как на утку сквозь прицел
Стреляем
– когда ходит и крякает, как утка
1. Скользящее окно
2. Оценочная функция
3. Отмечаем границы
Про вероятность
Схема детерминирована
Но данные произвольны
На простом примере
1. Скользящее окно в 10 байт
2. Считаем MD5
3. Обозначаем границу,когда дайджест кратен 42
1. В среднем каждая 42 позиция будет границей
2. Границы зависят толькоот содержимого окнаи синхронизируются
3. Замечаем совпадения длиной «Окно + Блок»
Что тут плохо?
Длина блоков
Отрицательное биноминальное распределение
𝑃 𝑛 = 𝑝 ∙ 1 − 𝑝 𝑛
Хочется
Другое распределение
Учитывать эвристики 1 20 40 60 80 100
𝑷 𝟏 =𝟏
𝟒𝟐
𝑷 𝟏𝟎𝟎 =𝟏
𝟒𝟐
𝟒𝟏
𝟒𝟐
𝟗𝟗
𝑷 𝒏
𝒏
Ключи к решению
1. Комбинировать несколько функций
2. Со снижением вероятности «плохих случаев»
3. Без внутреннего состояния,строго от содержимого скользящего окна
4. Мелкие блоки тоже нужны
Суть решения
1. Вложенное скользящее окно
2. Упорядоченный набороценивающих функций
3. Просматриваем впереддо первой «утки»
𝐹1 =
𝐹2 =
𝐹𝐾 =
+1 +2 … +N-1+3+0
Свойства
1. Зависимость граництолько от данных
2. Любые подходящие функции
3. Для худшего случая
𝑃𝑤𝑜𝑟𝑠𝑡 = ς𝑖=1𝐾 (1 − 𝑃𝑖)
𝑁
𝐹1 =
𝐹2 =
𝐹𝑲 =
+1 +2 … +N-1+3+0
+
Распределение размеров блоков
1. Дойдём до nой позиции внутри строки
2. Если все предыдущие строки пустые
3. Сумма по всем функциям для позиции
𝑃 𝑛 = σ𝑖=1𝐾 𝑃𝑖(1 − 𝑃𝑖)
𝑛×ς𝑗=1𝑖−1(1 − 𝑃𝑗)
𝑁 ,
при заданных 𝑵 и 𝑷𝟏…𝑷𝑲
𝐹1 =
𝐹2 =
𝐹𝑲 =
P1
P2
+1 +2 … +N-1+3+0
3 1 2
PK
?
Пример распределения
𝑃 𝑛 =
𝑖=1
𝐾
𝑃𝑖(1 − 𝑃𝑖)𝑛×ෑ
𝑗=1
𝑖−1
(1 − 𝑃𝑗)𝑁
𝑷 𝟏 ≈ 𝑷 𝟒𝟐 ≈𝟏
𝟒𝟐
𝑷 𝟏𝟎𝟎 ≈ 𝟎
1 42 100
𝟏
𝟒𝟐𝐹1 =
𝐹2 =
𝐹𝑲 =
P1
P2
+1 +2 … +N-1+3+0
PK
?
𝑷 𝒏
𝒏
Возможности
1. Шинглировать мелкие блоки
2. Эвристики и разные типы блоков
3. Разные размеры вложенных окон
Точность и Достоверность
Достоверность Вероятность коллизии Ширина дайджестов
Точность Размер окна + размер блока 𝒏 Плотность вероятности 𝑷(𝒏)
Баланс детализации Мера влияния 𝑷 𝒏 ∙ 𝒏 Максимизация для желаемого 𝒏
1 20 42 60 80 100
𝑷 𝒏 ∙ 𝒏
𝒏
0 = lim𝑛→∞
𝑃 𝑛 ∙ 𝑛
𝑁 = න𝑛=1
𝑁
𝑃 𝑛 ∙ 𝑛
42
Связь с размером Индекса
Точнее или Достовернее – больше Индекс
Размер Индекса – предел по Колмогорову для результатов
Меньше Индекс – больше пропусков, меньше достоверность
Ошибка от внутренней Меры Жордана – функция от сжатия
В чем новизна?
Аналогов (пока) не найдено:
Патенты
Научные работы и алгоритмы
Давайте искать вместе
Принципиальные отличия:
1. Нарезка бинарного потока,а не поиск подстрок
2. «Колмогоровскоешинглирование»
3. Гибкость
Спасибо!
Леонид ЮрьевPositive Technologies
SecurityLab.ru
www.ptsecurity.ru
Вопросы ?