Учебное пособие: Дискретная мат-ка_УП

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

106

Выход: р – 

индекс

самого

длинного

слова

в

словаре

совпа

-

дающего

с

символами

f[k]..f[k + l]

Если

такого

слова

в

словаре

нет

то

 р

 = 0. 

l: = 0; р: = 0 { 

начальное

состояние

 } 

for 

from to d do 

if 

D[i] = f[k..k + Length(D[i]) – l]&Length(D[i]) > then 

p: = i;l: = Length(D[i]) { 

нашли

более

подходящее

слово

 }  

end if  
end for  
return 

p 

Распаковка

осуществляется

следующим

алгоритмом

Алгоритм 4. 

Распаковка

по

методу

Лемпела

-

Зива

Вход

сжатый

текст

представленный

массивом

пар

g : array 

[l..

mof record p : int; q : char endrecord, 

где

p – 

номер

слова

в

словаре

q – 

код

дополняющей

буквы

Выход

исходный

текст

заданный

последовательностью

строк

и

символов

.  

D[0]: = ««; d: = 0 { 

начальное

состояние

словаря

 }  

for 

≤ n do 

p: = g[k].p { p – 

индекс

слова

в

словаре

 }  

q:= g[k].q { q – 

дополнительная

буква

 }  

yield 

{ 

вывод

слова

и

еще

одной

буквы

 } 

d: = d + 1; D[d]: = D[p] U q  
{

пополнение

словаря

здесь

 U – 

это

конкатенация

 }  

end for

На

практике

применяют

различные

усовершенствования

этой

схемы

1. 

Словарь

можно

сразу

инициализировать

например

кода

-

ми

символов

  (

то

есть

считать

что

однобуквенные

слова

уже

из

-

вестны

). 

2. 

В

текстах

часто

встречаются

регулярные

последовательно

-

сти

пробелы

и

табуляции

в

таблицах

и

т

.

п

Сопоставлять

каждой

подпоследовательности

такой

последовательности

отдельное

сло

-

во

в

словаре

нерационально

В

таких

случаях

лучше

применить

специальный

прием

например

закодировать

последовательность

background image

107

пробелов

парой

 <

k,s>

где

k – 

количество

пробелов

, a 

s – 

код

про

-

бела

8.5 

Шифрование

Защита

компьютерных

данных

от

несанкционированного

доступа

искажения

и

уничтожения

в

настоящее

время

является

серьезной

социальной

проблемой

Применяются

различные

под

-

ходы

к

решению

этой

проблемы

Поставить

между

злоумышленником

и

данными

в

ком

-

пьютере

непреодолимый

барьер

то

есть

исключить

саму

воз

-

можность

доступа

к

данным

путем

физической

изоляции

компь

-

ютера

с

данными

применения

аппаратных

ключей

защиты

и

т

.

п

Такой

подход

надежен

но

он

затрудняет

доступ

к

данным

и

ле

-

гальным

пользователям

а

потому

постепенно

уходит

в

прошлое

Поставить

между

злоумышленником

и

данными

в

ком

-

пьютере

логический

барьер

то

есть

проверять

наличие

прав

на

доступ

к

данным

и

блокировать

доступ

при

отсутствии

таких

прав

Для

этого

применяются

различные

системы

паролей

реги

-

страция

и

идентификация

пользователей

разграничения

прав

доступа

и

т

.

п

Практика

показывает

что

борьба

между

  «

хакера

-

ми

» 

и

модулями

защиты

операционных

систем

идет

с

перемен

-

ным

успехом

Хранить

данные

таким

образом

чтобы

они

могли

  «

сами

за

себя

постоять

». 

Другими

словами

так

закодировать

данные

чтобы

даже

получив

их

злоумышленник

не

смог

бы

нанести

ущерба

Этот

раздел

посвящен

обсуждению

методов

кодирования

применяемых

в

последнем

случае

 
8.6 

Криптография

 
Шифрование – 

это

кодирование

данных

с

целью

защиты

от

несанкционированного

доступа

Процесс

кодирования

сообщения

называется

  шифрованием

(

или

  зашифровкой

), 

а

процесс

декодирования

 – расшифровыва

-

нием  (

или

  расшифровкой

). 

Само

кодированное

сообщение

назы

-

background image

108

вается

  шифрованным

  (

или

просто

  шифровкой

), 

а

применяемый

метод

называется

 шифром

. 

Основное

требование

к

шифру

состоит

в

том

чтобы

рас

-

шифровка

  (

и

может

быть

зашифровка

была

возможна

только

при

наличии

санкции

то

есть

некоторой

дополнительной

инфор

-

мации

 (

или

устройства

), 

которая

называется

 ключом

шифра

Про

-

цесс

декодирования

шифровки

  без

ключа

называется

  дешифро

-

ванием (

или

 дешифрацией

или

просто

 раскрытием

шифра

). 

Область

знаний

о

шифрах

методах

их

создания

и

раскрытия

называется

 криптографией

 (

или

 тайнописью

). 

Свойство

шифра

противостоять

раскрытию

называется

криптостойкостъю  (

или

  надежностью

и

обычно

измеряется

сложностью

алгоритма

дешифрации

В

практической

криптографии

криптостойкость

шифра

оце

-

нивается

из

экономических

соображений

Если

раскрытие

шифра

стоит

  (

в

денежном

выражении

включая

необходимые

компью

-

терные

ресурсы

специальные

устройства

и

т

.

п

.) 

больше

чем

са

-

ма

зашифрованная

информация

то

шифр

считается

достаточно

надежным

Криптография

известна

с

глубокой

древности

и

использует

самые

разнообразные

шифры

как

чисто

информационные

так

и

механические

В

настоящее

время

наибольшее

практическое

зна

-

чение

имеет

защита

данных

в

компьютере

поэтому

далее

рас

-

сматриваются

программные

шифры

для

сообщений

в

алфавите

{0,1}. 

 
Шифрование с помощью случайных чисел
 
 

Пусть

имеется

датчик

  псевдослучайных

чисел

работающий

по

некоторому

определенному

алгоритму

Часто

используют

сле

-

дующий

алгоритм

T

i+1

:

 =(a –T

i

 + b) mod с

где

T

i

 – 

предыдущее

псевдослучайное

число

T

i+1

  – 

следующее

псевдослучайное

число

а

коэффициенты

 а

, b, с 

постоянны

и

хо

-

рошо

известны

Обычно

  с

 = 2

n

где

n – 

разрядность

процессора

,          

a mod 4 = 1, a b – 

нечетное

В

этом

случае

последовательность

псевдослучайных

чисел

имеет

период

  с

Процесс

шифрования

определяется

следующим

background image

109

образом

Шифруемое

сообщение

представляется

в

виде

последо

-

вательности

слов

 S

0

, S

1

,..., 

каждое

длины

 п

которые

складывают

-

ся

по

модулю

 2 

со

словами

последовательности

 T

0

,

Т

1

..., 

то

есть

С

i

: = 

S

i

⊕ T

i

Последовательность

 Т

0

Т

1

,… 

называется

 гаммой

 шифра. 

Процесс

расшифровывания

заключается

в

том

чтобы

еще

раз

сложить

шифрованную

последовательность

с

той

же

самой

гаммой

шифра

S

:

 = C

⊕ T

i

. 

Ключом

шифра

является

начальное

значение

 Т

0

которое

яв

-

ляется

секретным

и

должно

быть

известно

только

отправителю

и

получателю

шифрованного

сообщения

Шифры

в

которых

для

зашифровки

и

расшифровки

исполь

-

зуется

один

и

тот

же

ключ

называются

 симметричными

. 

Если

период

последовательности

псевдослучайных

чисел

достаточно

велик

чтобы

гамма

шифра

была

длиннее

сообщения

то

дешифровать

сообщение

можно

только

подбором

ключа

При

увеличении

  п

экспоненциально

увеличивается

криптостойкость

шифра

Это

очень

простой

и

эффективный

метод

часто

применяют

«

внутри

» 

программных

систем

например

для

защиты

данных

на

локальном

диске

Для

защиты

данных

передаваемых

по

откры

-

тым

каналам

связи

особенно

в

случае

многостороннего

обмена

сообщениями

этот

метод

применяют

не

так

часто

поскольку

возникают

трудности

с

надежной

передачей

секретного

ключа

многим

пользователям

 
Криптостойкость
 
 

Описанный

в

предыдущем

подразделе

метод

шифрования

обладает

существенным

недостатком

Если

известна

хотя

бы

часть

исходного

сообщения

то

все

сообщение

может

быть

легко

дешифровано

Действительно

пусть

известно

одно

исходное

сло

-

во

S

i

Тогда

T

i

 : = C

 S

i

и

далее

вся

правая

часть

гаммы

шифра

определяется

по

указан

-

ной

формуле

датчика

псевдослучайных

чисел

background image

110

На

практике

часть

сообщения

вполне

может

быть

известна

злоумышленнику

Например

многие

текстовые

редакторы

поме

-

щают

в

начало

файла

документа

одну

и

ту

же

служебную

инфор

-

мацию

Если

злоумышленнику

известно

что

исходное

сообщение

подготовлено

в

данном

редакторе

то

он

сможет

легко

дешифро

-

вать

сообщение

Для

повышения

криптостойкости

симметричных

шифров

применяют

различные

приемы

1) 

вычисление

гаммы

шифра

по

ключу

более

сложным

 (

или

секретным

способом

2) 

применение

вместо

ф

более

сложной

 (

но

обратимой

опе

-

рации

для

вычисления

шифровки

3) 

предварительное

перемешивание

битов

исходного

сооб

-

щения

по

фиксированному

алгоритму

В

настоящее

время

широкое

распространение

получили

шифры

  с

  открытым  ключом. 

Эти

шифры

не

являются

симмет

-

ричными

 – 

для

зашифровки

и

расшифровки

используются

разные

ключи

При

этом

ключ

используемый

для

зашифровки

является

открытым

  (

не

секретным

и

может

быть

сообщен

всем

желаю

-

щим

отправить

шифрованное

сообщение

а

  ключ

используемый

для

расшифровки

является

закрытым

и

хранится

в

секрете

полу

-

чателем

шифрованных

сообщений

Даже

знание

всего

зашифро

-

ванного

сообщения

и

открытого

ключа

с

помощью

которого

оно

было

зашифровано

не

позволяет

дешифровать

сообщение

  (

без

знания

закрытого

ключа

). 

Для

описания

метода

шифрования

с

открытым

ключом

нужны

некоторые

факты

из

теории

чисел

изложенные

 (

без

дока

-

зательств

в

следующем

подразделе

 
Модулярная арифметика
 
 

В

этом

подразделе

все

числа

целые

Говорят

что

число

  а

сравнимо  по  модулю  п 

с

числом

b  (

обозначение

:  а 

≡ (mod n)), 

если

 а 

и

при

делении

на

 п

дают

один

и

тот

же

остаток

а 

 b (mod п) : = a mod п= b mod п. 

Отношение

  сравнимости

рефлексивно

симметрично

и

транзитивно

и

является

отношением

эквивалентности

Классы

Источник: https://files.student-it.ru/previewfile/1197