Описание тега cryptography
КРИПТОГРАФИЯ ДОЛЖНА БЫТЬ СВЯЗАНА С ПРОГРАММИРОВАНИЕМ.
Криптография (от греческого "секретное / скрытое письмо") - это практика и изучение методов безопасной связи и обработки в присутствии третьих лиц. Есть три основных свойства, которые мы связываем с безопасным обменом данными:
- конфиденциальность: некоторая информация должна храниться или передаваться без разрешения неавторизованным лицам читать ее;
- целостность: некоторая информация должна храниться или передаваться, не позволяя неавторизованным лицам оставаться незамеченными;
- аутентичность: некоторая информация должна храниться или передаваться таким образом, чтобы источник информации мог быть проверен таким способом, который неавторизованные объекты не могли подделать.
"Сущности" - это люди, роли или системы, которые должны отличаться друг от друга согласно некоторому определению. Криптография работает в логическом мире компьютеров, недоступном для физического мира; любой может купить ПК, поэтому то, что отличает одного пользователя в сети от другого (с точки зрения сети или любого другого протокола связи), - это то, что этот пользователь знает. Криптография называет такое знание секретом или ключом: это часть секретных данных, которая используется в качестве параметра для криптографического алгоритма, реализующего криптографическое свойство в отношении ключа.
Например, симметричное шифрование - это преобразование некоторых данных (возможно, огромного файла) с использованием (обычно короткого) ключа в зашифрованную форму, которая больше не показывает читаемой структуры, но такая, что преобразование может быть отменено (восстановление исходных данных из зашифрованная форма), если известен ключ шифрования. В некотором смысле симметричное шифрование концентрирует конфиденциальность в ключе, который может быть достаточно коротким, чтобы им можно было управлять (например, ключ может быть запомнен человеком, и в этом случае он называется паролем).
Сами криптографические алгоритмы являются общедоступными хотя бы потому, что никто не может точно сказать, "насколько" данный алгоритм является секретным, поскольку алгоритмы часто реализуются в виде программных или аппаратных систем, которые дублируются во многих экземплярах, а стоимость обратного проектирования трудно подобрать оценить. Затем криптосистема (комбинация алгоритма и его ключа) разделяется на алгоритм, который воплощен в виде реализации, и ключ, безопасность которого может быть определена количественно (например, путем подсчета количества возможных ключей заданной длины).
Криптография охватывает науку о разработке криптографических алгоритмов (криптология) и попытках взломать их (криптоанализ); он также включает в себя методы, используемые для применения алгоритмов в различных ситуациях, в частности, реализацию в виде программного обеспечения и связанные темы (например, проблемы с производительностью). Некоторые алгоритмы состоят в сборке нескольких подалгоритмов для получения свойств более высокого уровня (например, "двунаправленный туннель для конфиденциальных данных с проверенной целостностью и взаимной аутентификацией"); тогда они называются протоколами.
Обычно используемые криптографические алгоритмы и протоколы включают, среди прочего:
- Симметричное шифрование: 3DES, AES, RC4, Blowfish
- Хеш-функции: MD5, SHA-1, SHA-2 (включая SHA-256 и SHA-512)
- Асимметричное шифрование: RSA
- Цифровые подписи: RSA (похожий, но не идентичный RSA для шифрования), DSA (как часть стандарта "DSS"), ECDSA.
- Туннелирование данных: TLS (ранее известный как "SSL"; при использовании для передачи HTTP-запросов результат известен как "HTTPS"), SSH, IPsec.
- Зашифрованные и / или подписанные электронные письма: OpenPGP (стандартный протокол, полученный из исходного программного обеспечения PGP), S / MIME
- Сертификаты: X.509, OpenPGP (сертификаты связаны с привязкой идентификаторов к открытым ключам, которые сами по себе используются в асимметричном шифровании и цифровых подписях)
Темы по теме также включают управление паролями (хранение, проверка, энтропия, методы взлома, такие как радужные таблицы...), расширенные многосторонние протоколы (схемы электронного голосования, электронные деньги, анонимный просмотр...), использование существующих реализаций. (библиотеки, аппаратные ускорители, смарт-карты...) и так далее.
Вопросы, не связанные напрямую с разработкой программного обеспечения (например, более теоретические), лучше задавать на сайте Cryptography Stack Exchange (все еще в стадии бета-тестирования).
См. Также: encryption, rsa, aes, sha