Olm¶
Olm — криптографічна бібліотека та протокол Matrix для наскрізного шифрування приватних (один-на-один) повідомлень, заснований на алгоритмі Double Ratchet.
Опис¶
Olm — це реалізація протоколу Double Ratchet (розробленого командою Signal), адаптована для екосистеми Matrix. Він забезпечує шифрування сесій між двома конкретними пристроями: кожна пара "пристрій A — пристрій B" встановлює незалежну Olm-сесію.
Double Ratchet поєднує два механізми: Diffie-Hellman ratchet (для оновлення ключів при кожному повідомленні) та symmetric-key ratchet (для деривації ключів шифрування). Результатом є властивість forward secrecy: компрометація поточного ключа не дозволяє розшифрувати попередні повідомлення. Також забезпечується break-in recovery — після компрометації ключа система автоматично відновлює безпеку через наступні DH-оновлення.
Для встановлення Olm-сесії використовується протокол X3DH (Extended Triple Diffie-Hellman). Кожен пристрій публікує на homeserver набір one-time prekeys — одноразових публічних ключів. Коли відправник хоче ініціювати сесію з новим пристроєм, він забирає один із цих prekeys і виконує X3DH для отримання спільного секрету без попередньої взаємодії сторін.
Olm використовується лише для приватних чатів та для передачі ключів Megolm-сесій у групових кімнатах. Це пов'язано з тим, що Double Ratchet погано масштабується на велику кількість учасників — для кожної пари пристроїв потрібна окрема сесія.
В контексті UMTC¶
У UMTC Olm автоматично активується в Element при будь-якому приватному чаті між двома користувачами. Адміністратори не мають доступу до вмісту цих переписок навіть через базу даних Synapse.
При підключенні нового пристрою до облікового запису Matrix, Olm-сесії встановлюються заново для кожного активного співрозмовника. Саме тому після втрати пристрою рекомендується верифікувати новий пристрій через cross-signing, щоб не переривати шифровані сесії.
Пов'язані терміни¶
- megolm — протокол для групових кімнат, доповнює Olm
- e2ee — загальна концепція наскрізного шифрування
- matrix — протокол, в якому використовується Olm
- element — клієнт, що реалізує Olm/libolm
Посилання¶
Шлях: glossary/olm.md