Системы криптографии, которые мы изучали до сих пор, обеспечивают тайну (секретность) или конфиденциальность, но не целостность. Однако есть случаи, где нам не нужна секретность, но зато необходима целостность (неизменность). Например, Алиса может написать завещание, чтобы распределить свое состояние после ее смерти. Завещание может не быть зашифрованным. После ее смерти любой может посмотреть это завещание. Целостность завещания, однако, должна быть сохранена, ибо Алиса не хочет, чтобы изменяли содержание завещания.
Одним из способов сохранить целостность документа мог бы стать способ с помощью отпечатков пальцев. Если Алисе надо быть уверенной, что содержание ее документа не будет изменено, она может поместить отпечаток пальца внизу документа. Ева не может изменить содержание документа или создать ложный документ, потому что она не может подделать отпечаток пальца Алисы. Чтобы гарантировать, что документ не был изменен, отпечаток пальца Алисы на документе можно сравнить с отпечатком пальца Алисы в особом файле. Если они не совпадают, то документ - не от Алисы.
Электронный эквивалент и пары "отпечаток пальца - документ" - это пара сообщение-дайджест. Чтобы сохранить целостность сообщения, оно обрабатывается алгоритмом, называемым
(рис 1.1) Сообщение и дайджест
Эти две пары (документ / отпечаток пальца), и (
Чтобы проверить целостность сообщения или документа, мы создаем криптографическую хэш-функцию и сравниваем новый
(рис 1.2) Проверка целостности
(рис 1.3) Критерии криптографической функцииКриптографическая функция должна быть устойчива к прообразу. Если дана хэш-функция h и y = h(M), то для Евы должно быть экстремально трудно найти сообщение, такое, что y = h(M'). рис. 1.4 иллюстрирует эту идею.
(рис 1.4) ПрообразЕсли хэш-функция - неустойчивый прообраз, Ева может перехватить дайджест h(M), создать сообщение M' и затем передать M' Бобу вместо исходного М.
Атака прообраза
Дано:y = h (M) Найти: такое М', что y = h (M').Пример 1.1
Можем ли мы использовать обычный метод сжатия без потерь, такой, например, как zip, в
Решение
Не можем. Метод сжатия без потерь создает сжатое сообщение, которое должно быть обратимо. Вы можете обработать сжатое сообщение, чтобы получить первоначальный текст.
Пример 1.2
Можем ли мы использовать функцию контрольной суммы как криптографическую хэш-функцию?
Решение
Не можем. Функция контрольной суммы - не стойкий прообраз. Ева может найти несколько сообщений, контрольная сумма которых соответствует данной.
Устойчивость ко второму прообразу
Второй критерий,
(рис 1.5) Второй прообразЕва перехватывает (имеет доступ к) сообщение М и его дайджест h(M). Она создает другое сообщение М.' М., но h (M) = h(M'). Ева передает М.' и h (M') Бобу. Ева подделала сообщение.
Атака второго прообраза
Дана Атака: М и h (M) Найти: такое M' = М, что h (M) = h (M').
Устойчивость к коллизиям
Третий критерий,
(рис 1.6) Устойчивость к коллизиям
Пример 1.3
Возьмем модель Oracle с таблицей и правильной монетой. Таблица имеет два столбца. Левый столбец - сообщения, дайджесты которых были выработаны. Второй столбец перечисляет дайджесты, созданные для этих сообщений. Примем, что дайджест - всегда 16 битов независимо от размера сообщения. табл. 1.1 показывает пример такой таблицы, в которой сообщение и
| Сообщение | |
|---|---|
4523AB1352CDEF45126 |
13AB |
723BAE38F2AB3457AC |
02CA |
AB45CD1048765412AAAB6662BE |
A38B |
Теперь предположим, что возникают два события:
AB1234CDS765BDAD для вычисления дайджеста. Oracle проверяет свою таблицу. Этого сообщения нет в таблице, так что сотрудник, использующий Oracle, подбрасывает в воздух свою монету 16 раз.
Предположим, что результат - ООРОООРРОРООРРРО, в котором буква О представляет " Орел ",
буква Р представляет " Решка ".
Oracle интерпретирует О как 1 бит и Р как бит 0 и выдает 1101 1100101 10001 в двоичном коде либо DCB1 в шестнадцатеричном, как | Сообщение | |
|---|---|
4523AB1352CDEF45126 |
13AB |
723BAE38F2AB3457AC |
02CA |
AB1234CD8765BDAD |
DCB1 |
AB45CD1048765412AAAB6662BE |
A38B |
4523AB 1352CDEF45126 дается для вычисления дайджеста. Oracle проверяет свою таблицу и находит, что есть дайджест для этого сообщения в таблице (первая строка). Oracle просто выдает соответствующий дайджест ( 13AB ).Пример 1.4
Oracle в Примере 1.3. не может использовать формулу или алгоритм, чтобы создать дайджест для сообщения.
Например, вообразим, что Oracle использует формулу h (M) = М mod n. Теперь предположим, что Oracle уже выдал h (М1) и h (М2). Если новое сообщение представлено как М3 = M1 + М2 , Oracle не должен вычислить h (М3). Новый дайджест - только [h (M1) + h (M2)] mod n, поскольку:
(M3) = (M1 + M2) mod n = M1 mod n + M2 mod n = [h(M1) + h(M2)] mod n
Это нарушает третье требование: каждый дайджест должен быть выбран беспорядочно на основе сообщения, данного Oracle.
Первое понятие, с которым мы должны быть знакомы для того, чтобы понять анализ случайной Модели Oracle, - n ящиков заняты n + 1 голубями, то по крайней мере один ящик занят двумя голубями. Обобщенная версия принципа голубиных ящиков: если ящиков n заняты kn +1 голубями, то по крайней мере один ящик занят k + 1 голубем.
Поскольку основная идея хэширования диктует, что дайджест должен быть короче, чем сообщение, согласно принципу голубиных ящиков могут быть конфликты. Другими словами, есть некоторые дайджесты, которые соответствуют больше чем одному сообщению; отношения между возможными сообщениями и возможными дайджестами - "много к одному".
Пример 1.5
Предположим, что сообщения в хэш-функции длиной 6 битов, дайджесты только длиной 4 бита. Тогда возможное число дайджестов (ящики) - от 24 = 16 и возможное число сообщений (голуби) - 26 = 64. Это означает n = 16 и kn + 1 = 64, так что k больше, чем 3. Это говорит о том, что по крайней мере один дайджест соответствует четырем ( k + 1 ) сообщениям.
Второе понятие, которое мы должны знать перед анализом случайной модели Oracle, известно как
(рис 1.7) Четыре проблемы дня рожденияОписание проблем
Ниже приводятся
Проблема 1. Каково минимальное число k студентов в классной комнате, такое, что с некоторой вероятностью по крайней мере один студент имеет заранее заданный день рождения? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную с N возможными значениями (между 0 и N - 1 ). Каково минимальное число экземпляров, таких, что с некоторой вероятностью по крайней мере один экземпляр равен заранее заданному значению?
Проблема 2. Каково минимальное число k студентов в классной комнате, такое, что с некоторой вероятностью по крайней мере один студент имеет тот же самый день рождения, как и студент, выбранный профессором? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную с N возможными значениями (между 0 и N - 1 ) Какое минимальное число экземпляров, k, таких, что с некоторой вероятностью по крайней мере один экземпляр является равным выбранному?
Проблема 3. Каково минимальное число k студентов в классной комнате, такое, что с заданной вероятностью по крайней мере два студента имеют тот же самый день рождения? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную с N возможными значениями (между 0 и N - 1 ). Каково минимальное число экземпляров k, таких, что с некоторой вероятностью по крайней мере два экземпляра равны?
Проблема 4. Мы имеем два класса, каждый с k студентами. Каково минимальное значение A, такое, чтобы по крайней мере один студент из первой классной комнаты с некоторой вероятностью имел тот же самый день рождения, что и студент из второй классной комнаты? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную N со значениями (между 0 и N - 1 ).
Мы генерируем два множества случайных значений, каждое величиной k. Каково минимальное число k, такое, что с некоторой вероятностью по крайней мере один экземпляр первого множества равен одному образцу во втором множестве?
Результаты решений
Для заинтересованных читателей решения этих проблем даются в приложении E. Результаты приведены в табл. 1.3.
| Проблема | Вероятность | Общее значение для k
| Значение k при P = 1/2
| Число студентов ( N=365 )
|
|---|---|---|---|---|
| 1 | P =l - e-k/N |
k = ln[1/(1-P) xN |
k = 0,69 x N |
253 |
| 2 | P =l - e-(k-1)N |
k = ln[1/(1-P) xN + 1 |
k = 0,69 x N |
254 |
| 3 | P= 1 - ek(k-1)/2N |
k = {2 ln [1/1-P]}1/2 xN1/2 |
k= 1,18 xN1/2 |
23 |
| 4 | P =1- e- k^2/2N |
k = {ln [1/1-P]}1/2 x N1/2 |
k=0,83 x N1/2 |
16 |
Затемненное значение, 23, является решением классического парадокса дня рождения; если есть 23 студента в классной комнате, то с некоторой вероятностью (с P > 1/2 ) два студента имеют одинаковый день рождения (игнорируя год их рождения).
Сравнение проблем
Значение k в проблемах 1 или 2 пропорционально N ; значение k в проблемах 3 или 4 является пропорциональным N1/2. Как мы увидим коротко, первые две проблемы связаны с атаками прообраза и второго прообраза; третья и четвертая проблемы связаны с атакой коллизии. Сравнение показывает, что намного более трудно начать атаку прообраза или атаку второго прообраза, чем атаку коллизии. рис. 1.8 дает граф P при различных k. Для первой и второй проблем показан один граф (значения вероятностей - очень близки). Графы для второй и третьей проблем отличаются сильнее.
(рис 1.8) Граф четырех проблем дня рождения
Чтобы лучше понимать характер хэш-функций и важность случайной модели Oracle, рассмотрим, как Ева может атаковать хэш-функцию, созданную Oracle. Предположим, что хэш-функция создает дайджесты n битов. Тогда дайджест можно представить как случайную переменную, однородно распределенную между 0 и N - 1, в которой N = 2n.Другими словами, есть возможные 2n значений для дайджеста; каждый раз Oracle случайно выбирает одно из этих значений для сообщения. Обратите внимание: это не означает, что выбор является исчерпывающим. Некоторые значения могут никогда не выбираться, но некоторые могут быть выбраны несколько раз. Мы принимаем, что алгоритм хэш-функции общедоступен и Ева знает размер дайджеста n.
Атака прообраза
Ева перехватила дайджест D = h (M) ; она хочет найти любое сообщение М', такое, что D = h (М'). Ева может создать список k сообщений и выполнить алгоритм 1.1.
Алгоритм может найти сообщение, для которого D является дайджестом, или может потерпеть неудачу. Какова вероятность успеха этого алгоритма? Очевидно, это зависит от размера списка, k, выбранного Евой. Чтобы найти вероятность, мы используем первую P == 1 - e-k/N.
Алгоритм 1.1 Атака на прообраз
Preimage_Attack (D)
{
for (i =1 to k)
{
создать (M[i])
T <- h(M [i ]) // T - временный дайджест
if (T = D) return M[i]
}
return failure
{
Какой должен быть размер k, если Ева должна достигнуть успеха по крайней мере в 50 процентах случаев? Мы показали это значение в табл. 1.3. Для первой 2n.
Пример 1.6
Решение
Число дайджестов, которые будут созданы, - $$k \approx 0,69 x 2^{n} = 0,69 \times 2^{64}$$. Это большое значение. Даже если Ева сможет генерировать 230 (почти один миллиард) сообщений в секунду, требуется 0,69 x 234 секунды или больше чем 500 лет. Это означает, что
Атака второго прообраза
Ева перехватила дайджест D = h (M) и соответствующее сообщение М.; она хочет найти другое сообщение M', такое, чтобы h(M') = D. Ева может создать список из k - 1 сообщения и выполнить Алгоритм 1.2.
Алгоритм 1.2. Атака второго прообраза
Second_Preimage_Attack (D, M)
{
for (i = 1 to k - 1)
{
создать (M[i]
T <- h (M[i])
If (T = D) return M[i] // T - временный дайджест
}
return failure
}
Алгоритм может найти второе сообщение, для которого D является также дайджестом, или может потерпеть неудачу. Какова вероятность успеха этого алгоритма? Очевидно, это зависит от размера списка, k, выбранного Евой. Чтобы найти вероятность положительного исхода алгоритма, мы используем вторую P = 1 -e1-(k-1)/N. Какой должен быть размер k, если Ева хочет достичь успеха по крайней мере в 50 процентах случаев? Мы уже указали это значение в табл. 1.3 для второй 2n.
2n.Атака коллизии
Ева должна найти два сообщения, М. и М.', такие, что h (M) = h (М.'). Она может создать список сообщений и выполнить алгоритм 1.3.
Алгоритм 1.3. Атака коллизии
Collision_Attack
{
for (i = 1 to k)
{
создать (M[i])
D[i] <- h (M[i]) // D[i] - список создаваемых дайджестов
for (j = 1 to i - 1)
{
if (D[i] = D[j] return (M[i] и M[j] )
}
}
return failure
}
Алгоритм может найти два сообщения с одним и тем же дайджестом. Какова вероятность успеха этого алгоритма? Очевидно, это зависит от размера списка, k, выбранного Евой. Чтобы найти вероятность этого события, мы используем третью P = 1 - e1-(k-1)/2N. Какой должен быть размер k, если Ева хочет достичь успеха по крайней мере в 50 процентах случаев? Мы уже указали это значение в табл. 1.3 для третьей 2n/2.
2n/2.Пример 1.7
Решение
Число дайджестов, которые будут созданы, $$k \approx 1,18 \times 2^{n/2.} \approx 1,18 \times 2^{32}$$. Если Ева может проверить 220 (почти один миллион) сообщений в секунду, потребуется 1,18 x 212 секунд, или меньше чем два часа. Это означает, что
Дополнительная атака коллизии
Предыдущая атака коллизии не может быть полезна для Евы - ей приходится создать два сообщения, одно реальное и одно фиктивное, которые имеют одно и то же значение хэш-функции. Каждое сообщение должно быть значащим. Предыдущий алгоритм не обеспечивает устойчивость коллизии, решение состоит в том, чтобы создать два значащих сообщения, но добавить избыточность к сообщению или модифицировать сообщение, чтобы изменить содержание слова, или прибавлять некоторые избыточные слова, и так далее, в сообщение, не изменяя значение его хэша. Например, множество сообщений может быть создано из первого сообщения - добавлением пробелов или изменением слова, когда некоторые слова дополняются окончаниями.
Второе сообщение может также создать множество сообщений. Если обозначить первоначальное сообщение М, а фиктивное сообщение - М', Ева создает k различных вариантов М (M1, M2 ,... , Mk) и k различных вариантов М' (M'1, M'2 ,... , M'k). Затем Ева использует алгоритм 1.4 для того, чтобы начать атаку.
Алгоритм 1.4. Дополнительная атака коллизии
Alternate_Collision _Attack (M[k], M'[k])
{
for (i = 1 to k)
{
D[i] <- h ([M[i])
D'[i] <- h [M'[i])
if (D[i] = D'[j] return (M[i], M'[j])
}
return failure
]
Какова вероятность успеха этого алгоритма? Очевидно, это зависит размера списка k, выбранного Евой. Чтобы найти вероятность, мы используем четвертую k, если Ева хочет достичь успеха по крайней мере в 50 процентах случаев? Мы уже указали это значение в таблице для четвертой 2n/2.
2n/2.Итоги атак
Таблица 1.4 показывает уровень сложности для каждой атаки, если дайджест имеет длину n бит.
| Атака | Значение при P =1/2 |
Порядок верхнего предела |
|---|---|---|
| Прообраз | $$k \approx 0.69 \times 2^{2n+1}$$ | 2n |
| Второй прообраз | $$k \approx 0.69 \times 2^{2n+1}$$ | 2n |
| Коллизия | $$k \approx 1,18 \times 2^{n/2}$$ | 2n/2. |
| Дополнительная коллизия | $$k \approx 0.83 \times 2^{n/2}$$ | 2n/2 |
Таблица 1.4 показывает, что порядок или сложность атаки для атаки коллизии является намного меньшим, чем для прообраза или атак второго прообраза. Если алгоритм хэша является стойким к атакам коллизии, мы можем не волноваться о безопасности атак прообраза и атак второго прообраза.
Пример 1.8
Первоначально хэш-функции с дайджестом на 64 бита, как полагали, были стойкими к атакам коллизии. Но с увеличением скорости обработки сегодня все обнаружили, что эти хэш-функции больше не безопасны. Ева нуждается только в 264/2 = 232 испытаний, чтобы начать атаку с вероятностью 1/2 или больше. Предположим, что она может выполнить 220 (один миллион) испытаний в секунду. Она может провести атаку за 232 / 220 = 212 секунд (почти час!).
Пример 1.9
MD5 (см. лекцию 2), который был одной из стандартных хэш-функций в течение долгого времени, создает дайджесты в 128 битов. Чтобы провести атаку коллизии, противник должен провести 264 (2128/2) испытаний алгоритма коллизии. Даже если противник может выполнить 230 (больше чем один миллиард) испытаний в секунду, требуется 234 секунды (больше чем 500 лет), чтобы провести атаку. Этот тип атаки базируется на случайной модели Oracle. Было доказано, что MD5 может быть атакован за менее чем 264 испытаний - из-за структуры алгоритма.
Пример 1.10
SHA-1 (см. лекцию 2), стандартная хэш-функция, разработанная NIST, создает дайджесты в 160 битов. Чтобы провести атаку коллизии, противник должен исполнить 2160/2 = 280 испытания в алгоритме коллизии. Даже если противник может выполнить 230 (больше чем один миллиард) испытаний в секунду, требуется 250 секунд (больше чем десять тысяч лет), чтобы начать атаку. Однако исследователи обнаружили некоторые особенности функции, которые позволяют провести атаку на эту хэш-функцию за меньшее время, чем вычисленное выше.
Пример 1.11
Новая хэш-функция, которая, вероятно, станет NIST-стандартом, - 2512/2 до 2256 испытаний, чтобы найти коллизию с вероятностью 1/2.
Все обсуждения, связанные с атаками хэш-функций, базировались на идеальной
Невозможно найти хэш-функцию, которая создает дайджесты, чтобы она делала их полностью случайными. Противник может иметь другие инструментальные средства для того, чтобы атаковать хэш-функцию. Одно из этих инструментальных средств, например, атака сведения к середине, которая обсуждалась в предыдущем курсе для двукратного DES. Мы увидим в следующих лекциях, что некоторые хэш-алгоритмы поддаются этому типу атаки. Эти типы хэш-функции далеки от
(рис 1.9) Код обнаружения модификации
Если сообщение и
Алиса пишет свое завещание и объявляет это публично (ненадежный канал). Алиса делает
Чтобы гарантировать целостность сообщения, подлинность первоначального сообщения и то, что создатель сообщения - Алиса, а не кто-то другой, мы должны изменить
(рис 1.10) Код установления подлинности сообщенияАлиса использует хэш-функцию, чтобы создать h (K|M). Она передает сообщение и
Обратите внимание, что в этом случае нет необходимости использовать два канала. И сообщение, и
Безопасность MAC
Предположим, что Ева перехватила сообщение М и дайджест h (K|M). Как Ева может подделать сообщение, не зная ключа засекречивания? Есть три возможных случая.
K|M ), чтобы найти, что этот дайджест равняется перехваченному. Она уже знает ключ и может успешно заменить сообщение подделанным сообщением по своему выбору.X, такой, что h (X) равен Вложенный MAC
Чтобы улучшить безопасность
(рис 1.11) Вложенный MACКод аутентификации сообщения, основанный на хэшировании (HMAC)
Национальный институт стандартов США (NIST) разработал стандарт (FIPS 198) для
(рис 1.12) Детали HMACN блоков, каждый по b битов.b бит. Обратите внимание: рекомендуется, чтобы ключ засекречивания, прежде чем он будет дополнен, был длиною более чем n бит, где n - размер HMAC.ipad ( b бит. Значение ipad - b/8 - состоит из повторяемой последовательности 00110110 (36 в шестнадцатеричном исчислении).N -блоков. В результате получим N + 1 блоков.n -битов. Мы называем этот дайджест промежуточным HMAC.n -битовый HMAC дополняют слева нулями, чтобы создать b -битовый блок.opad ( opad - b/8 - состоит из повторяемой последовательности 01011100 ( 5C в шестнадцатеричном исчислении).n -разрядный HMAC.CMAC
Национальный институт стандартов и технологии США (NIST) разработал стандарт (FIPS113), названный Алгоритмом установления подлинности данных или кодом аутентификации сообщения, основанный на шифровании базового сообщения -
(рис 1.13) CMACОднако смысл здесь состоит не в том, чтобы создавать N блоков зашифрованного текста из N блоков исходного текста. Идея в том, чтобы создать один блок N блоков исходного текста, используя N раз шифрование с симметричным ключом.
Сообщение разделено на N блоков, каждый длины m бит. Размер n бит. Если последний блок - не m бит, он дополняется единичным битом ( 1 ), сопровождаемым достаточным количеством нулей (0), чтобы сделать его m -битовым. Первый блок сообщения зашифрован симметричным ключом, чтобы создать m -разрядный блок зашифрованных данных. Этот блок складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) со следующим блоком, а результат зашифровывается снова, чтобы создать новый m- битовый блок. Процесс продолжается, пока не будет зашифрован последний блок сообщения. n крайних левых бит последнего блока. В дополнение к симметрическому ключу, K, k, который применяется только на последнем шаге. Этот ключ получен с помощью алгоритма шифрования исходного текста, дополненного m нулевыми битами, и использованием шифро-ключа, K. Результат затем умножен на x, если
нет никакого дополнения, или на x2, если дополнение есть. Умножение проводится в GF(2m) с неприводимым полиномом степени m, выбранным в соответствии с используемым конкретным протоколом.
Обратите внимание, что эта процедура отличается от
Для более детального изучения положений, обсужденных в этой лекции, мы рекомендуем нижеследующие книги и сайты. Пункты, указанные в скобках, показаны в списке ссылок в конце книги.
Книги
[Sti06],
[Sta06],
[Sch99],
[Mao04],
[KPS02],
[PHS03L] и
[MOV97]
дают хороший обзор
Нижеследующие сайты содержат больше информации о темах, рассмотренных в этой лекции.
n ящиков заняты n + 1 голубем, то по крайней мере один ящик занят двумя голубями. Обобщенная версия принципа голубиных ящиков: если n ящики заняты kn + 1 голубем, по крайней мере один ящик занят k + 1 голубем.Предположим также, что год состоит точно из 365 дней и каждый месяц - точно из 30 дней.
Какова вероятность, что ни один из них не имеет совпадающего дня рождения?
k студентами и другого с l студентами?A, B, C, D, E ) по результатам теста. Покажите, что по крайней мере одна группа будет содержать не менее 20 студентов.n битам.n - битовое число p.m битам.N блоков, каждый по m бит. Обозначим каждый i -тый блок Xi.N битов, H0.N раз следующие действия:Hi = (Hi-1 + Xi)2 mod p
HN.Какое значение будет иметь дайджест, если сообщение - " HELLO "? Почему этот дайджест не безопасен?
N бит.p и q.
Вычислите M = pq.N/2. N выбран как число, кратное 16, меньшее, чем число битов в M.m блоков, каждый по N/2 битов. Обозначим каждый блок Xi.N/2 как двоичное число к сообщению. Это создаст сообщение длиной m+1 блоков по N/2 битов.m + 1 блок, каждый по N битов, как показано ниже.Разделите блоки X1 до Xm на группы по 4 бита. Вставьте 1111 перед каждой группой.
Разделите блок Xm+1 на группы по 4 бита. Вставьте 1010 перед каждой группой.
Назовем расширенные блоки Y1, Y2..., Ym+1.
N битов, H0.K из N битов.m+1 раз следующие действия ( Ti и Gi - промежуточные значения). Символ || обозначает конкатенацию.Ti = ((Hi+1, + Yi,) || K)257 mod M. Gi = Hi mod 2N Hi = Hi+1 +Gi;
Hm+1 .Системы криптографии, которые мы изучали до сих пор, обеспечивают тайну (секретность) или конфиденциальность, но не целостность. Однако есть случаи, где нам не нужна секретность, но зато необходима целостность (неизменность). Например, Алиса может написать завещание, чтобы распределить свое состояние после ее смерти. Завещание может не быть зашифрованным. После ее смерти любой может посмотреть это завещание. Целостность завещания, однако, должна быть сохранена, ибо Алиса не хочет, чтобы изменяли содержание завещания.
Одним из способов сохранить целостность документа мог бы стать способ с помощью отпечатков пальцев. Если Алисе надо быть уверенной, что содержание ее документа не будет изменено, она может поместить отпечаток пальца внизу документа. Ева не может изменить содержание документа или создать ложный документ, потому что она не может подделать отпечаток пальца Алисы. Чтобы гарантировать, что документ не был изменен, отпечаток пальца Алисы на документе можно сравнить с отпечатком пальца Алисы в особом файле. Если они не совпадают, то документ - не от Алисы.
Электронный эквивалент и пары "отпечаток пальца - документ" - это пара сообщение-дайджест. Чтобы сохранить целостность сообщения, оно обрабатывается алгоритмом, называемым
(рис 1.1) Сообщение и дайджест
Эти две пары (документ / отпечаток пальца), и (
Чтобы проверить целостность сообщения или документа, мы создаем криптографическую хэш-функцию и сравниваем новый
(рис 1.2) Проверка целостности
(рис 1.3) Критерии криптографической функцииКриптографическая функция должна быть устойчива к прообразу. Если дана хэш-функция h и y = h(M), то для Евы должно быть экстремально трудно найти сообщение, такое, что y = h(M'). рис. 1.4 иллюстрирует эту идею.
(рис 1.4) ПрообразЕсли хэш-функция - неустойчивый прообраз, Ева может перехватить дайджест h(M), создать сообщение M' и затем передать M' Бобу вместо исходного М.
Атака прообраза
Дано:y = h (M) Найти: такое М', что y = h (M').Пример 1.1
Можем ли мы использовать обычный метод сжатия без потерь, такой, например, как zip, в
Решение
Не можем. Метод сжатия без потерь создает сжатое сообщение, которое должно быть обратимо. Вы можете обработать сжатое сообщение, чтобы получить первоначальный текст.
Пример 1.2
Можем ли мы использовать функцию контрольной суммы как криптографическую хэш-функцию?
Решение
Не можем. Функция контрольной суммы - не стойкий прообраз. Ева может найти несколько сообщений, контрольная сумма которых соответствует данной.
Устойчивость ко второму прообразу
Второй критерий,
(рис 1.5) Второй прообразЕва перехватывает (имеет доступ к) сообщение М и его дайджест h(M). Она создает другое сообщение М.' М., но h (M) = h(M'). Ева передает М.' и h (M') Бобу. Ева подделала сообщение.
Атака второго прообраза
Дана Атака: М и h (M) Найти: такое M' = М, что h (M) = h (M').
Устойчивость к коллизиям
Третий критерий,
(рис 1.6) Устойчивость к коллизиям
Пример 1.3
Возьмем модель Oracle с таблицей и правильной монетой. Таблица имеет два столбца. Левый столбец - сообщения, дайджесты которых были выработаны. Второй столбец перечисляет дайджесты, созданные для этих сообщений. Примем, что дайджест - всегда 16 битов независимо от размера сообщения. табл. 1.1 показывает пример такой таблицы, в которой сообщение и
| Сообщение | |
|---|---|
4523AB1352CDEF45126 |
13AB |
723BAE38F2AB3457AC |
02CA |
AB45CD1048765412AAAB6662BE |
A38B |
Теперь предположим, что возникают два события:
AB1234CDS765BDAD для вычисления дайджеста. Oracle проверяет свою таблицу. Этого сообщения нет в таблице, так что сотрудник, использующий Oracle, подбрасывает в воздух свою монету 16 раз.
Предположим, что результат - ООРОООРРОРООРРРО, в котором буква О представляет " Орел ",
буква Р представляет " Решка ".
Oracle интерпретирует О как 1 бит и Р как бит 0 и выдает 1101 1100101 10001 в двоичном коде либо DCB1 в шестнадцатеричном, как | Сообщение | |
|---|---|
4523AB1352CDEF45126 |
13AB |
723BAE38F2AB3457AC |
02CA |
AB1234CD8765BDAD |
DCB1 |
AB45CD1048765412AAAB6662BE |
A38B |
4523AB 1352CDEF45126 дается для вычисления дайджеста. Oracle проверяет свою таблицу и находит, что есть дайджест для этого сообщения в таблице (первая строка). Oracle просто выдает соответствующий дайджест ( 13AB ).Пример 1.4
Oracle в Примере 1.3. не может использовать формулу или алгоритм, чтобы создать дайджест для сообщения.
Например, вообразим, что Oracle использует формулу h (M) = М mod n. Теперь предположим, что Oracle уже выдал h (М1) и h (М2). Если новое сообщение представлено как М3 = M1 + М2 , Oracle не должен вычислить h (М3). Новый дайджест - только [h (M1) + h (M2)] mod n, поскольку:
(M3) = (M1 + M2) mod n = M1 mod n + M2 mod n = [h(M1) + h(M2)] mod n
Это нарушает третье требование: каждый дайджест должен быть выбран беспорядочно на основе сообщения, данного Oracle.
Первое понятие, с которым мы должны быть знакомы для того, чтобы понять анализ случайной Модели Oracle, - n ящиков заняты n + 1 голубями, то по крайней мере один ящик занят двумя голубями. Обобщенная версия принципа голубиных ящиков: если ящиков n заняты kn +1 голубями, то по крайней мере один ящик занят k + 1 голубем.
Поскольку основная идея хэширования диктует, что дайджест должен быть короче, чем сообщение, согласно принципу голубиных ящиков могут быть конфликты. Другими словами, есть некоторые дайджесты, которые соответствуют больше чем одному сообщению; отношения между возможными сообщениями и возможными дайджестами - "много к одному".
Пример 1.5
Предположим, что сообщения в хэш-функции длиной 6 битов, дайджесты только длиной 4 бита. Тогда возможное число дайджестов (ящики) - от 24 = 16 и возможное число сообщений (голуби) - 26 = 64. Это означает n = 16 и kn + 1 = 64, так что k больше, чем 3. Это говорит о том, что по крайней мере один дайджест соответствует четырем ( k + 1 ) сообщениям.
Второе понятие, которое мы должны знать перед анализом случайной модели Oracle, известно как
(рис 1.7) Четыре проблемы дня рожденияОписание проблем
Ниже приводятся
Проблема 1. Каково минимальное число k студентов в классной комнате, такое, что с некоторой вероятностью по крайней мере один студент имеет заранее заданный день рождения? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную с N возможными значениями (между 0 и N - 1 ). Каково минимальное число экземпляров, таких, что с некоторой вероятностью по крайней мере один экземпляр равен заранее заданному значению?
Проблема 2. Каково минимальное число k студентов в классной комнате, такое, что с некоторой вероятностью по крайней мере один студент имеет тот же самый день рождения, как и студент, выбранный профессором? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную с N возможными значениями (между 0 и N - 1 ) Какое минимальное число экземпляров, k, таких, что с некоторой вероятностью по крайней мере один экземпляр является равным выбранному?
Проблема 3. Каково минимальное число k студентов в классной комнате, такое, что с заданной вероятностью по крайней мере два студента имеют тот же самый день рождения? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную с N возможными значениями (между 0 и N - 1 ). Каково минимальное число экземпляров k, таких, что с некоторой вероятностью по крайней мере два экземпляра равны?
Проблема 4. Мы имеем два класса, каждый с k студентами. Каково минимальное значение A, такое, чтобы по крайней мере один студент из первой классной комнаты с некоторой вероятностью имел тот же самый день рождения, что и студент из второй классной комнаты? Эта проблема может быть обобщена следующим образом. Мы имеем однородно распределенную случайную переменную N со значениями (между 0 и N - 1 ).
Мы генерируем два множества случайных значений, каждое величиной k. Каково минимальное число k, такое, что с некоторой вероятностью по крайней мере один экземпляр первого множества равен одному образцу во втором множестве?
Результаты решений
Для заинтересованных читателей решения этих проблем даются в приложении E. Результаты приведены в табл. 1.3.
| Проблема | Вероятность | Общее значение для k
| Значение k при P = 1/2
| Число студентов ( N=365 )
|
|---|---|---|---|---|
| 1 | P =l - e-k/N |
k = ln[1/(1-P) xN |
k = 0,69 x N |
253 |
| 2 | P =l - e-(k-1)N |
k = ln[1/(1-P) xN + 1 |
k = 0,69 x N |
254 |
| 3 | P= 1 - ek(k-1)/2N |
k = {2 ln [1/1-P]}1/2 xN1/2 |
k= 1,18 xN1/2 |
23 |
| 4 | P =1- e- k^2/2N |
k = {ln [1/1-P]}1/2 x N1/2 |
k=0,83 x N1/2 |
16 |
Затемненное значение, 23, является решением классического парадокса дня рождения; если есть 23 студента в классной комнате, то с некоторой вероятностью (с P > 1/2 ) два студента имеют одинаковый день рождения (игнорируя год их рождения).
Сравнение проблем
Значение k в проблемах 1 или 2 пропорционально N ; значение k в проблемах 3 или 4 является пропорциональным N1/2. Как мы увидим коротко, первые две проблемы связаны с атаками прообраза и второго прообраза; третья и четвертая проблемы связаны с атакой коллизии. Сравнение показывает, что намного более трудно начать атаку прообраза или атаку второго прообраза, чем атаку коллизии. рис. 1.8 дает граф P при различных k. Для первой и второй проблем показан один граф (значения вероятностей - очень близки). Графы для второй и третьей проблем отличаются сильнее.
(рис 1.8) Граф четырех проблем дня рождения
Чтобы лучше понимать характер хэш-функций и важность случайной модели Oracle, рассмотрим, как Ева может атаковать хэш-функцию, созданную Oracle. Предположим, что хэш-функция создает дайджесты n битов. Тогда дайджест можно представить как случайную переменную, однородно распределенную между 0 и N - 1, в которой N = 2n.Другими словами, есть возможные 2n значений для дайджеста; каждый раз Oracle случайно выбирает одно из этих значений для сообщения. Обратите внимание: это не означает, что выбор является исчерпывающим. Некоторые значения могут никогда не выбираться, но некоторые могут быть выбраны несколько раз. Мы принимаем, что алгоритм хэш-функции общедоступен и Ева знает размер дайджеста n.
Атака прообраза
Ева перехватила дайджест D = h (M) ; она хочет найти любое сообщение М', такое, что D = h (М'). Ева может создать список k сообщений и выполнить алгоритм 1.1.
Алгоритм может найти сообщение, для которого D является дайджестом, или может потерпеть неудачу. Какова вероятность успеха этого алгоритма? Очевидно, это зависит от размера списка, k, выбранного Евой. Чтобы найти вероятность, мы используем первую P == 1 - e-k/N.
Алгоритм 1.1 Атака на прообраз
Preimage_Attack (D)
{
for (i =1 to k)
{
создать (M[i])
T <- h(M [i ]) // T - временный дайджест
if (T = D) return M[i]
}
return failure
{
Какой должен быть размер k, если Ева должна достигнуть успеха по крайней мере в 50 процентах случаев? Мы показали это значение в табл. 1.3. Для первой 2n.
Пример 1.6
Решение
Число дайджестов, которые будут созданы, - $$k \approx 0,69 x 2^{n} = 0,69 \times 2^{64}$$. Это большое значение. Даже если Ева сможет генерировать 230 (почти один миллиард) сообщений в секунду, требуется 0,69 x 234 секунды или больше чем 500 лет. Это означает, что
Атака второго прообраза
Ева перехватила дайджест D = h (M) и соответствующее сообщение М.; она хочет найти другое сообщение M', такое, чтобы h(M') = D. Ева может создать список из k - 1 сообщения и выполнить Алгоритм 1.2.
Алгоритм 1.2. Атака второго прообраза
Second_Preimage_Attack (D, M)
{
for (i = 1 to k - 1)
{
создать (M[i]
T <- h (M[i])
If (T = D) return M[i] // T - временный дайджест
}
return failure
}
Алгоритм может найти второе сообщение, для которого D является также дайджестом, или может потерпеть неудачу. Какова вероятность успеха этого алгоритма? Очевидно, это зависит от размера списка, k, выбранного Евой. Чтобы найти вероятность положительного исхода алгоритма, мы используем вторую P = 1 -e1-(k-1)/N. Какой должен быть размер k, если Ева хочет достичь успеха по крайней мере в 50 процентах случаев? Мы уже указали это значение в табл. 1.3 для второй 2n.
2n.Атака коллизии
Ева должна найти два сообщения, М. и М.', такие, что h (M) = h (М.'). Она может создать список сообщений и выполнить алгоритм 1.3.
Алгоритм 1.3. Атака коллизии
Collision_Attack
{
for (i = 1 to k)
{
создать (M[i])
D[i] <- h (M[i]) // D[i] - список создаваемых дайджестов
for (j = 1 to i - 1)
{
if (D[i] = D[j] return (M[i] и M[j] )
}
}
return failure
}
Алгоритм может найти два сообщения с одним и тем же дайджестом. Какова вероятность успеха этого алгоритма? Очевидно, это зависит от размера списка, k, выбранного Евой. Чтобы найти вероятность этого события, мы используем третью P = 1 - e1-(k-1)/2N. Какой должен быть размер k, если Ева хочет достичь успеха по крайней мере в 50 процентах случаев? Мы уже указали это значение в табл. 1.3 для третьей 2n/2.
2n/2.Пример 1.7
Решение
Число дайджестов, которые будут созданы, $$k \approx 1,18 \times 2^{n/2.} \approx 1,18 \times 2^{32}$$. Если Ева может проверить 220 (почти один миллион) сообщений в секунду, потребуется 1,18 x 212 секунд, или меньше чем два часа. Это означает, что
Дополнительная атака коллизии
Предыдущая атака коллизии не может быть полезна для Евы - ей приходится создать два сообщения, одно реальное и одно фиктивное, которые имеют одно и то же значение хэш-функции. Каждое сообщение должно быть значащим. Предыдущий алгоритм не обеспечивает устойчивость коллизии, решение состоит в том, чтобы создать два значащих сообщения, но добавить избыточность к сообщению или модифицировать сообщение, чтобы изменить содержание слова, или прибавлять некоторые избыточные слова, и так далее, в сообщение, не изменяя значение его хэша. Например, множество сообщений может быть создано из первого сообщения - добавлением пробелов или изменением слова, когда некоторые слова дополняются окончаниями.
Второе сообщение может также создать множество сообщений. Если обозначить первоначальное сообщение М, а фиктивное сообщение - М', Ева создает k различных вариантов М (M1, M2 ,... , Mk) и k различных вариантов М' (M'1, M'2 ,... , M'k). Затем Ева использует алгоритм 1.4 для того, чтобы начать атаку.
Алгоритм 1.4. Дополнительная атака коллизии
Alternate_Collision _Attack (M[k], M'[k])
{
for (i = 1 to k)
{
D[i] <- h ([M[i])
D'[i] <- h [M'[i])
if (D[i] = D'[j] return (M[i], M'[j])
}
return failure
]
Какова вероятность успеха этого алгоритма? Очевидно, это зависит размера списка k, выбранного Евой. Чтобы найти вероятность, мы используем четвертую k, если Ева хочет достичь успеха по крайней мере в 50 процентах случаев? Мы уже указали это значение в таблице для четвертой 2n/2.
2n/2.Итоги атак
Таблица 1.4 показывает уровень сложности для каждой атаки, если дайджест имеет длину n бит.
| Атака | Значение при P =1/2 |
Порядок верхнего предела |
|---|---|---|
| Прообраз | $$k \approx 0.69 \times 2^{2n+1}$$ | 2n |
| Второй прообраз | $$k \approx 0.69 \times 2^{2n+1}$$ | 2n |
| Коллизия | $$k \approx 1,18 \times 2^{n/2}$$ | 2n/2. |
| Дополнительная коллизия | $$k \approx 0.83 \times 2^{n/2}$$ | 2n/2 |
Таблица 1.4 показывает, что порядок или сложность атаки для атаки коллизии является намного меньшим, чем для прообраза или атак второго прообраза. Если алгоритм хэша является стойким к атакам коллизии, мы можем не волноваться о безопасности атак прообраза и атак второго прообраза.
Пример 1.8
Первоначально хэш-функции с дайджестом на 64 бита, как полагали, были стойкими к атакам коллизии. Но с увеличением скорости обработки сегодня все обнаружили, что эти хэш-функции больше не безопасны. Ева нуждается только в 264/2 = 232 испытаний, чтобы начать атаку с вероятностью 1/2 или больше. Предположим, что она может выполнить 220 (один миллион) испытаний в секунду. Она может провести атаку за 232 / 220 = 212 секунд (почти час!).
Пример 1.9
MD5 (см. лекцию 2), который был одной из стандартных хэш-функций в течение долгого времени, создает дайджесты в 128 битов. Чтобы провести атаку коллизии, противник должен провести 264 (2128/2) испытаний алгоритма коллизии. Даже если противник может выполнить 230 (больше чем один миллиард) испытаний в секунду, требуется 234 секунды (больше чем 500 лет), чтобы провести атаку. Этот тип атаки базируется на случайной модели Oracle. Было доказано, что MD5 может быть атакован за менее чем 264 испытаний - из-за структуры алгоритма.
Пример 1.10
SHA-1 (см. лекцию 2), стандартная хэш-функция, разработанная NIST, создает дайджесты в 160 битов. Чтобы провести атаку коллизии, противник должен исполнить 2160/2 = 280 испытания в алгоритме коллизии. Даже если противник может выполнить 230 (больше чем один миллиард) испытаний в секунду, требуется 250 секунд (больше чем десять тысяч лет), чтобы начать атаку. Однако исследователи обнаружили некоторые особенности функции, которые позволяют провести атаку на эту хэш-функцию за меньшее время, чем вычисленное выше.
Пример 1.11
Новая хэш-функция, которая, вероятно, станет NIST-стандартом, - 2512/2 до 2256 испытаний, чтобы найти коллизию с вероятностью 1/2.
Все обсуждения, связанные с атаками хэш-функций, базировались на идеальной
Невозможно найти хэш-функцию, которая создает дайджесты, чтобы она делала их полностью случайными. Противник может иметь другие инструментальные средства для того, чтобы атаковать хэш-функцию. Одно из этих инструментальных средств, например, атака сведения к середине, которая обсуждалась в предыдущем курсе для двукратного DES. Мы увидим в следующих лекциях, что некоторые хэш-алгоритмы поддаются этому типу атаки. Эти типы хэш-функции далеки от
(рис 1.9) Код обнаружения модификации
Если сообщение и
Алиса пишет свое завещание и объявляет это публично (ненадежный канал). Алиса делает
Чтобы гарантировать целостность сообщения, подлинность первоначального сообщения и то, что создатель сообщения - Алиса, а не кто-то другой, мы должны изменить
(рис 1.10) Код установления подлинности сообщенияАлиса использует хэш-функцию, чтобы создать h (K|M). Она передает сообщение и
Обратите внимание, что в этом случае нет необходимости использовать два канала. И сообщение, и
Безопасность MAC
Предположим, что Ева перехватила сообщение М и дайджест h (K|M). Как Ева может подделать сообщение, не зная ключа засекречивания? Есть три возможных случая.
K|M ), чтобы найти, что этот дайджест равняется перехваченному. Она уже знает ключ и может успешно заменить сообщение подделанным сообщением по своему выбору.X, такой, что h (X) равен Вложенный MAC
Чтобы улучшить безопасность
(рис 1.11) Вложенный MACКод аутентификации сообщения, основанный на хэшировании (HMAC)
Национальный институт стандартов США (NIST) разработал стандарт (FIPS 198) для
(рис 1.12) Детали HMACN блоков, каждый по b битов.b бит. Обратите внимание: рекомендуется, чтобы ключ засекречивания, прежде чем он будет дополнен, был длиною более чем n бит, где n - размер HMAC.ipad ( b бит. Значение ipad - b/8 - состоит из повторяемой последовательности 00110110 (36 в шестнадцатеричном исчислении).N -блоков. В результате получим N + 1 блоков.n -битов. Мы называем этот дайджест промежуточным HMAC.n -битовый HMAC дополняют слева нулями, чтобы создать b -битовый блок.opad ( opad - b/8 - состоит из повторяемой последовательности 01011100 ( 5C в шестнадцатеричном исчислении).n -разрядный HMAC.CMAC
Национальный институт стандартов и технологии США (NIST) разработал стандарт (FIPS113), названный Алгоритмом установления подлинности данных или кодом аутентификации сообщения, основанный на шифровании базового сообщения -
(рис 1.13) CMACОднако смысл здесь состоит не в том, чтобы создавать N блоков зашифрованного текста из N блоков исходного текста. Идея в том, чтобы создать один блок N блоков исходного текста, используя N раз шифрование с симметричным ключом.
Сообщение разделено на N блоков, каждый длины m бит. Размер n бит. Если последний блок - не m бит, он дополняется единичным битом ( 1 ), сопровождаемым достаточным количеством нулей (0), чтобы сделать его m -битовым. Первый блок сообщения зашифрован симметричным ключом, чтобы создать m -разрядный блок зашифрованных данных. Этот блок складывается (ИСКЛЮЧАЮЩЕЕ ИЛИ) со следующим блоком, а результат зашифровывается снова, чтобы создать новый m- битовый блок. Процесс продолжается, пока не будет зашифрован последний блок сообщения. n крайних левых бит последнего блока. В дополнение к симметрическому ключу, K, k, который применяется только на последнем шаге. Этот ключ получен с помощью алгоритма шифрования исходного текста, дополненного m нулевыми битами, и использованием шифро-ключа, K. Результат затем умножен на x, если
нет никакого дополнения, или на x2, если дополнение есть. Умножение проводится в GF(2m) с неприводимым полиномом степени m, выбранным в соответствии с используемым конкретным протоколом.
Обратите внимание, что эта процедура отличается от
Для более детального изучения положений, обсужденных в этой лекции, мы рекомендуем нижеследующие книги и сайты. Пункты, указанные в скобках, показаны в списке ссылок в конце книги.
Книги
[Sti06],
[Sta06],
[Sch99],
[Mao04],
[KPS02],
[PHS03L] и
[MOV97]
дают хороший обзор
Нижеследующие сайты содержат больше информации о темах, рассмотренных в этой лекции.
n ящиков заняты n + 1 голубем, то по крайней мере один ящик занят двумя голубями. Обобщенная версия принципа голубиных ящиков: если n ящики заняты kn + 1 голубем, по крайней мере один ящик занят k + 1 голубем.Предположим также, что год состоит точно из 365 дней и каждый месяц - точно из 30 дней.
Какова вероятность, что ни один из них не имеет совпадающего дня рождения?
k студентами и другого с l студентами?A, B, C, D, E ) по результатам теста. Покажите, что по крайней мере одна группа будет содержать не менее 20 студентов.n битам.n - битовое число p.m битам.N блоков, каждый по m бит. Обозначим каждый i -тый блок Xi.N битов, H0.N раз следующие действия:Hi = (Hi-1 + Xi)2 mod p
HN.Какое значение будет иметь дайджест, если сообщение - " HELLO "? Почему этот дайджест не безопасен?
N бит.p и q.
Вычислите M = pq.N/2. N выбран как число, кратное 16, меньшее, чем число битов в M.m блоков, каждый по N/2 битов. Обозначим каждый блок Xi.N/2 как двоичное число к сообщению. Это создаст сообщение длиной m+1 блоков по N/2 битов.m + 1 блок, каждый по N битов, как показано ниже.Разделите блоки X1 до Xm на группы по 4 бита. Вставьте 1111 перед каждой группой.
Разделите блок Xm+1 на группы по 4 бита. Вставьте 1010 перед каждой группой.
Назовем расширенные блоки Y1, Y2..., Ym+1.
N битов, H0.K из N битов.m+1 раз следующие действия ( Ti и Gi - промежуточные значения). Символ || обозначает конкатенацию.Ti = ((Hi+1, + Yi,) || K)257 mod M. Gi = Hi mod 2N Hi = Hi+1 +Gi;
Hm+1 .Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.