ECC (криптосистема на основе эллиптических кривых)
Использует алгебраическую систему, которая описывается в терминах точек эллиптических кривых, для реализации асимметричного алгоритма шифрования. Является конкурентом по отношению к другим асимметричным алгоритмам шифрования, так как при эквивалентной стойкости использует ключи меньшей длины и имеет большую производительность.
Современные его реализации показывают, что эта система гораздо более эффективна, чем другие системы с открытыми ключами. Его производительность приблизительно на порядок выше, чем производительность RSA, Диффи-Хеллмана и DSA.
Эль-Гамаль
Вариант Диффи-Хеллмана, который может быть использован как для шифрования, так и для электронной подписи.
ГОСТ Р 34.10–94
Напоминает DSS, но более устойчив за счет больших значений параметров.
Цифровая подпись
Для подписания документа отправитель шифрует его секретным ключем (на практике, для экономии времени шифруется контрольная сумма документа, что также позволяет поставить несколько подписей), получатель может дешифровать его (ее) с помощью открытого ключа отправителя. Подписанный документ может быть дополнительно зашифрован открытым ключом получателя (но нельзя подписывать зашифрованные сообщения!). Пары ключей для подписи и шифрования могут быть различными, хотя распространенные ассиметричные алгоритмы позволяют использовать одну и ту же пару для обеих целей (это уменьшает стойкость протокола).
DSS
Ассиметричный алгоритм шифрования DSA; стандарт США, 1994; медленный.
RSA
Ассиметричный алгоритм шифрования RSA, PKCS 1 в сочетании с MD2 или MD5.
Алгоритмы эллиптических кривых (ECC)
Кроме протокола цифровой подписи требуется определить процедуру разбора конфликтных ситуаций (арбитр запрашивает секретный ключ и определяет виновного: подписант, получатель или центр сертификации открытых ключей).
Криптографически стойкие контрольные суммы (MAC, хеш, дайджест)
Необходимы для проверки целостности данных (при современных скоростях и объемах CRC-32 уже недостаточно) и цифровой подписи. Используются также для упрощения визуального сравнения открытых ключей (fingerprint). Криптографическая стойкость означает трудоемкость модификации сообщения с сохранением контрольной суммы или генерация сообщения, порождающего указанную контрольную сумму. В частности, длина контрольной суммы не должна быть менее 128 бит, а лучше 160. HMAC (RFC 2104) — сочетание любой криптографически стойкой контрольной суммы (не менее 128 бит) и шифрования при передаче хеша вместе с сообщением.
MD2
128 бит, медленный, RFC 1319.
MD4
128 бит, быстрый, RFC 1320, имеет известные дефекты.
MD5
128 бит, улучшенный (за счет скорости) MD4, RFC 1321; слабая устойчивость к коллизиям, хотя алгоритм генерирования коллизий неизвестен.
SHA, SHA-1
Проблема коллизий исправлена в версии SHA-1. 160 бит; стандарт США (ANSI X9.30-2, FIPS 180, FIPS 180-1), ISO/IEC 10118; на основе MD4, максимальная длина сообщения — 264.
ГОСТ Р 34.11–94
256 бит (на основе алгоритма шифрования ГОСТ 28147-89).
Советы по шифрованию данных
Не используйте * неизвестные криптоалгоритмы и программные комплексы шифрования.
При выборе криптоалгоритма учитывайте его параметры. Из симметричных автор предпочитает использовать Rijndael, однако его вполне заменят MARS, RC6, Cast-256, Twofish или в крайнем случае ГОСТ 28147-89. Из асимметричных признанным считается RSA (исп. в PGP), но заменим DSA или ECC.
Гамма шифра. Для симметричных крптоалгоритмов минимум 256 бит, а лучше 512 бит (если это позволяет используемый вами алгоритм). Например, 128-битный ключ имеет 3,4 x 1038 возможных вариантов. Т. е. он в 1021 раз более устойчив, чем 56-битный ключ DES.
Блоки данных. Не менее 128 бит. Если блоки маленькие — степень перемешивания данных, а соответственно и степень криптостойкисти, зависит от количества проходов.
Количество проходов. Вполне достаточно 32, можно 64.
*Примечание. Выбор более криптостойких алгоритмов влечет за собой увеличение времени шифрования/дешифрования данных. Поэтому перед выбором алгоритма стоит определиться в степени секретности ваших данных. Даже если они супер-секретны, при необходимости спецслужбы их все равно взломают. Если данные секретные и имеют небольшой размер — смело используйте самый «крутой» алгоритм, иначе подумайте о времени, которое вы будете тратить на их дешифрование при желании их просмотреть…
Применяйте * последовательное шифрование несколькими различными криптоалгоритмами с разными паролями. Это уменьшит вероятность вскрытия защищаемой информации и/или, в крайнем случае, увеличит время ее вскрытия.