Přehled
Tento dokument popisuje důležité otázky, které je třeba zvážit při navrhování náhrady nebo doplnění naší asymetrické šifry ElGamal.
Toto je dokument informačního charakteru.
Motivace
ElGamal je starý a pomalý, a existují lepší alternativy. Existuje však několik problémů, které je nutné vyřešit, než budeme moci přidat nebo přejít na jakýkoli nový algoritmus. Tento dokument tyto nevyřešené otázky zdůrazňuje.
Předběžný výzkum
Každý, kdo navrhuje novou kryptografii, musí být nejprve obeznámen s následujícími dokumenty:
- Návrh 111 NTCP2
- Návrh 123 LS2
- Návrh 136 experimentální typy podpisů
- Návrh 137 volitelné typy podpisů
- Diskusní vlákna zde pro každý z výše uvedených návrhů, odkazovaná uvnitř
- Priority návrhů z roku 2018
- Návrh ECIES
- Přehled nové asymetrické kryptografie
- Přehled nízkoúrovňové kryptografie
Použití asymetrické kryptografie
Pro připomenutí, ElGamal používáme pro:
Zprávy pro stavbu tunelu (klíč je v RouterIdentity)
Šifrování mezi směrovači pro netDb a další I2NP zprávy (Klíč je v RouterIdentity)
End-to-end ElGamal+AES/SessionTag na straně klienta (klíč je v LeaseSet, klíč Destination se nepoužívá)
Dočasné DH pro NTCP a SSU
Návrh
Každý návrh na nahrazení ElGamalu jiným algoritmem musí obsahovat následující podrobnosti.
Specifikace
Každý návrh nové asymetrické kryptografie musí plně specifikovat následující položky.
1. Obecné
Ve svém návrhu odpovězte na následující otázky. Vezměte v úvahu, že to může být nutné zpracovat jako samostatný návrh oddělený od konkrétních bodů v části 2) níže, protože by mohl kolidovat s existujícími návrhy 111, 123, 136, 137 nebo jinými.
- Pro které z výše uvedených případů 1–4 navrhujete použití nové kryptografie?
- Pokud pro 1) nebo 2) (směrovač), kam bude veřejný klíč umístěn – do RouterIdentity nebo do vlastností RouterInfo? Máte v úmyslu použít typ kryptografie v certifikátu klíče? Plně specifikujte. Oba případy zdůvodněte.
- Pokud pro 3) (klient), máte v úmyslu uložit veřejný klíč v cíli a použít typ kryptografie v certifikátu klíče (jako v návrhu ECIES), nebo jej uložit v LS2 (jako v návrhu 123), nebo něco jiného? Plně specifikujte a své rozhodnutí zdůvodněte.
- Pro všechna použití – jak bude podpora inzerovala? Pokud pro 3), bude to v LS2 nebo jinde? Pokud pro 1) a 2), bude to podobné jako v návrzích 136 a/nebo 137? Plně specifikujte a svá rozhodnutí zdůvodněte. Pravděpodobně bude potřeba samostatný návrh pro tuto část.
- Plně specifikujte, jak a proč je toto zpětně kompatibilní, a podrobně popište plán migrace.
- Které nerealizované návrhy jsou předpoklady pro váš návrh?
2. Konkrétní typ kryptografie
Ve svém návrhu odpovězte na následující otázky:
- Obecné informace o kryptografii, konkrétní křivky/parametry, plně zdůvodněte svou volbu. Uveďte odkazy na specifikace a další informace.
- Výsledky testů rychlosti ve srovnání s ElGamalem a dalšími alternativami, pokud jsou k dispozici. Zahrňte šifrování, dešifrování a generování klíčů.
- Dostupnost knihoven v C++ a Javě (OpenJDK, BouncyCastle i třetí strany) Pro třetí strany nebo ne-Java knihovny uveďte odkazy a licence
- Navrhované číslo(a) kryptografického typu (v experimentálním rozsahu nebo nikoli)