Я трохи детальніше дослідив це питання і хотів би уточнити свій підхід.
Щодо ECDHE та ефемерності ключів у моєму випадку ключі фактично є ephemeral. Пара ключів генерується локально при створенні сесії й існує лише в межах активного чату. Після завершення сесії (закриття вкладки, розриву з’єднання або timeout) всі ключі та повідомлення знищуються, а наступна сесія створює вже нову пару ключів і новий shared secret.
Тобто forward secrecy в межах окремих сесій фактично зберігається, оскільки ключовий матеріал не перевикористовується між чатами та не зберігається сервером.
Також я свідомо обрав модель ephemeral-session чату без persistence. Середня тривалість сесії кілька хвилин(за відгуками користувачів), тому ротація ключів всередині однієї короткоживучої сесії наразі не виглядає для мене критично необхідною.
Але загалом згоден, що з точки зору більш mature messenger architecture можна рухатись далі в сторону HKDF, key ratcheting та більш складних протоколів, але не впевнений в реальні користі їх враховуючи особливість мого чату.
Дякую за рекомендації, я обов’язково перегляну запропоновані ресурси. Це поки по факту перша версія чату, і я планую покращувати і вдосконалювати його, шукати кращі шляхи реалізації криптування і загальної безпеки.
Я трохи детальніше дослідив це питання і хотів би уточнити свій підхід.
Щодо ECDHE та ефемерності ключів у моєму випадку ключі фактично є ephemeral. Пара ключів генерується локально при створенні сесії й існує лише в межах активного чату. Після завершення сесії (закриття вкладки, розриву з’єднання або timeout) всі ключі та повідомлення знищуються, а наступна сесія створює вже нову пару ключів і новий shared secret.
Тобто forward secrecy в межах окремих сесій фактично зберігається, оскільки ключовий матеріал не перевикористовується між чатами та не зберігається сервером.
Також я свідомо обрав модель ephemeral-session чату без persistence. Середня тривалість сесії кілька хвилин(за відгуками користувачів), тому ротація ключів всередині однієї короткоживучої сесії наразі не виглядає для мене критично необхідною.
Але загалом згоден, що з точки зору більш mature messenger architecture можна рухатись далі в сторону HKDF, key ratcheting та більш складних протоколів, але не впевнений в реальні користі їх враховуючи особливість мого чату.