в настоящее время практически все системы связи, за исключением государственных, используют шифрование с открытым ключом.
http://ru.wikipedia.org/wiki/%CA%F0%E8% ... E%F7%EE%EC
в государственных системах используется шифрование с закрытым ключом, поэтому так все секретно.
если это не стеб, то попробую ответить. Шифрование с открытым ключом - это и есть ассиметричное шифрование. Это RSA, это эллиптическое шифрование и т.д. Суть в том, что существует 2 ключа. Закрытый и открытый. Первый хранится только у вас и используется для расшифровки данных (и цифровой подписи), второй вы можете передавать кому угодно в открытом виде, им данные зашифровываются. Данные, зашифрованные открытым ключом, невозможно расшифровать без закрытого ключа, который есть только у вас. Вычислить один ключ из другого тоже невозможно. Вычислить закрытый ключ, имя зашифрованные, расшифрованные данные и открытый ключ тоже невозможно.
Но такие алгоритмы медленные, оперируют относительно большими блоками данных. Поэтому их применяют только для начала сессии. Просиходит соединение двух абонентов, обмен открытыми ключами, которые подписаны цифровой подписью, потом происходит обмен ключами для симметричных систем шифрования - блочных (aes, twofish, rc6) или потоковых (rc4).
Благодаря цифровым подписям и ассиметричному шифрованию, можно безопасно обмениваться ключами для более быстрых, но не менее надежных симметричных систем.
в ходе шифрования, если мы шифруем более-менее имитостойко, в код закладывается изрядная избыточность
да ничего в код не закладывается. Если на входе aes получает 64 байта нешифрованной информации, то на выходе ты получишь те же 64 зашифрованные байта. Избыточность не создается. Увеличение размера может быть только в двух случаях:
1) к зашифрованным данным прилагается контрольная сумма, чтобы точно знать, что данные не повреждены. Для алгоритма md5 размер такой суммы будет 16 байт.
2) блочные алгоритмы (в отличие от потоковых) работают с данными одинаковой длины. Для aes (American Encryption Standart) длина блока равна 64 байта. Т.е. все данные разбиваются на блоки по ровно 64 байта и каждый блок шифруется отдетльно. Если получился блок, скажем, 30 байт, он дополняется мусором до 64 и потом шифруется. Если получился блок, скажем, 70 байт, он разбивается на 2 части. Первая - 64 байта - просто шифруется. Вторая - 6 байт - добавляется мусор до 64 байт и тоже шифруется. Т.е. только на выравнивании может идти незначительный прирост размера данных.
вы хотите шифровать свою связь с танком методом прямой замены, то такой шифровке грош цена, и через некоторое время ваши танки станут уже не вашими...
вы явно плохо знакомы с криптографией. Я сам не криптограф, но то, что написали вы, совершенно неверное представление о шифровании. Никакой прямой замены нет. И эта "просто подстановка" уж куда надежнее, чем передавать ключи вместе с данными.
Хотите опыт? Я вам даю два текста. Первый в зашифрованном и расшифрованном виде. Второй только в зашифрованном. Ключ используется один и тот же. Алгоритм - симметричный блочный aes256. Вы должны мне до конца этого тысячелетия предоставить расшифрованный второй текст. Можете привлечь пентагон к перебору вариантов
С меня пиво и радиоуправляемый танк. Если не доверяете буржуйским aes, можем взять советский ГОСТ 28147-89
П.С.: по такой вот "просто замене" шифруются все операции с кредитными картами. Согласитесь, пока не было новостей о взломе подобных шифров.