Везде, где только мы можем представить, используется шифрование данных - начиная от банковских переводов и оплатой чеков, заканчивая социальными сетями и смарт-девайсами дома. Криптосистема - это математический набор правил, сделанный для того что бы защитить важную информацию от чужих глаз. Ею пользуются с древних времен: например иудеи в древности пользовались примитивной системой Атбаш , суть которой заключалась в том, что мы меняем первую букву алфавита на последнюю, вторую - на предпоследнюю, и так далее, то есть "переворачиваем" алфавит вверх ногами.
Более сложные системы шифрования информации требуют наличие ключа - этакого "пароля" для шифровки и расшифровки информации. Много современных алгоритмов шифрования используют симметрическую криптосистему - это когда один и тот же ключ используется и для шифрования(encryption), и для дешифрования(decryption) сообщения, например AES-256. Не буду рассказывать о подробностях этих алгоритмов, суть лишь в том, что ключ должен быть как и у отправителя, так и у получателя.
Все бы хорошо, но у таких алгоритмов есть одна проблема - как передать ключ от отправителя получателю? С этой задачей боролись разными способами, иногда отправляя "специального человека", чтобы тот доставил ключ в сохранности и безопасности.
Очевидно, в эпоху развивающейся науки так не могло продолжаться вечно. В 1973 году Клиффорд Кокс, сотрудник британской разведки, изобрел способ RSA, который в 1976 стал публичным. Суть его такая:
- Пусть Боб хочет написать Алисе письмо (пусть оно будет x)
- У Алисы есть два ключа(обычно два очень больших простых натуральных числа) - один свой, который она держит в секрете(p), а другой - показывает всем(q).
- Боб отправляет Алисе f(x, q).
- Алиса получает f(x, q) и вычисляет g(f(x, q)) и ... получает x.
Где магия? Магия в математике. Этот алгоритм использует свойства простых чисел и возведения в степень.
RSA - один из примеров ассиметричной криптосистемы, когда не нужно использовать один и тот же ключ для расшифровки и шифрования и соответсвенно нет проблемы "передачи ключа" по безопасному каналу.
В подробности опускаться не буду, объясню лишь почему сложно расшифровать такой алгоритм. Если кто-то захочет узнать что Боб передал Алисе, это все сведется к тому, что он захочет узнать, делится ли какое-то большое число на какое-нибудь меньшее. Например, если вам показать число 15, то вы сразу скажете что оно делится на 5 и на 3. Но если вам показать 751493, то вы очень долго будете понимать, делится ли оно на что-то или нет. Тем не менее, в другую сторону вычислить произведение 881*853=751493 не составит никому труда с калькулятором на руках. В этом суть так называемых односторонних функций: когда тебе известен x, f(x) вычислить легко, а когда тебе известно f(x), x вычислить очень сложно(долго).Естественно, в современной криптографии используются куда большие числа чем 751493.
Один из минусов асимметричных систем - это вычислительная нагрузка. Поэтому часто делают так - используют асимметричный алгоритм для обмена общего ключа, а потом используют симметричные алгоритмы (например AES).
Пишите в комментариях о чем вы бы хотели почитать в следующих статьях! Всем спасибо.