Стандарти ML-KEM і ML-DSA дозволяють зберігати приватний ключ двома способами. Існує невелике насіння — 64 байти для ML-KEM і 32 байти для ML-DSA, а також більша розширена форма, яка отримується з цього насіння через хеш-функції. Ці два варіанти математично еквівалентні, і ви можете переходити від насіння до розширеної форми будь-коли, але повернутися назад не можна. Якщо ви обираєте між тим, що зберігати як приватний ключ, зберігайте сід. Це справжній секрет, з якого походить усе інше. Ви можете розгорнути його у повний ключ у будь-який момент, і це займає близько 40 мікросекунд, тож немає реальної причини зберігати розширену версію на диску. Якщо вам потрібно це в пам'яті для повторюваних операцій, просто розгорніть один раз під час завантаження. Seed — це просто випадкові байти, тому будь-яке значення є дійсним ключем. Розширена форма має структуру; коефіцієнти, які мають бути в зоні дії, вбудований публічний ключ, хеш, який має співпадати, і стандарт вимагає перевірки всього цього при імпорті. Це набагато більше простору для того, щоб щось пішло не так, чого у вас немає з насінням. Також існує постійна проблема серіалізації в IETF, де поточний формат компромісу дозволяє як seed, так і розширений ключ розміщуватися в одній структурі даних. Це означає, що дві конформні реалізації можуть читати різні поля з одного ключа і в результаті отримувати різний матеріал ключа, чого не потрібно від формату ключа. Коротко; Коротко: зберігайте насіння і розширюйте його за потреби. Повний опис нижче.