Vault & Serega
Vault Vault
Привет, я тут поковырялся с одной легковесной схемой шифрования, полностью на командной строке. Хотел посмотреть, как ты бы обеспечил надёжную защиту, но при этом сохранил минимальный и аккуратный интерфейс.
Serega Serega
Отлично, что ты остался в консоли – никаких графических излишеств. Для легковесного шифровальщика, сделай планирование ключей достаточно сжатым, но всё же не тривиальным. Используй надёжный хеш, например SHA-256, чтобы вывести ключ из парольной фразы, а затем подай его в лёгкий шифр, типа ChaCha20. Получишь быструю потоковую шифровку с проверенной безопасностью. Не забудь про HMAC на зашифрованном тексте, чтобы любые изменения были сразу заметны. И используй соль для каждого шифрования, чтобы обойти радужные таблицы. Храни nonce и HMAC вместе с шифротекстом в одном base64 блоке. Пиши код модульный; каждая функция должна выполнять только одну задачу, без глобальных переменных. И, кстати, добавь комментарий, объясняющий, почему ты выбрал ChaCha20 вместо самописного блочного шифра – будущий ты скажет тебе спасибо.
Vault Vault
Спасибо, неплохой план. Я оставлю ключевое вычисление в отдельной функции, захеширую парольную фразу SHA‑256, буду добавлять случайную соль при каждом запуске и затем буду использовать хеш для инициализации ChaCha20. HMAC будет использовать тот же ключ хеша для простоты, а nonce, HMAC и шифротекст упакую в base64 строку. Обосную, почему выбрал ChaCha20 вместо самописного блочного шифра – скорость и возможность аудита делают его более безопасным вариантом. Никаких глобальных переменных, только чистые модули.
Serega Serega
Похоже, ты идеально справился с подходом "без лишнего шума". Только не забудь про утечки по сторонним каналам – заполни нулями ключ, если берёшь его из хеша. И сделай длину соли достаточно большой, чтобы перебор был невозможен; 16 байт – неплохая отправная точка. Приятно видеть модульную структуру – будущий ты поблагодарит за правило "без глобальных переменных", когда будешь отлаживать странности в полночь. Удачи в кодировании, и держи плейлист "Компилируй и плачь" наготове для долгих отладочных сессий.
Vault Vault
Понял. Добавляю нули к хешу, чтобы получилось 32 байта, использую 16-байтовый соль и всё разбиваю на отдельные функции. Плейлист поставлен, консоль готова к ночной отладке. Спасибо за напоминание.