Обзор
Этот документ описывает важные вопросы, которые необходимо учитывать при предложении замены или дополнения к нашему асимметричному шифрованию ElGamal.
Это информационный документ.
Мотивация
ElGamal устарел и медлителен, и существуют лучшие альтернативы. Однако есть несколько вопросов, которые необходимо решить, прежде чем мы сможем добавить или изменить любой новый алгоритм. Этот документ выделяет эти нерешенные вопросы.
Исследование
Любой, кто предлагает новую криптографию, должен сначала ознакомиться со следующими документами:
- Предложение 111 NTCP2
- Предложение 123 LS2
- Предложение 136 экспериментальные типы сигнатур
- Предложение 137 опциональные типы сигнатур
- Темы обсуждения здесь для каждого из вышеуказанных предложений, ссылки внутри
- приоритеты предложений 2018 года
- предложение ECIES
- обзор нового асимметричного шифрования
- Обзор криптографии низкого уровня
Использование асимметричной криптографии
В качестве обзора, мы используем ElGamal для:
Сообщения построения туннелей (ключ в RouterIdentity)
Шифрование между роутерами netdb и других I2NP сообщений (ключ в RouterIdentity)
Клиент от конца до конца ElGamal+AES/SessionTag (ключ в LeaseSet, ключ назначения не используется)
Эфемерный DH для NTCP и SSU
Дизайн
Любое предложение о замене ElGamal чем-либо другим должно предоставить следующие детали.
Спецификация
Любое предложение по новой асимметричной криптографии должно полностью указать следующие вещи.
1. Общие вопросы
Ответьте на следующие вопросы в вашем предложении. Обратите внимание, что это может потребовать отдельного предложения от конкретики в 2) ниже, поскольку это может конфликтовать с существующими предложениями 111, 123, 136, 137 или другими.
- В каком из вышеуказанных случаев 1-4 вы предлагаете использовать новое шифрование?
- Если для 1) или 2) (роутер), куда помещается открытый ключ, в RouterIdentity или в свойства RouterInfo? Планируете ли вы использовать тип шифрования в сертификате ключа? Полностью специфицируйте. Обоснуйте ваше решение в любом случае.
- Если для 3) (клиент), вы собираетесь хранить открытый ключ в назначении и использовать тип шифрования в сертификате ключа (как в предложении ECIES), или хранить его в LS2 (как в предложении 123), или иным образом? Полностью специфицируйте и обоснуйте ваше решение.
- Для всех используемых способов как будет рекламироваться поддержка? Если для 3), это идет в LS2 или где-то в другом месте? Если для 1) и 2), это похоже на предложения 136 и/или 137? Полностью специфицируйте и обоснуйте ваши решения. Вероятно, понадобится отдельное предложение для этого.
- Полностью специфицируйте, как и почему это совместимо с прошлой версией, и полностью определите план миграции.
- Какие нереализованные предложения являются предпосылками для вашего предложения?
2. Конкретный тип криптографии
Ответьте на следующие вопросы в вашем предложении:
- Общая информация о криптографии, конкретные кривые/параметры, полностью обоснуйте свой выбор. Предоставьте ссылки на спецификации и другую информацию.
- Результаты тестов скорости по сравнению с ElG и другими альтернативами, если применимо. Включите шифрование, дешифрование и генерацию ключей.
- Доступность библиотек в C++ и Java (как OpenJDK, так и BouncyCastle, и сторонние) Для сторонних или не-Java, предоставьте ссылки и лицензии
- Предложенные номера криптотипов (экспериментального диапазона или нет)