Полагаю, вы говорите о том, чтобы найти какой-то способ периодически менять криптографический ключ, используемый в вашем алгоритме, чтобы даже при обнаружении ключа можно было декодировать только данные, зашифрованные этим ключом? Если мы не будем беспокоиться о процессе запуска, то один из способов сделать это - закодировать часть (но не все) ваших последующих ключей в наборе данных, зашифрованных одним ключом, а при переключении ключей зашифровать другой. часть последующих ключей с новым ключом.
Например, допустим, что ваши ключи имеют ширину 8 элементов (где элемент может быть байтом, или 32-битным словом, или чем-либо еще), и мы будем обозначать ключи, которые вы используете для шифрования любого данного блока данных, как Kn, где 'n' - блок данных, зашифрованный этим ключом. Мы будем индексировать элементы ключа, говоря Kn [0] для 1-го элемента, до Kn [7] для 8-го. Мы также назовем этот блок данных Dn. Тогда открытый текст Dn будет включать в себя Kn + 1 [0], Kn + 2 [1], Kn + 3 [2], ..., Kn + 8 [7]. Если вам удалось расшифровать Dn-7 .. Dn, то вы полностью восстановите Kn + 1, так что вы сможете расшифровать следующий блок данных и так далее. Вам нужно получить открытый текст для нескольких последовательных блоков, прежде чем вы сможете надежно расшифровать остальные данные, хотя получение открытого текста для любого данного блока облегчит атаки на остальные ключи.
Первоначальная настройка является более сложной проблемой. SSL был бы хорошим способом распределения K0, K1 [1..7], K2 [2..7], ..., K7 [7].
Я не профессиональный криптограф, поэтому я не совсем уверен, насколько это безопасно. Этот алгоритм предлагается вам КАК ЕСТЬ, без каких-либо гарантий.