![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Шифрование. Шифрование открытым ключом
Шифрование – процесс преобразования сообщения из открытого текста (plaintext) в шифротекст (ciphertext) таким образом, чтобы: · его могли прочитать только те стороны, для которых оно предназначено; · проверить подлинность отправителя (аутентификация); · гарантировать, что отправитель действительно послал данное сообщение. В алгоритмах шифрования предусматривается наличие ключа. Ключ – это некий параметр, не зависящий от открытого текста. Результат прим-ия алгор. шифрования зависит от используемого ключа. В криптографии принято правило Керхоффа: «Стойкость шифра должна определяться только секретностью ключа». Правило Керхоффа подразумевает, что алгоритмы шифрования должны быть открыты. В системах шифрования с открытым или асимметричным ключом (см. рис.) (public/ assymmetric key) используется два ключа.
Иногда поступают по-другому. Для шифрования сообщения используется секретный ключ, и если сообщение можно расшифровать с помощью открытого ключа, подлинность отправителя будет гарантирована (система электронной подписи). Этот принцип изобретен Уитфилдом Диффи (Whitfield Diffie) и Мартином Хеллманом (Martin Hellman) в 1976. Использование открытых ключей снимает проблему обмена и хранения ключей, свойственную системам с симметричными ключами. Открытые ключи могут храниться публично, и каждый может послать зашифрованное открытым ключом сообщение владельцу ключа. Однако расшифровать это сообщение может только владелец открытого ключа при помощи своего секретного ключа, и никто другой. Несмотря на очевидные удобства, связанные с хранением и распространением ключей, асимметричные алгоритмы гораздо менее эффективны, чем симметричные. Среди несимметричных алгоритмов наиболее известен RSA, предложенный Роном Ривестом (Ron Rivest), Ади Шамиром (Adi Shamir) и Леонардом Эдлманом (Leonard Adleman). Шифрование с использованием алгоритма RSA.
RSA относится к так называемым асимметричным алгоритмам, у которых ключ шифрования не совпадает с ключом дешифровки. Один из ключей доступен всем (так делается специально) и называется открытым ключом, другой хранится только у его хозяина и неизвестен никому другому. С помощью одного ключа можно производить операции только в одну сторону. Если сообщение зашифровано с помощью одного ключа, то расшифровать его можно только с помощью другого. Имея один из ключей невозможно (очень сложно) найти другой ключ, если разрядность ключа высока. Описание RSA Алгоритм RSA состоит из следующих пунктов: 1. Выбрать простые числа p и q 2. Вычислить n = p * q 3. Вычислить m = (p - 1) * (q - 1) 4. Выбрать число d взаимно простое с m 5. Выбрать число e так, чтобы e * d = 1 (mod m) Числа e и d являются ключами. Шифруемые данные необходимо разбить на блоки – числа от 0 до n-1. Шифрование и дешифровка данных производятся следующим образом: · Шифрование: b = ae (mod n) · Дешифровка: a = bd (mod n) Следует также отметить, что ключи e и d равноправны, т.е. сообщение можно шифровать как ключом e, так и ключом d, при этом расшифровка должна быть произведена с помощью другого ключа. На данный момент времени рекомендуется в качестве чисел e и d брать числа, длиной не менее 768 бит. Чтобы подобрать ключ такой длины потребуется $1000000 и примерно год времени. Ключ в 1024 бит является достаточно надежным для обычных целей шифрования. Для повышенной безопасности рекомендуется брать ключи размером 2048 бит. Т.о. числа p и q должны иметь разрядность вдвое ниже чисел e, d, m и n (p и q рекомендуется брать примерно одного порядка, но не слишком близко друг к другу). Действия со столь большими числами требуют специальных алгоритмов и структур данных.
![]() |