Опубликован: 02.03.2017 | Доступ: свободный | Студентов: 2513 / 558 | Длительность: 21:50:00
Лекция 6:

Классические шифры

6.9 Энтропия на знак, избыточность и расстояние единственности

Мерой среднего количества информации, приходящейся на одну букву открытого текста языка F, который будем рассматривать как источник случайных текстов, служит величина H_F, называемая энтропией языка. Интерес представляет энтропия вероятностной схемы на r-граммах, деленная на r. Известно, что существует конечный предел, который и принимается за определение энтропии H_F языка F:

H_F=\underset{r\rightarrow {\infty}}{\lim }{\frac{Hr}{r}}.

При этом формула

R_F=1-\frac{{H}_{\Lambda }}{{\log }_{2}n}

определяет избыточность языка F. Как известно, если длина криптограммы не большая, то результат расшифрования может дать несколько осмысленных текстов.

Найдём оценку для числа ложных ключей. Для этого рассмотрим связь между энтропиями вероятностных распределений P\left(X\right), P\left(K\right), P(Y), заданных на компонентах X, K, Y произвольного шифра {\Sigma }_{B}.

Назовем условную энтропию H(K/Y) неопределенностью шифра \Sigma_B по ключу. Она измеряет среднее количество информации о ключе, которую дает шифртекст. Аналогично вводится неопределенность шифра по открытому тексту H(X/Y). Эти величины являются мерой теоретической стойкости шифра.

Рассмотрим произвольный поточный шифр замены {\Sigma }_{B}, для которого множество X открытых текстов представляет собой множество возможных осмысленных текстов в данном алфавите A (например, русском, английском или некотором другом), состоящим из n букв. Зафиксируем некоторое число L{\in}N и будем интересоваться числом ложных ключей, отвечающих данной криптограмме y{\in}{A}^{L}. Предполагается, что A служит также алфавитом шифрованного текста. Введем обозначение:

K\left(y\right)=\left\{k{\in}K\right|{\exists}x{\in}X,{E}_{k}\left(x\right)=y\}

K(y) есть множество ключей, для каждого из которых y является результатом шифрования некоторого осмысленного текста длины L. Если мы располагаем криптограммой y, то число ложных ключей равно \left|K\left(y\right)\right|=1, так как лишь один из допустимых ключей является истинным. Определим среднее число ложных ключей {\kappa }_{L} (относительно всех возможных шифртекстов длины L) формулой:

{\kappa }_{L}=\sum _{y{\in}Y}{p\left(y\right){\cdot}\left(\left|K\left(y\right)\right|-1\right),}

которая легко приводится к виду

{\kappa }_{L}=\sum _{y{\in}Y}{p\left(y\right)\left|K\left(y\right)\right|-1.}

Теорема 6.4 Для любого рассматриваемого шифра {\Sigma }_{B} с равновероятными ключами при достаточно больших значениях L имеет место неравенство

{\kappa }_{L}{\geq}\frac{\left|K\right|}{{n}^{L{\cdot}{R}_{\Lambda }}}-1,

где {R}_{\Lambda } - избыточность данного языка.

Назовем расстоянием единственности для шифра {\Sigma }_{B} натуральное число (обозначим его {L}_{0}), для которого ожидаемое число ложных ключей \kappa _{\Lambda } равно нулю. По сути, расстояние единственности есть средняя длина шифртекста, необходимая для однозначного восстановления истинного ключа (без каких-либо ограничений на время его нахождения).

{L}_{0}=\left\lceil\frac{\log_2 |K|}{R_\Lambda\cdot \log_2 n}\right\rceil

Большинство криптосистем слишком сложны для точного определения расстояния единственности, однако в некоторых случаях оно может быть аппроксимировано соотношением L_0 = H(k)/R_F.

Оценим расстояние единственности шифра Виженера со случайным ключевым словом длиной 4 символа для сообщений на английском языке.

Ключ шифра - это набор из четырех чисел, каждое из которых является случайным сдвигом в диапазоне от 0 до 25. Энтропия ключа H(k) = log_2\ 26^4 \approx 18,8. Для языка из 26 символов R_0 = log_2 \ 26 \approx 4.7. Для длинных сообщений на английском языке оценка H_r/r составляет от 1 до 1,5. Взяв значение H_F = 1,5, можно вычислить L_0\approx 18,8 / 3,2 \approx 5,9. Таким образом, однозначное дешифрование шифра Виженера с 4-х символьным ключом возможно при длине шифртекста не менее 6 символов.

Пример 6.14 ([6]) Пусть источник порождает буквы из алфавита F=a,b,c с вероятностями P(a)=0,8, P(b)=0,15, P(c)=0,05. Пусть у нас источник без памяти. Шифрование состоит в замене буквы в исходном сообщении, используя перестановку символов в соответствии с ключом: k=1 : (abc),   k=2 : (acb),  k=3 : (bac),  k=4 : (bca),  k=5 : (cab), k=6 : (cba), то есть ключ принимает значения от 1 до 6 и если, например, k=5, то производится следующая замена символов текста: a\rightarrow c$, $b\rightarrow a$, $c\rightarrow b. Пусть противник перехватил шифрованное сообщение cccbc и пытается определить значение ключа. Оценим вероятности использования всех возможных ключей.

Используем формулу Байеса:

P\left({K}_{i}\left|E\right.\right)=\frac{P\left({K}_{i}\right)P(E| {K}_{i})}{\sum _{j=1}^{t}{P\left({K}_{j}\right)P(E| {K}_{j})}},

где E, {K}_{1},{\dots}, {K}_{t} - некоторые события, {K}_{i} попарно несовместны и E{\subset}\bigcup\limits_{i=1}^{t}{{K}_{i}}. В нашем случае событие E - это получение шифрованного сообщения cccbc, t=6, а K_i означает, что выбран ключ k=i.

Мы предполагаем, что все ключи равновероятны, т.е.

P\left({K}_{1}\right)=P\left({K}_{2}\right)=P\left({K}_{3}\right)=P\left({K}_{4}\right)=P\left({K}_{5}\right)=P\left({K}_{6}\right)=1/6.

Тогда

P\left(E\left|{K}_{1}\right.\right)=P\left(\overline{{x}}=\mathit{cccbc}\right)={0.05}^{4} {\cdot}0.15{\approx}0.000001,
P\left(E\left|{K}_{2}\right.\right)=P\left(\overline{{x}}=\mathit{bbbcb}\right)={0.15}^{4}{\cdot}0.05{\approx}0.000025,
P\left(E\left|{K}_{3}\right.\right)=P\left(\overline{{x}}=\mathit{cccac}\right)=0.8{\cdot}{0.05}^{4}{\approx}0.000005,
P\left(E\left|{K}_{4}\right.\right)=P\left(\overline{{x}}=\mathit{bbbab}\right)=0.8{\cdot}{0.15}^{4}{\approx}0.000405,
P\left(E\left|{K}_{5}\right.\right)=P\left(\overline{{x}}=\mathit{aaaca}\right)={0.8}^{4}{\cdot}0.05=0.020480,
P\left(E\left|{K}_{6}\right.\right)=P\left(\overline{{x}}=\mathit{aaaba}\right)={0.8}^{4}{\cdot}0.15=0.061440.

Отсюда легко находим

\sum _{j=1}^{6}{P\left({K}_{j}\right)P\left(E\left|{K}_{j}\right.\right){\approx}0.013726}

и получаем по формуле Байеса апостериорную вероятность того, что был использован ключ k = 1, при условии, что получено сообщение \overline{{y}}=\mathit{cccbc}:

P\left({K}_{1}\left|E\right.\right)=P\left(\overline{{x}}=\mathit{cccbc}\left|\overline{{y}}=\mathit{cccbc}\right.\right){\approx}\frac{(1/6){\cdot}0.000001}{0.13726}{\approx}0.000011.

Продолжая аналогично, находим наиболее вероятные ключи для k = 5 и k = 6:

P\left({K}_{5}\left|E\right.\right)=P\left(\overline{{x}}=\mathit{aaaca}\left|\overline{{y}}=\mathit{cccbc}\right.\right){\approx}0.25,
P\left({K}_{6}\left|E\right.\right)=P\left(\overline{{x}}=\mathit{aaaba}\left|\overline{{y}}=\mathit{cccbc}\right.\right){\approx}0.75,

а вероятности всех остальных ключей меньше 0.01.

Мы видим, что, перехватив всего пять букв, противник может определить ключ почти однозначно. Если избыточность сообщения равна нулю, то ключ никогда не будет определен. Уменьшение избыточности может быть достигнуто за счет сжатия данных. Это объясняется тем, что при сжатии энтропия "сжатого" текста сохраняется, а длина уменьшается. Следовательно, энтропия на букву в сжатом тексте больше, чем в исходном, а избыточность меньше. Таким образом, после сжимающего кодирования расстояние единственности шифра увеличивается. Поясним примером , как взаимная зависимость символов увеличивает избыточность и тем самым уменьшает расстояние единственности.

Пример 6.15 Пусть имеется марковский источник сообщений, вероятность p_ij появления j-го символа после i-го задаётся матрицей:

P=\left(\begin{matrix}{p}_{11}&{p}_{12}&{p}_{13}\\{p}_{21}&{p}_{22}&{p}_{23}\\{p}_{31}& {p}_{32}& p}_{33}\end{matrix}\right)=\left(\begin{matrix}0&0.9&0.1\\0&0.1&0.9\\0.4&0.3&0.3\end{matrix}\right).

Заданы начальные вероятности: P(a)=0.19, P(b)=0.34, P(c)=0.47. Возможные ключи: {k}_{1}=\left(\begin{matrix}a&b&c\\a&b&c\end{matrix}\right), {k}_{2}=\left(\begin{matrix}a&b&c\\a&c&b\end{matrix}\right), {k}_{3}=\left(\begin{matrix}a&b&c\\b&a&c\end{matrix}\right), {k}_{4}=\left(\begin{matrix}a&b&c\\c&a&b\end{matrix}\right), {k}_{5}=\left(\begin{matrix}a&b&c\\b&c&a\end{matrix}\right), {k}_{6}=\left(\begin{matrix}a&b&c\\c&b&a\end{matrix}\right).

Пусть перехвачен шифртекст: bbacbac. Какой ключ использовался при шифровании?

Зная матрицу переходов, мы можем сделать вывод: сочетание aa невозможно (после буквы a вероятность появления снова буквы a равна нулю), вероятность появления b после b равна 0,1 , то есть сочетание bb маловероятно. Поэтому наиболее вероятная первая пара букв открытого текста cc, у нас есть гипотеза: при зашифровании была проведена замена: c\rightarrow b. Тогда другие замены возможные: b\rightarrow a и a\rightarrow c либо a\rightarrow a и b\rightarrow c. В первом варианте паре букв шифртекста ac соответствует пара букв открытого текста ba. Но сочетание ba невозможно, как видно из матрицы переходов, а сочетание ab возможно. Следовательно,наиболее вероятным ключом является подстановка: {k}_{2}=\left(\begin{matrix}a&b&c\\a&c&b\end{matrix}\right). Для проверки нашей гипотезы вычислим вероятности использования различных ключей. Заметим, что вероятность сообщения равна произведению вероятности начальной буквы и вероятностей переходов от одной буквы к другой.

P(E/K_{1})=P(m=bbncbnc)=0.34\cdot0.1\cdot0=0,
P(E/K_{2})=P(m=ccnbcnb)=0.47\cdot0.3\cdot0.4\cdot0.9\cdot0.9\cdot0.4\cdot0.9=0.016446,
P(E/K_{3})=P(m=nnbcnbc)=0.19\cdot0=0,
P(E/K_{4})=P(m=nncbncb)=0.19\cdot0=0,
P(E/K_{5})=P(m=ccbncbn)=0.47\cdot0.3\cdot0.3\cdot0=0,
P(E/K_{6})=P(m=bbcnbcn)=0.34\cdot0.1\cdot0.9\cdot0.4\cdot0.9\cdot0.9\cdot0.4=0.003966.

Применяем формулу полной вероятности:

\sum\limits_{i=1}^6 P(K_i)P(E/K_i) = 0.003402.

Тепрерь по формуле Байеса апостериорные вероятности использования ключей при условии получения шифртекста bbacbac следующие:

P({K}_{1}/E)=0$, $P({K}_{2}/E)=0.8$, $P({K}_{3}/E)=P({K}_{4}/E)=P({K}_{5}/E)=0$, $P({K}_{6}/E)=0.2.

Вычисления подтверждают нашу гипотезу.

Евгений Шаров
Евгений Шаров

как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами?

Юлия Мышкина
Юлия Мышкина

Обучение с персональным тьютором осуществляется по Скайпу или посредством переписки?