Подтвердить что ты не робот

Обеспечивает ли шифрование целостность?

Чтобы создать безопасную систему, можем ли мы считать, что шифрование гарантирует целостность, является истинным до начала безопасного программирования?

  • Как симметричный, так и открытый ключ шифрование, это мой вопрос хорошо защищенный?
  • Если нет, то какие уязвимостей, вы можете дать Пример?
4b9b3361

Ответ 1

Нет. Это легко увидеть, если вы рассматриваете одноразовый блок простую (теоретически) совершенно безопасную систему.

Если вы измените любой бит вывода, бит текста будет меняться, и получатель не сможет обнаружить это.

Это очевидный случай, но тот же вывод применяется к большинству систем шифрования. Они обеспечивают только конфиденциальность, а не целостность.

Таким образом, вы можете добавить цифровую подпись . Интересно, что при использовании криптографии с открытым ключом недостаточно подписывать, затем шифровать (SE) или шифровать знак (ES). Оба они уязвимы для повторных атак. Вы должны либо подписывать знак шифрования, либо шифровать шифрование, чтобы иметь общепринятое решение. Эта статья объясняет, почему подробно.

Если вы используете SE, получатель может расшифровать сообщение, а затем повторно зашифровать его другому получателю. Это затем обманывает нового получателя в отношении получателя, назначенного отправителем.

Если вы используете ES, подслушивающее устройство может удалить подпись и добавить свои собственные. Таким образом, несмотря на то, что они не могут прочитать сообщение, они могут взять на себя кредит, притворяясь оригинальным отправителем.

Ответ 2

Короче ответ - нет. Целостность и секретность сообщений различны и требуют разных инструментов.

Давайте рассмотрим простой монетный флип, и в этом случае мы делаем ставку на результаты. В результате получается простой bool, и я шифрую его с использованием шифрования потока, такого как RC4, который дает 1 зашифрованный бит, и я посылаю его вам по электронной почте. У вас нет ключа, и я прошу вас отправить мне ответ.

В этом случае может произойти несколько атак.

1) Злоумышленник может изменить бит в пути, если он равен 0, вероятность 50% будет равна 1, а наоборот - true. Это связано с тем, что RC4 создает поток prng, который имеет XOR'ed с открытым текстом, генерирует шифрованный текст, похожий на одноразовый блок.

2) Другая возможность заключается в том, что я могу предоставить вам другой ключ, чтобы убедиться, что ваш ответ неверен. Это легко грубой силой, я просто продолжаю пробовать ключи, пока не получу правильный флип.

Решение заключается в использовании блочного шифрования Режим CMAC. CMAC - это код аутентификации сообщения, похожий на hmac, но он использует блок-шифр вместо функции дайджеста сообщения. Секретный ключ (K) - это тот же ключ, который вы используете для шифрования сообщения. Это добавляет n + 1 блоков к шифру. В моем сценарии это предотвращает атаки 1 и 2. Злоумышленник не может перевернуть простой бит, потому что простой текст дополняется, даже если сообщение занимает только 1 бит. Я должен передать минимум 1 блок, используя блок-шифр. Дополнительный блок проверки подлинности не позволяет мне связывать ключ, а также обеспечивает целостность от тех, кто пытается изменить текст шифрования в пути (хотя это было бы очень сложно сделать на практике, дополнительный уровень безопасности полезен).

WPA2 использует AES-CMAC по этим причинам.

Ответ 3

Если для вас важна целостность данных, вы должны использовать криптографическую хеш-функцию в сочетании с алгоритмом шифрования.

Но это действительно сводится к использованию правильного инструмента для работы. Некоторые алгоритмы шифрования могут обеспечить определенный уровень проверки контрольной суммы, другие не могут.