Поиск совпадений и дедупликация в потоке / Леонид...

22
Сегментация и Поиск совпадений в бинарном потоке Леонид Юрьев Positive Technologies

Transcript of Поиск совпадений и дедупликация в потоке / Леонид...

Page 1: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Сегментация иПоиск совпаденийв бинарном потокеЛеонид ЮрьевPositive Technologies

Page 2: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

О чем этот доклад?

1 000 000 000 файлов

Выявление совпадающих фрагментов

В потоке,без произвольного доступа

Проблема сегментациибинарного потока данных

Идея решения

Методконструирования резака

Page 3: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Что считать совпадением?

Что и как сравнивать…

Размер и полезность:

2 бита, 3 байта, 10 раз по 4

42 подряд, 1 Килобайт

Устойчивость к искажениям:

Обратный порядок, Инверсия

Разбавить «пробелами»…

Оперируем байтами

Равенство двух подстрок

Видеть 42 и больше*

Page 4: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Где возникает такая задача?

1. Дедупликация

2. Предотвращение утечек

3. Обнаружение утечек

Page 5: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Ликбез-0: Работа с дайджестами блоков

1. Нарезаем на блоки

2. Считаем хэш-функцию(SHA1, MD5…)

3. Оперируем дайджестами(4…32 байта)

Полное равенствоили хэш-коллизия

Видим поблочно

Точность размер блоков

Page 6: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Ликбез-1: Блоками равного размера

1. Подряд на равные блоки

2. Последний дополняетсяили отбрасывается

3. Границы кратны размеру

Хорошо для backup

При вставке или удалении«хвост отваливается»

Page 7: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Ликбез-2: Шинглирование слов Черепица

съешь ещё этих мягких французских булок, да выпей чаю

съешь ещё этих мягких

ещё этих мягких французских

этих мягких французских булок

мягких французских булок, да выпей

французских булок, да выпей чаю

1.

2.

3.

4.

5. 9459da43

7237602b

56aef20f

01a31914

74890a17

Page 8: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Ликбез-3: Шинглирование слов

1. По границам слов

2. Несколько слов в блоке

3. Блоки с наложением

Хорошо для текстов

Нужны границы слов

Page 9: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Задача и штатные решения

Набор образцов

Много, Большие

Конфиденциальны

Обнаруживать фрагменты

В других файлах

В потоке

Данные произвольны

Только дайджесты

Сжатие объёма Конфиденциальность

Штатные варианты

Фиксированными блоками Шинглирование слов– не подходят…

Page 10: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Что делать нам?

Сложности

Хвост не должен отваливаться

Нет структуры и слов

Идея

Смотрим

– как на утку сквозь прицел

Стреляем

– когда ходит и крякает, как утка

1. Скользящее окно

2. Оценочная функция

3. Отмечаем границы

Про вероятность

Схема детерминирована

Но данные произвольны

Page 11: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

На простом примере

1. Скользящее окно в 10 байт

2. Считаем MD5

3. Обозначаем границу,когда дайджест кратен 42

1. В среднем каждая 42 позиция будет границей

2. Границы зависят толькоот содержимого окнаи синхронизируются

3. Замечаем совпадения длиной «Окно + Блок»

Page 12: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Что тут плохо?

Длина блоков

Отрицательное биноминальное распределение

𝑃 𝑛 = 𝑝 ∙ 1 − 𝑝 𝑛

Хочется

Другое распределение

Учитывать эвристики 1 20 40 60 80 100

𝑷 𝟏 =𝟏

𝟒𝟐

𝑷 𝟏𝟎𝟎 =𝟏

𝟒𝟐

𝟒𝟏

𝟒𝟐

𝟗𝟗

𝑷 𝒏

𝒏

Page 13: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Ключи к решению

1. Комбинировать несколько функций

2. Со снижением вероятности «плохих случаев»

3. Без внутреннего состояния,строго от содержимого скользящего окна

4. Мелкие блоки тоже нужны

Page 14: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Суть решения

1. Вложенное скользящее окно

2. Упорядоченный набороценивающих функций

3. Просматриваем впереддо первой «утки»

𝐹1 =

𝐹2 =

𝐹𝐾 =

+1 +2 … +N-1+3+0

Page 15: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Свойства

1. Зависимость граництолько от данных

2. Любые подходящие функции

3. Для худшего случая

𝑃𝑤𝑜𝑟𝑠𝑡 = ς𝑖=1𝐾 (1 − 𝑃𝑖)

𝑁

𝐹1 =

𝐹2 =

𝐹𝑲 =

+1 +2 … +N-1+3+0

Page 16: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

+

Распределение размеров блоков

1. Дойдём до nой позиции внутри строки

2. Если все предыдущие строки пустые

3. Сумма по всем функциям для позиции

𝑃 𝑛 = σ𝑖=1𝐾 𝑃𝑖(1 − 𝑃𝑖)

𝑛×ς𝑗=1𝑖−1(1 − 𝑃𝑗)

𝑁 ,

при заданных 𝑵 и 𝑷𝟏…𝑷𝑲

𝐹1 =

𝐹2 =

𝐹𝑲 =

P1

P2

+1 +2 … +N-1+3+0

3 1 2

PK

?

Page 17: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Пример распределения

𝑃 𝑛 =

𝑖=1

𝐾

𝑃𝑖(1 − 𝑃𝑖)𝑛×ෑ

𝑗=1

𝑖−1

(1 − 𝑃𝑗)𝑁

𝑷 𝟏 ≈ 𝑷 𝟒𝟐 ≈𝟏

𝟒𝟐

𝑷 𝟏𝟎𝟎 ≈ 𝟎

1 42 100

𝟏

𝟒𝟐𝐹1 =

𝐹2 =

𝐹𝑲 =

P1

P2

+1 +2 … +N-1+3+0

PK

?

𝑷 𝒏

𝒏

Page 18: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Возможности

1. Шинглировать мелкие блоки

2. Эвристики и разные типы блоков

3. Разные размеры вложенных окон

Page 19: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Точность и Достоверность

Достоверность Вероятность коллизии Ширина дайджестов

Точность Размер окна + размер блока 𝒏 Плотность вероятности 𝑷(𝒏)

Баланс детализации Мера влияния 𝑷 𝒏 ∙ 𝒏 Максимизация для желаемого 𝒏

1 20 42 60 80 100

𝑷 𝒏 ∙ 𝒏

𝒏

0 = lim𝑛→∞

𝑃 𝑛 ∙ 𝑛

𝑁 = න𝑛=1

𝑁

𝑃 𝑛 ∙ 𝑛

42

Page 20: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Связь с размером Индекса

Точнее или Достовернее – больше Индекс

Размер Индекса – предел по Колмогорову для результатов

Меньше Индекс – больше пропусков, меньше достоверность

Ошибка от внутренней Меры Жордана – функция от сжатия

Page 21: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

В чем новизна?

Аналогов (пока) не найдено:

Патенты

Научные работы и алгоритмы

Давайте искать вместе

Принципиальные отличия:

1. Нарезка бинарного потока,а не поиск подстрок

2. «Колмогоровскоешинглирование»

3. Гибкость

Page 22: Поиск совпадений и дедупликация в потоке / Леонид Юрьев (Positive Technologies)

Спасибо!

Леонид ЮрьевPositive Technologies

SecurityLab.ru

www.ptsecurity.ru

Вопросы ?