close

Вход

Забыли?

вход по аккаунту

?

Шифрование

код для вставкиСкачать
bdn
ɒифрование
лгоритмы шифрования и дешифрования данных широко применяются в компьютерной технике в системах сокрытия конфиденциальной и коммерческой информации от злонамеренного использования сторонними лицами.
уществуют симметричные и ассиметричные алгоритмы шифрования.
имметричные алгоритмы для шифрования и дешифрования используют один и тот же ключ.
ообщение
акрытый ключ
ɒифрование
ашифрованное
сообщение
ешифрование
акрытый ключ
ообщение
анал связи
имметричное шифрование
ɒифрование
дно из требований к алгоритму шифрования -
полная утрата всех статистических закономерностей исходного сообщения является важным требованием к симметричному шифру. ля этого шифр должен иметь «эффект лавины» ²
должно происходить сильное изменение шифроблока при 1 битном изменении входных данных (в идеале должны меняться значения 1/2 бит шифроблока).
акже важным требованием является отсутствие линейности -
нарушение условия f(a) xor f(b) == f(a xor b)),
в противном случае облегчается применение дифференциального криптоанализа к шифру. бщая схема
настоящее время симметричные шифры ²
это:
•
блочные шифры
. брабатывают информацию блоками определённой длины (обычно 64, 128 бит), применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами. езультатом повторения раундов является лавинный эффект ²
нарастающая потеря соответствия битов между блоками открытых и зашифрованных данных.
•
поточные шифры
, в которых шифрование проводится над каждым битом либо байтом исходного (открытого) текста
ɒифрование
ольшинство симметричных шифров используют сложную комбинацию большого количества подстановок и перестановок. ногие такие шифры исполняются в несколько проходов, используя на каждом проходе «ключ прохода». ножество «ключей прохода» для всех проходов называется «расписанием ключей» (key schedule). ак правило, оно создается из ключа выполнением над ним неких операций, в том числе перестановок и подстановок.
ипичным способом построения алгоритмов симметричного шифрования является сеть ейстеля. лгоритм строит схему шифрования на основе функции F(D, K), где D ²
порция данных, размером вдвое меньше блока шифрования, а K ²
«ключ прохода» для данного прохода. т функции не требуется обратимость ²
обратная ей функция может быть неизвестна. остоинства сети ейстеля ²
почти полное совпадение дешифровки с шифрованием (единственное отличие ²
обратный порядок «ключей прохода» в расписании), что сильно облегчает аппаратную реализацию.
перация перестановки перемешивает биты сообщения по некоему закону. менно операции перестановки дают возможность достижения «эффекта лавины». перация перестановки линейна f(a) xor f(b) == f(a xor b)
ɒифрование
араметры алгоритмов
•
Стойкость
±
пособность криптографического алгоритма противостоять возможным атакам на него или оценка алгоритма, способного взломать шифр. такующие криптографический алгоритм используют методы криптоанализа. тойким считается алгоритм, который для успешной атаки требует от противника недостижимых вычислительных ресурсов, недостижимого объёма перехваченных открытых и зашифрованных сообщений или же такого времени раскрытия, что по его истечению защищенная информация будет уже не актуальна, и т. д. тойкость нельзя подтвердить, её можно только опровергнуть взломом.
•
длина ключа
•
число раундов
•
длина обрабатываемого блока
•
сложность аппаратной/программной реализации
•
сложность преобразования
остоинства симметричных алгоритмов
•
скорость ( на порядки выше чем у ассиметричных)
•
простота реализации (за счёт более простых операций)
•
меньшая требуемая длина ключа для сопоставимой стойкости
ɒифрование
едостатки
•
сложность управления ключами в большой сети. значает квадратичное возрастание числа пар ключей, которые надо генерировать, передавать, хранить и уничтожать в сети. •
сложность обмена ключами. ля применения необходимо решить проблему надёжной передачи ключей каждому абоненту, так как нужен секретный канал для передачи каждого ключа обеим сторонам.
•
невозможность их использования для подтверждения авторства, так как ключ известен каждой стороне.
аспространенные алгоритмы
•
AES (Advanced Encryption Standard) -
американский стандарт шифрования
•
28147
-
89 ²
отечественный стандарт шифрования данных
•
DES (англ. Data Encryption Standard) -
стандарт шифрования данных в ɒ до AES есть в .NET
•
3DES (Triple
-
DES, тройной DES)
есть в .NET
•
RC
2 есть в .NET
•
Rijndael есть в .NET
ɒифрование
Ac
имметричные алгоритмы
Ac
имметричные алгоритмы для шифрования и дешифрования используют разные ключи.
Открытый ключ
±
для шифрования у отправителя сообщения
Закрытый ключ
±
для дешифровки у получателя сообщения
ткрытый ключ может быть у кого угодно, а закрытый (секретный) только у одного. роцедура шифрования выбрана так, что она необратима даже по известному ключу шифрования ±
это необходимое условие асимметричной криптографии. о есть, зная ключ шифрования и зашифрованный текст, невозможно восстановить исходное сообщение ±
прочесть его можно только с помощью второго ключа ±
ключа дешифрования. раз так, то ключ шифрования для отправки писем какому
-
либо лицу можно вообще не скрывать ±
зная его все равно невозможно прочесть зашифрованное сообщение. оэтому, ключ шифрования называют в асимметричных системах "открытым ключом", а вот ключ дешифрования получателю сообщений необходимо держать в секрете ±
он называется "закрытым ключом". апрашивается вопрос : "очему, зная открытый ключ, нельзя вычислить закрытый ключ ?" ±
это еще одно необходимое условие асимметричной криптографии ±
алгоритмы шифрования и дешифрования создаются так, чтобы зная открытый ключ, невозможно вычислить закрытый ключ.
ɒифрование
целом система переписки при использовании асимметричного шифрования выглядит следующим образом. ля каждого из N абонентов, ведущих переписку, выбрана своя пара ключей : "открытый" Ej и "закрытый" Dj, где j ±
номер абонента. се открытые ключи известны всем пользователям сети, каждый закрытый ключ, наоборот, хранится только у того абонента, которому он принадлежит.
сли абонент, скажем под номером 7, собирается передать информацию абоненту под номером 9, он шифрует данные ключом шифрования E9 и отправляет ее абоненту 9. есмотря на то, что все пользователи сети знают ключ E9 и, возможно, имеют доступ к каналу, по которому идет зашифрованное послание, они не могут прочесть исходный текст, так как процедура шифрования необратима по открытому ключу. только абонент №9, получив послание, производит над ним преобразование с помощью известного только ему ключа D9 и восстанавливает текст послания. аметьте, что если сообщение нужно отправить в противоположном направлении (от абонента 9 к абоненту 7), то нужно будет использовать уже другую пару ключей (для шифрования ключ E7, а для дешифрования ±
ключ D7).
ɒифрование
ак мы видим, во
-
первых, в асимметричных системах количество существующих ключей связано с количеством абонентов линейно (в системе из N пользователей используются 2*N ключей), а не квадратично, как в симметричных системах. о
-
вторых, при нарушении конфиденциальности k
-
ой рабочей станции злоумышленник узнает только ключ Dk : это позволяет ему читать все сообщения, приходящие абоненту k, но не позволяет выдавать себя за него при отправке писем.
лгоритм RSA
лгоритм RSA стоит у истоков асимметричной криптографии. н был предложен тремя математиками ональдом ивестом (R.Rivest) , ди ɒамиром (A.Shamir) и еонардом дльманом (L.Adleman) в 1977
-
78 годах. ервым этапом любого асимметричного алгоритма является создание пары ключей : открытого и закрытого и распространение открытого ключа "по всему миру". ля алгоритма RSA этап создания ключей состоит из следующих операций :
•
ыбираются два простых
числа p
и q
•
ычисляется их произведение n = p*q •
ыбирается произвольное число e (e < n),
такое, что НОД(e, (p
-
1)(q
-
1))=1
, то есть e
должно быть взаимно простым с числом (p
-
1)(q
-
1
). ɒифрование
•
етодом вклида решается в целых числах уравнение e*d+(p
-
1)(q
-
1)*y=1
. десь неизвестными являются переменные d
и y
±
метод вклида как раз и находит множество пар (d,y),
каждая из которых является решением уравнения в целых числах. •
ва числа (e, n)
±
публикуются как открытый ключ. •
ɑисло d хранится в строжайшем секрете ±
это и есть закрытый ключ, который позволит читать все послания, зашифрованные с помощью пары чисел (e, n)
.
роцесс шифрования
•
тправитель разбивает свое сообщение на блоки, равные k=[log
2
(n)]
бит, где квадратные скобки обозначают взятие целой части от дробного числа. •
одобный блок может быть интерпретирован как число из диапазона (0; 2
k
-
1
).
ля каждого такого числа (назовем его
m
i ) вычисляется выражение c
i
=((m
i
)
e
)mod n.
локи c
i и есть зашифрованное сообщение х можно спокойно передавать по открытому каналу. перация возведения в степень по модулю простого числа, является необратимой математической задачей. братная ей задача носит название "логарифмирование в конечном поле" и является на несколько порядков более сложной задачей. о есть даже если злоумышленник знает числа e
и n
, то по c
i
прочесть исходные сообщения m
i
он не может никак, кроме как полным перебором m
i
.
ɒифрование
роцесс дешифрования
остаточно давно была доказана теорема Эйлера, частный случай которой утверждает, что если число n представимо в виде двух простых чисел p
и q
, то для любого x
имеет место равенство (x
(p
-
1)(q
-
1)
)mod n = 1
. ля дешифрования RSA
-
сообщений воспользуемся этой формулой. озведем обе ее части в степень (
-
y) : (x
(
-
y)(p
-
1)(q
-
1)
)mod n = 1
(
-
y)
= 1
.
еперь умножим обе ее части на x : (x(
-
y)(p
-
1)(q
-
1)+1)mod n = 1*x = x.
(x
(
-
y)(p
-
1)(q
-
1)+1
)mod n = 1*
x = x
теперь вспомним как мы создавали открытый и закрытый ключи. ы подбирали с помощью алгоритма вклида d
такое, что e*d+(p
-
1)(q
-
1)*y=1
, то есть e*d=(
-
y)(p
-
1)(q
-
1)+1
. C
ледовательно в последнем выражении мы можем заменить показатель степени на число (e*d).
олучаем (xe*d)mod n = x
. о есть для того чтобы прочесть сообщение c
i
=((m
i
)
e
)mod n
достаточно возвести его в степень d
по модулю m
: ((c
i
)
d
)mod n = ((m
i
)
e*d
)mod n = m
i
.
ɒифрование
а самом деле операции возведения в степень больших чисел достаточно трудоемки для современных процессоров, даже если они производятся по оптимизированным по времени алгоритмам. оэтому обычно весь текст сообщения кодируется обычным блочным шифром (намного более быстрым), но с использованием ключа сеанса, а вот сам ключ сеанса шифруется как раз асимметричным алгоритмом с помощью открытого ключа получателя и помещается в начало файла. римерно так
:
1.
аш друг генерирует пару ключей. ообщает ам открытый ключ.
2.
ɑтобы начать общение ы генерируете закрытый ключ и инициализирующий вектор для симметричного алгоритма. ɒифруете эту информацию при помощи открытого ключа. тправляете эту шифрованную информацию.
3.
аш друг декодирует сообщение при помощи своего закрытого несимметричного ключа. результате получает закрытый ключ и инициализирующий вектор для симметричного алгоритма. статок разговора состоит из сообщений зашифрованных с помощью симметричного ключа.
среде .NET реализованы ассиметричные алгоритмы RSA
и DSA
ɒифрование
Цифровые подписи
ак оказалось, теория асимметричного шифрования позволяет очень красиво решать еще одну проблему информационной безопасности ±
проверку подлинности автора сообщения. ля решения этой проблемы с помощью симметричной криптографии была разработана очень трудоемкая и сложная схема. то же время с помощью, например, того же алгоритма RSA создать алгоритм проверки подлинности автора и неизменности сообщения чрезвычайно просто.
редположим, что нам нужно передать какой
-
либо текст, не обязательно секретный, но важно то, чтобы в него при передаче по незащищенному каналу не были внесены изменения. таким текстам обычно относятся различные распоряжения, справки, и тому подобная документация, не представляющая секрета. ычислим от нашего текста какую
-
либо хеш
-
функцию ±
это будет число, которое более или менее уникально характеризует данный текст.
принципе, можно найти другой текст, который дает то же самое значение хеш
-
функции, но изменить в нашем тексте десять
-
двадцать байт так, чтобы текст остался полностью осмысленным, да еще и изменился в выгодную нам сторону (например, уменьшил сумму к оплате в два раза) ±
чрезвычайно сложно. менно для устранения этой возможности хеш
-
функции создают такими же сложными как и криптоалгоритмы ±
если текст с таким же значением хеш
-
функции можно будет подобрать только методом полного перебора, а множество значений будет составлять как и для блочных шифров 2
32
±
2
128
возможных вариантов, то для поиска подобного текста злоумышленнику "потребуются" те же самые миллионы лет.
ɒифрование
аким образом, если мы сможем передать получателю защищенным от изменения методом хеш
-
сумму от пересылаемого текста, то у него всегда будет возможность самостоятельно вычислить хеш
-
функцию от текста уже на приемной стороне и сверить ее с присланной нами. сли хотя бы один бит в вычисленной им самостоятельно контрольной сумме текста не совпадет с соответствующим битом в полученном от нас хеш
-
значении, значит, текст по ходу пересылки подвергся несанкционированному изменению.
редставим теперь готовую к передаче хеш
-
сумму в виде нескольких k
-
битных блоков h
i
,
где k
±
это размер сообщений по алгоритму RSA.
ычислим над каждым блоком значение s
i
=((h
i
)
d
)mod n
, где d
±
это тот самый закрытый ключ отправителя. еперь сообщение, состоящее из блоков s
i
можно "спокойно" передавать по сети. икакой опасности по известным h
i
и s
i
найти аш секретный ключ нет ±
это настолько же сложная задача, как и задача "логарифмирования в конечном поле". юбой получатель сообщения может легко прочесть исходное значение h
i
, выполнив операцию ((s
i
)
e
)mod n = ((h
i
)
d*e
)mod n = h
i
ткрытый ключ (e,n)
есть у всех, а то, что возведение любого числа в степень (e*d)
по модулю n
дает исходное число, мы уже доказали. ри этом никто другой, кроме ас, не зная ашего закрытого ключа d
не может, изменив текст, а следовательно, и хеш
-
сумму, вычислить такие s'
i
, чтобы при их возведении в степень e
получилась хеш
-
сумма h'
i
, совпадающая с хеш
-
суммой фальсифицированного текста.
ɒифрование
аким образом, манипуляции с хеш
-
суммой текста представляют из себя "асимметричное шифрование наоборот" : при отправке используется закрытый ключ отправителя, а для проверки сообщения ±
открытый ключ. одобная технология получила название "электронная подпись". нформацией, которая уникально идентифицирует отправителя (его виртуальной подписью), является закрытый ключ d
. и один человек, не владеющий этой информацией, не может создать такую пару (текст, s
i
), что описанный выше алгоритм проверки дал бы положительный результат. одобный обмен местами открытого и закрытого ключей для создания из процедуры асимметричного шифрования алгоритма электронной подписи возможен только в тех системах, где выполняется свойство коммутативности ключей. ля других асимметричных систем алгоритм электронной подписи либо значительно отличается от базового, либо вообще не реализуем.
ɒифрование
еханизм распространения открытых ключей
азалось бы, асимметричные криптосистемы лишены одного из самых главных недостатков симметричных алгоритмов ±
необходимости предварительного обмена сторонами секретным ключом по защищенной схеме (например, из рук в руки или с помощью поверенного курьера). роде бы достаточно "раструбить" по всему свету о своем открытом ключе, и вот готова надежная линия передачи сообщений. о оказывается не все так просто : редположим я аш потенциальный собеседник. ля того чтобы отправить зашифрованное сообщение, я должен узнать аш открытый ключ. сли ы не приносили мне его лично на флешке, значит я его просто взял из информационной сети. теперь главный вопрос : Где доказательство, что данный набор байт является именно Вашим открытым ключом? едь злоумышленник может сгенерировать произвольную пару (закрытый ключ, открытый ключ), затем активно распространять или пассивно подменять при запросе аш открытый ключ созданным им. ɒифрование
этом случае при отправке сообщения 1)
Я зашифрую его тем ключом, который думаю, что является ашим, 2)
лоумышленник, перехватив сообщение дешифрует его парным закрытым ключом, прочтет и более того : 3)
н может переслать сообщение дальше, зашифровав действительно уже ашим открытым ключом. очно так же, но по инверсной схеме, он может подменить и мою электронную подпись под моим письмом.
Таким образом, если между отправителем и получателем нет конфиденциальной схемы передачи асимметричных ключей, то возникает серьезная опасность появления злоумышленника
-
посредника
. о асимметричная криптография нашла изящный способ очень значительного снижения риска подобной атаки. сли задуматься, то неправильно говорить, что между ами и ашим собеседником нет гарантированной линии связи. есомненно у ас найдется трое
-
четверо надежных знакомых в городе или за рубежом, у них в свою очередь также найдется множество знакомых во многих точках страны и мира. конце концов, ы пользуетесь программным обеспечением фирм, если не центры, то хотя бы филиалы которых находятся в той стране или в том городе, куда ы хотите отправить письмо. роблема только в том, что начиная, со второго от ас звена ни ы не знаете человека, ни он ас, и вероятность того, что он, или более того, крупная компания, будут что
-
либо делать ради ас, очень мала.
ɒифрование
принципе, если множество единомышленников объединятся с целью создать надежную сеть распространения ключей, то это будет им вполне под силам. а самом деле никуда ходить с флешкой, получив просьбу от своего знакомого передать открытый ключ мистера V.M.B. мистеру R.H.J., не нужно. едь ы общаетесь с ашим знакомым, значит, у ас есть его открытый ключ, полученный каким
-
либо надежным способом. следовательно, он может ам прислать этот открытый ключ мистера V.M.B., подписав сообщение своей электронной подписью. от ас в свою очередь требуется всего лишь отправить этот ключ дальше по цепочке в направлении мистера R.H.J., подписав уже своей электронной подписью. аким образом, минуя несколько переподписываний, открытый ключ дойдет от места отправления к месту требования по надежному пути. принципе от ас даже может не требоваться никаких действий ±
просто поставьте на ашей Э специальный сервер распространения ключей, и он все только что описанные действия будет выполнять автоматически.
а сегодняшний день не существует единой сети распространения открытых ключей, и дело, как это часто бывает, заключается в войне стандартов. азвиваются несколько независимых систем, но ни одна из них не получила довлеющего превосходства над другими, которое называется "мировым стандартом".
ɒифрование
еобходимо отметить, что цепочка распространения ключей в реальных случаях не очень велика. бычно она состоит из двух
-
четырех звеньев. привлечением к процессу распространения ключей крупных фирм
-
производителей программных продуктов она становится еще короче. ействительно, если на компакт
-
диске (не пиратском !) с купленным программным обеспечением уже находится открытый ключ этой фирмы, а сама она имеет крупный рынок сбыта, то цепочка будет состоять либо из одного звена (если этой же фирмы стоит и у ашего потенциального собеседника), либо из двух (вторым станет какой
-
нибудь другой гигантский концерн, чье установлено у собеседника ±
уж между собой
-
то все крупные компании обменялись ключами электронных подписей достаточно давно). ткрытый ключ, подписанный какой
-
либо третьей стороной, называется заверенным с помощью сертификата. Сертификатом называется информационный пакет, содержащий какой
-
либо объект (обычно ключ) и электронную подпись, подтверждающую этот объект от имени чьего
-
либо лица.
ɒифрование
бмен ключами по алгоритму иффи
-
еллмана
лгоритм помогает обмениваться секретным ключом для симметричных криптосистем, но использует метод, очень похожий на асимметричный алгоритм RSA. лгоритм назван по фамилиям его создателей иффи (Diffie) и еллмана (Hellman).
пределим круг его возможностей. редположим, что двум абонентам необходимо провести конфиденциальную переписку, а в их распоряжении нет первоначально оговоренного секретного ключа. днако, между ними существует канал, защищенный от модификации, то есть данные, передаваемые по нему, могут быть прослушаны, но не изменены (такие условия имеют место довольно часто). этом случае две стороны могут создать одинаковый секретный ключ, ни разу не передав его по сети, по следующему алгоритму.
редположим, что обоим абонентам известны некоторые два числа v
и n
. ни, впрочем, известны и всем остальным заинтересованным лицам. апример, они могут быть просто фиксированно "зашиты" в программное обеспечение. ля того, чтобы создать неизвестный более никому секретный ключ, оба абонента генерируют случайные или псевдослучайные простые числа : первый абонент ±
число x
, второй абонент ±
число y
. ɒифрование
атем первый абонент вычисляет значение (
v
x
) mod n
и пересылает его второму, а второй вычисляет (v
y
) mod n
и передает первому. лоумышленник получает оба этих значения, но модифицировать их (вмешаться в процесс передачи) не может. а втором этапе первый абонент на основе имеющегося у него x
и полученного по сети (v
y
) mod n
вычисляет значение (((v
y
) mod n)
x
)mod n
, а второй абонент на основе имеющегося у него y
и полученного по сети (v
x
) mod n
вычисляет значение (((v
x
) mod n)
y
)mod n
. а самом деле операция возведения в степень переносима через операцию взятия модуля по простому числу то есть у обоих абонентов получилось одно и то же число : ((v
x*y
) mod n.
го они и могут использовать в качестве секретного ключа, поскольку здесь злоумышленник снова встретится с проблемой RSA при попытке выяснить по перехваченным (v
x
) mod n
и (v
y
) mod n
сами числа x
и y
±
это очень и очень ресурсоемкая операция, если числа v,n,x,y
выбраны достаточно большими.
еобходимо еще раз отметить, что алгоритм иффи
-
еллмана работает только на линиях связи, надежно защищенных от модификации. днако, в тех случаях, когда в канале возможна модификация данных, появляется очевидная возможность вклинивания в процесс генерации ключей "злоумышленника
-
посредника" по той же самой схеме, что и для асимметричной криптографии.
ɒифрование
еширование паролей
ранить пароли для входа в систему непосредственно в текстовом виде недопустимо с точки зрения безопасности. оскольку если они станут известны злоумышленнику, то тем самым он просто сможет войти в систему. оэтому их надо хранить в зашифрованном виде. ам пароль должен на ходу подвергаться шифрованию и сравнивать надо результаты шифрования вводимого пароля с хранящимися в системе образцами.
ля решения этой проблемы были разработаны методы, преобразующие произносимую, осмысленную строку произвольной длины ±
пароль, в указанный ключ заранее заданной длины. подавляющем большинстве случаев для этой операции используются так называемые хеш
-
функции ( hashing ±
мелкая нарезка и перемешивание). еш
-
функцией называется такое математическое или алгоритмическое преобразование заданного блока данных, которое обладает следующими свойствами: •
хеш
-
функция имеет бесконечную область определения, •
хеш
-
функция имеет конечную область значений, •
она необратима, •
изменение входного потока информации на один бит меняет около половины всех бит выходного потока, то есть результата хеш
-
функции.
ɒифрование
Эти свойства позволяют подавать на вход хеш
-
функции пароли, то есть текстовые строки произвольной длины на любом национальном языке и, ограничив область значений функции диапазоном 0..2N
-
1, где N ±
длина ключа в битах, получать на выходе достаточно равномерно распределенные по области значения блоки информации ±
ключи.
етрудно заметить, что требования, подобные 3 и 4 пунктам требований к хеш
-
функции, выполняют блочные шифры. Это указывает на один из возможных путей реализации стойких хеш
-
функций ±
проведение блочных криптопреобразований над материалом строки
-
пароля. Этот метод и используется в различных вариациях практически во всех современных криптосистемах. атериал строки
-
пароля многократно последовательно используется в качестве ключа для шифрования некоторого заранее известного блока данных ±
на выходе получается зашифрованный блок информации, однозначно зависящий только от пароля и при этом имеющий достаточно хорошие статистические характеристики. акой блок или несколько таких блоков и используются в качестве ключа для дальнейших криптопреобразований.
ɒифрование
арактер применения блочного шифра для хеширования определяется отношением размера блока используемого криптоалгоритма и разрядности требуемого хеш
-
результата.
сли указанные выше величины совпадают, то используется схема одноцепочечного блочного шифрования. ервоначальное значение хеш
-
результата H0 устанавливается равным 0, вся строка
-
пароль разбивается на блоки байт, равные по длине ключу используемого для хеширования блочного шифра, затем производятся преобразования по реккурентной формуле:
Hj=Hj
-
1 XOR EnCrypt(Hj
-
1,PSWj),
где EnCrypt(X,Key) ±
используемый блочный шифр.
оследнее значение Hk используется в качестве искомого результата.
ɒифрование
том случае, когда длина ключа ровно в два раза превосходит длину блока, а подобная зависимость довольно часто встречается в блочных шифрах, используется схема, напоминающая сеть ейштеля. арактерным недостатком и приведенной выше формулы, и хеш
-
функции, основанной на сети ейштеля, является большая ресурсоемкость в отношении пароля. ля проведения только одного преобразования, например, блочным шифром с ключом длиной 128 бит используется 16 байт строки
-
пароля, а сама длина пароля редко превышает 32 символа. ледовательно, при вычислении хеш
-
функции над паролем будут произведено максимум 2 "полноценных" криптопреобразования.
ешение этой проблемы можно достичь двумя путями : •
предварительно "размножить" строку
-
пароль, например, записав ее многократно последовательно до достижения длины, скажем, в 256 символов; •
модифицировать схему использования криптоалгоритма так, чтобы материал строки
-
пароля "медленнее" тратился при вычислении ключа.
о второму пути пошли исследователи евис и айер, предложившие алгоритм также на основе блочного шифра, но использующий материал строки
-
пароля многократно и небольшими порциями. нем просматриваются элементы обеих приведенных выше схем, но криптостойкость этого алгоритма подтверждена многочисленными реализациями в различных криптосистемах. лгоритм получил название Tandem DM.
ɒифрование
G0=0; H0=0 ;
FOR J = 1 TO N DO
BEGIN
TMP=EnCrypt(H,[G,PSW
j
]); H'=H XOR TMP;
TMP=EnCrypt(G,[PSW
j
,TMP]); G'=G XOR TMP;
END;
Key=[G
k
,H
k
]
вадратными скобками здесь обозначено простое объединение (склеивание) двух блоков информации равной величины в один ±
удвоенной разрядности. апример X16=[A8,B8]. качестве процедуры EnCrypt(X, Key) опять может быть выбран любой стойкий блочный шифр. ак видно из формул, данный алгоритм ориентирован на то, что длина ключа двукратно превышает размер блока криптоалгоритма. арактерной особенностью схемы является тот факт, что строка пароля считывается блоками по половине длины ключа, и каждый блок используется в создании хеш
-
результата дважды. аким образом, при длине пароля в 20 символов и необходимости создания 128 битного ключа внутренний цикл хеш
-
функции повторится 3 раза.
ɒифрование
Автор
chelener
Документ
Категория
Презентации по информатике
Просмотров
1 006
Размер файла
120 Кб
Теги
шифрование
1/--страниц
Пожаловаться на содержимое документа