Я понимаю, что здесь уже есть несколько похожих вопросов, но мой немного отличается тем, что я хочу разделить 256-битный AES на два 128-битных ключа, а затем использовать другой 128-битный ключ AES для шифрования двух 128-битных ключей для передачи ключ между двумя процессорами. это безопасно делать?
Он обеспечивает только 128-битную безопасность, потому что злоумышленнику нужно взломать только 128-битный транспортный ключ. Это безопасно, но вы не получаете никакой защиты от использования 256-битного ключа.
Если вы используете два отдельных 128-битных ключа, это становится немного сложнее. Если у злоумышленника есть какой-либо способ независимой проверки правильности расшифровки каждой половины 256-битного ключа, например, если алгоритм шифрования ключа аутентифицирован, то он может расшифровать с помощью
- Нахождение первого 128-битного ключа методом перебора ($2^{128}$ шаги);
- Нахождение второго 128-битного ключа методом перебора ($2^{128}$ шаги);
который $2^{128} + 2^{128} = 2 \times 2^{128} = 2^{129}$ шаги, и, таким образом, вы получаете только 129-битную безопасность.
Однако, если алгоритм шифрования ключа не предлагает способа проверки правильности дешифрования, а 256-битный ключ является случайным, эта атака не работает, потому что нет способа проверить на шаге № 1, что у вас есть правильный ключ для первая половина. Алгоритм перебора становится таким:
- Для каждого возможного значения (из $2^{128})$ первого ключа:
- Для каждого возможного значения (из $2^{128}$) второго ключа:
- Попробуйте расшифровать каждую половину переданного ключа с помощью этой комбинации, а затем расшифровать сообщение с помощью полученного 256-битного ключа.
А это $2^{128} \times 2^{128} = 2^{128 + 128} = 2^{256}$ шаги, и не лучше, чем просто атака 256-битного ключа методом перебора.
Алгоритмы шифрования, обычно рекомендуемые в наши дни, называются «AEAD» (аутентифицированное шифрование со связанными данными), которые относятся к первой категории, и поэтому вы получите только 129-битную надежность. Вам придется использовать более старые алгоритмы, отличные от AEAD, для транспортировки половинок ключа.