Криптография
| Шифр, шифрование, алгоритмы шифрования. |
|
| Хеш, хеширование, алгоритмы хеширования. | В целом немного похоже на шифрование. Дополнение: обычно размер хеша является константным и не зависит от размера входных данных. |
| Категория | Описание | Использование | Алгоритм |
|---|---|---|---|
| Симметричное шифрование | Используется 1 общий ключ для шифрования и расшифровки. EncryptedData Encrypt(data, key) Data Decipher(encryptedData, key) | Обычное, классическое шифрование. | DES, TripleDES, Rijndael AES, RC2 |
Ассиметричное шифрование. Шифрование с открытым ключом | Используется 2 ключа (открытый и закрытый), таким образом, что информация, зашифрованная одним из ключей, может быть расшифрована только с помощью второго. Обычно уступают в скорости и криптостойкости симметричным алгоритмам. EncryptedData Encrypt(data, privateKey) Data DecipherData(encryptedData, publicKey) EncryptedData Encrypt(data, publicKey) Data DecipherData(encryptedData, privateKey) |
Понятие односторонняя функция с черным ходом. Необходимо наличие доверенного центра сертификаций. Центр может сгенерировать цифровой сертификат, содержащий открытый ключ клиента, и подписанный собственным закрытым ключом центра. | RSA, ElGamal |
| Криптографический протокол | Некоторое соглашение о формате, обмена данных между сторонами. Может включать в себя совокупность разных алгоритмов шифрования. | Установление шифрованной сессии между двумя сторонами:
| SSL, |
Хеш Криптографический хет (отдельно) |
Hash Hash(data) | Хеш-функция
| MD5, SHA |
Хеш с ключом. MAC (Message authentication code) Имитовставка (Имитозащитная вставка) | В некотором смысле: Хеш + Симметричное шифрование. Используется 1 общий ключ для хеширования. В криптографии, один из механизмов проверки целостности информации, позволяющий гарантировать то, что данные не были изменены. Hash Hash(data, key) |
Возможные проблемы: общий ключ несет за собой такой момент, что получатель самостоятельно может формировать сообщения по той-же логике и в некоторых случаях потделывать исходного отправителя. | HMAC |
| Цифровые подписи | В некотором смысле: Хеш + Ассиметричное шифрование. SignedData SignData(data, privateKey) bool VerifyData(signedData, publicKey) | Подтверждение авторства/подлинности контента (эл. письма, программы ...). Подписанное сообщение = сообщение + цифровая подпись (хеш, зашифрованный на основе асинхронного шифрования и приватного ключа) + публичный ключ.
| RSA, DSA, ElGamal |