Я думаю об использовании AES256 CBC + HMAC SHA-256 в качестве строительного блока для сообщений, который гарантирует как конфиденциальность, так и аутентификацию.
В частности, рассмотрите возможность использования этот сценарий:
- Алиса владеет открытым ключом, принадлежащим Бобу (обмен ключами и алгоритм выходят за рамки этого вопроса). У Алисы есть идентификационный ключ K, также общий с Бобом, который она может использовать для идентификации. Только Алиса и Боб знают ключ K.
- Алиса шифрует (nonce || K), используя открытый ключ Боба.
- Боб расшифровывает пакет и теперь имеет K и одноразовый номер.
- Боб использует SHA-256 с SHA256 (K || nonce), чтобы получить K (e) из 256 бит.
- Боб использует SHA-256. с SHA256 (K || nonce + 1), чтобы получить K (s) из 256 бит.
Теперь для каждого пакета, который Боб хочет отправить Алисе, он выполняет следующее:
- Создает новый случайный 128-битный IV
- ] Шифрует сообщение, используя IV и K (e) в качестве ключа.
- Создает SHA-256 HMAC с K (s) в качестве ключа и (IV || Зашифрованное сообщение) в качестве данных.
- Наконец, отправляет (IV || HMAC || Шифрованный текст) Алисе
Алиса также вычислила K (e) и K (s) и следует следующей процедуре при получении данных от Боба:
- Разделите сообщение на IV, зашифрованный текст и HMAC.
- Вычислить HMAC, используя K (s), IV и зашифрованный текст.
- Сравните HMAC с отправленным HMAC. Если это совпадает, Алиса считает это сообщение аутентифицированным как сообщение, отправленное Бобом, в противном случае оно отбрасывается.
- Алиса расшифровывает сообщение с помощью K (e)
Гарантирует ли этот протокол, что Алиса расшифровывает только сообщения от Боба, предполагая, что никто, кроме Боб может прочитать зашифрованное сообщение, которое Алиса отправляет ему в зашифрованном виде с использованием его открытого ключа?
Т.е. обеспечивают ли сообщения, построенные таким образом, как конфиденциальность, так и аутентификацию?
Примечание: если протокол требует, чтобы Боб отправлял несколько сообщений, эту схему необходимо немного изменить, чтобы избежать атак повторного воспроизведения.
PS Я знаю о AES-GCM / CCM, но эта схема будет работать с базовыми алгоритмами AES, SHA и HMAC, которые присутствуют в большинстве криптографических пакетов. Это решение также может быть медленнее, но это тоже выходит за рамки вопроса.
задан Nuoji 9 March 2011 в 12:53
поделиться