HKDF.

Шаг между «случайными байтами в ссылке» и «ключом, который открывает записку».

// definition

HKDF (функция вывода ключей на основе HMAC) выводит криптографические ключи из входного материала. BurnPony подаёт ей 32-байтовый ключ-фрагмент — по желанию в сочетании с растянутой PBKDF2 парольной фразой — плюс случайную 16-байтовую соль и фиксированную строку контекста и получает ключ AES-256-GCM.

Что это

Вывод добавляет дисциплины. Байты из вашей ссылки никогда не используются напрямую как ключ шифрования; это входной материал, связанный солью и версионно-специфичным контекстом, чтобы ключи одного назначения или версии формата нельзя было спутать с другими.

Почему это важно

Это к тому же чистая точка стыковки для функции парольной фразы: без фразы HKDF обрабатывает один лишь ключ-фрагмент; с фразой в него подмешивается растянутая парольная фраза — один путь вывода, два уровня стойкости, никаких особых случаев в формате.

// in BurnPony Строка контекста версионирована для конверта v1, и один и тот же вывод выполняется идентично в Swift приложения и в WebCrypto просмотрщика — проверено на общих тестовых векторах, ведь то, что одно запечатывает, а другое открывает, работает лишь при их точном совпадении.

Связанные термины

Частые вопросы.

Почему не использовать ключ-фрагмент напрямую?

Прямое использование навсегда привязало бы формат ссылки к шифру и не оставило бы места, куда привязать соль, парольную фразу или версию. HKDF даёт каждой записке правильно выведенный ключ, а формату — простор для развития.

Для чего нужна соль?

Это 16 свежих случайных байтов, открыто хранящихся в конверте, которые гарантируют уникальность выведенного ключа для каждой записки даже в неудачных сценариях — стандартная подстраховка, которая ничего не стоит.

Установите BurnPony

Бесплатные самоуничтожающиеся зашифрованные записки для iPhone и Android. Получателям нужен только браузер. Без аккаунтов, без слежки.