Многие существующие шифры, которые невозможно опровергнуть, предназначены для файлов или томов FS, которые слишком тяжелы для простых коротких секретов, таких как пароль, токены и т. д.
Поэтому я пытаюсь осуществлять криптоконтейнер PoC на основе потокового шифра (ChaCha20), который одновременно шифрует несколько секретов с разными паролями, а затем можно расшифровать один из секретов соответствующим паролем.
Некоторые объясняют по простой схеме.Для одного секретного сообщения закодируйте его как строку байтов с префиксом длины. $ млн $, затем добавьте и добавьте случайные байты к $ млн $, и сначала укажите длину отступа префикса. Это приводит к $M_{полный} = L_{предварительное заполнение} || прокладка || М || отступ $, затем случайная 256-битная энтропия $К$ шифровать $M_{полный}$ как $EM_{полный} = ЧаЧа20(К, М_{полный})$. После этого зашифровать $К$ с паролем $P$: $EK=ChaCha20(хэш(P, соль), K)$. Выход $ЭК || EM_{полный}$.
Для нескольких секретов каждый $(P_i, ЕК)$ решает $(K_i, L^i_{предварительное заполнение})$. Так что просто случайный поиск действительного $ЕК$, такое, что все сообщения $M_i$ не будет перекрываться. Вопрос здесь в том, достаточно ли безопасна эта схема, поскольку прямое использование потокового шифра для каждого секрета?