Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Метод встречи в середине атаки

Поиск:
Данный метод применяется для атаки на  блочные шифры. Обладает значительно меньшей  трудоемкостью по сравнению с методом полного  перебора. Начальные условия. Даны  открытый и шифрованный тексты. Криптосистема  состоит из циклов шифрования. Цикловые  ключи независимы и не имеют общих битов. Ключ K  системы представляет собой сочетание из h-цикловых  ключей k1,k2 ... kh(см. рис.)  
user posted image

 Задача. При известных  открытом и шифрованном текстах найти ключ K. Обозначим преобразование алгоритма как Ek(a)=b,  где a-открытый текст, а b-шифротекст. Его  можно представить как композицию Ek1Ek2..Ek h(a)=b,  где Ek i - цикловое  преобразование на ключе ki. Каждый ключ ki  представляет собой двоичный вектор длины n,  а общий ключ системы - вектор длины n*h.    1. Заполнение памяти. Будем перебирать все значения k'=(k1,k2..kr),  т.е первые r цикловых ключей. На каждом таком  ключе k' зашифровываем открытый текст a    - Ek' (a)=Ek1Ek2..Ek r(a)=S (т.е.  проходим r циклов шифрования вместо h).  Будем считать S неким адресом памяти и по этому  адресу запишем значение k'.  Необходимо  перебрать все значения k'.  2. Определение ключа. Перебираем все возможные k"=(kr+1,kr+2...kh).  На получаемых ключах расшифровываем  шифротекст b - E-1k"(b)=E-1kh..E-1k r+1 (b)=S'   . Если по адресу S' не пусто, то достаем  оттуда ключ k' и получаем кандидат в ключи (k',k")=k.   Однако нужно заметить, что первый же  полученный кандидат k не обязательно  является истинным ключом. Да, для данного о.т a  и ш.т.b выполняется Ek(a)=b, но на  других значениях открытого текста a'  шифротекста b', полученного из a' на  истинном ключе, равенство может нарушаться. Все  зависит от конкретных характеристик  криптосистемы. Но иногда бывает достаточно  получить такой "псевдоэквивалентный" ключ.  В противном же случае после завершения процедур  будет получено некое множество ключей {k',k"...},  среди которых находится истинный ключ. Если рассматривать конкретное применение,  то шифротекст и открытый текст могут быть  большого объема (например, графические файлы) и  представлять собой достаточно большое число  блоков для блочного шифра. В данном случае для  ускорения процесса можно зашифровывать и  расшифровывать не весь текст, а только его первый  блок (что намного быстрее) и затем, получив  множество кандидатов, искать в нем  истинный  ключ, проверяя его на остальных блоках
Сайт: rudocs.com





Файлы:
wsa.gif

Просмотров: 1775

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную