Özet
I2P, 2005 yılından beri engellemeye dirençli bir UDP taşıyıcı iletişim kuralı olan "SSU" kullanıyor. 17 yılda SSU engellemesi hakkında çok az bildirim aldık. Ancak günümüzün güvenlik, engelleme direnci ve başarım standartlarına göre daha iyisini yapabiliriz. Çok daha iyisini.
Bu nedenle, i2pd projesi ile birlikte, en yüksek güvenlik ve engellemeye direnme standartlarına göre tasarlanmış modern "SSU2" UDP iletişim kuralını oluşturduk ve uyguladık. Bu iletişim kuralı SSU yerine geçecek.
Endüstri standardı şifrelemeyii WireGuard ve QUIC UDP iletişim kurallarının en iyi özellikleriyle ve "NTCP2" TCP iletişim kuralımızın engellemeye direnç özellikleriyle birleştirdik. SSU2, şimdiye kadar tasarlanmış en güvenli taşıyıcı iletişim kurallarından biri olabilir.
Java I2P ve i2pd ekipleri SSU2 taşıyıcısını tamamlıyor ve bir sonraki sürümde tüm yönelticiler için etkinleştireceğiz. Böylece, 2003 yılına dayanan özgün Java I2P uygulamasındaki tüm şifrelemeyi yükseltmeye yönelik on yıllık planımızı tamamlamış olacağız. SSU2, ElGamal şifrelemesinin kalan tek kullanımı olan SSU iletişim kuralının yerini alacak.
- Signature types and ECDSA signatures (0.9.8, 2013)
- Ed25519 signatures and leasesets (0.9.15, 2014)
- Ed25519 routers (0.9.22, 2015)
- Destination encryption types and X25519 leasesets (0.9.46, 2020)
- Router encryption types and X25519 routers (0.9.49, 2021)
SSU2 iletişim kuralına geçişin ardından, kimliği doğrulanmış ve şifrelenmiş tüm iletişim kurallarını standart Gürültü İletişim Kuralı el sıkışmalarına geçirmiş olacağız:
- NTCP2 (0.9.36, 2018)
- ECIES-X25519-Ratchet uçtan uca iletişim kuralı (0.9.46, 2020)
- ECIES-X25519 tünel oluşturma iletileri (1.5.0, 2021)
- SSU2 (2.0.0, 2022)
Tüm I2P gürültü iletişim kuralları aşağıdaki standart şifreleme algoritmalarını kullanır:
Hedefler
- Asimetrik şifrelemeyi çok daha hızlı X25519 strandardına yükseltmek
- ChaCha20/Poly1305 standart simetrik kimliği doğrulanmış şifreleme kullanılması
- SSU gizleme ve engelleme direnci özelliklerinin iyileştirilmesi
- QUIC stratejilerini uyarlayarak sahte adreslere karşı direncin artırılması
- El sıkışma işlemci verimliliğinin iyileştirilmesi
- Daha küçük el sıkışmaları ve onaylar kullanılarak bant genişliği verimliliğinin iyileştirilmesi
- SSU eş sınaması ve aktarıcı özelliklerinin güvenliğinin iyileştirilmesi
- QUIC "bağlantı aktarımı" özelliğinin uyarlanarak eş IP ve bağlantı noktası değişikliklerinin işlenmesinin iyileştirilmesi
- Paket işleme için buluşsal koddan belgelenmiş, algoritmik işlemeye geçilmesi
- SSU iletişim kuralından SSU2 iletişim kuralına kademeli ağ geçişinin desteklenmesi
- NTCP2 üzerinde blok konseptinin kullanılarak kolay genişletilebilirliğin sağlanması
Tasarım
I2P, trafiği saldırganlardan korumak için birden çok şifreleme katmanı kullanır. En alt katman, iki yöneltici arasındaki noktadan noktaya bağlantılar için kullanılan taşıyıcı iletişim kuralı katmanıdır. Şu anda iki taşıyıcı iletişim kuralımız var: 2018 yılında tanıtılan modern bir TCP iletişim kuralı olan NTCP2 ve 2005 yılında geliştirilen bir UDP iletişim kuralı olan SSU.
SSU2, önceki I2P taşıyıcı iletişim kuralları gibi, veriler için genel amaçlı bir kanal değildir. Birincil görevi, düşük düzeydeki I2P I2NP iletilerini bir yönelticiden diğerine güvenli bir şekilde aktarmaktır. Bu noktadan noktaya bağlantıların her biri, bir I2P tünelinde bir atlama içerir. Daha yüksek katmanlı I2P iletişim kuralları, I2P hedefleri arasında uçtan uca Garlic iletileri aktarmak için bu noktadan noktaya bağlantılar üzerinden çalışır.
Bir UDP taşıyıcısını tasarlamak, TCP iletişim kurallarında bulunmayan benzersiz ve karmaşık zorluklar sunar. Bir UDP iletişim kuralı, adres sahtekarlığının neden olduğu güvenlik sorunlarını ele almalı ve kendi tıkanıklık denetimini uygulamalıdır. Ek olarak, tüm iletilerin ağ yolunun en büyük paket boyutuna (MTU) sığacak şekilde parçalanması ve alıcı tarafından yeniden birleştirilmesi gerekir.
Öncelikle NTCP2, SSU ve akış iletişim kurallarımızla ilgili önceki deneyimlerimize büyük ölçüde güvendik. Ardından, son zamanlarda geliştirilen iki UDP iletişim kuralını dikkatlice inceledik ve bunlardan büyük ölçüde ödünç aldık:
Ülke düzeyinde güvenlik duvarları gibi yol saldırganları tarafından iletişim kuralı sınıflandırması ve engelleme, bu iletişim kuralları için tehdit modelinin açık bir parçası değildir. Ancak, misyonumuz dünyanın her yerindeki risk altındaki kullanıcılara anonim ve engellemeye dirençli bir iletişim sistemi sağlamak olduğundan, I2P tehdit modelinin önemli bir parçasıdır. Bu nedenle, tasarım çalışmalarımızın çoğu, NTCP2 ve SSU çalışmalarından alınan dersleri QUIC ve WireGuard tarafından desteklenen özellikler ve güvenlikle birleştirmeyi içeriyordu.
QUIC uygulamasının aksine, I2P taşıyıcı iletişim kuralları eşler arasındadır ve tanımlanmış bir sunucu/istemci ilişkisi yoktur. Kimlikler ve herkese açık anahtarlar, I2P ağ veri tabanında yayınlanır ve el sıkışma, katılımcıların bu kimliklerle kimlik doğrulamasını yapmalıdır.
SSU2 tasarımının tam bir özeti bu makalenin kapsamı dışındadır. Ancak, aşağıda iletişim kuralının çeşitli özelliklerini vurgulayarak UDP iletişim kuralı tasarımının ve tehdit modellerinin zorluklarını vurguladık.
DoS direnci
UDP iletişim kuralları özellikle hizmet reddi (DoS) saldırılarına karşı savunmasızdır. Saldırgan, bir kurbana sahte kaynak adresleri içeren çok sayıda paket göndererek, kurbanın yanıt vermek için büyük miktarlarda işlemci ve bant genişliği harcamasına neden olabilir. SSU2 iletişim kuralında, belirteç kavramı için QUIC ve WireGuard uygulamalarından esinlendik. Bir yöneltici, geçerli bir belirteci olmayan bir bağlantı isteği aldığında, pahalı bir Diffie-Hellman şifreleme işlemi gerçekleştirmez. Ucuz şifreleme işlemleri kullanarak geçerli bir belirteç içeren küçük bir ileti ile yanıt verir. Başlatıcı bir adres sahteciliği yapmıyorsa, belirteci alır ve el sıkışma normal şekilde ilerleyebilir. Böylece, sahte adresler kullanan herhangi bir trafik artırma saldırısı önlenmiş olur.
Üst bilgi şifrelemesi
SSU2 paket üst bilgileri WireGuard iletişim kuralına benzer ve QUIC üzerindeki gibi şifrelenir.
Üst bilgilerin şifrelenmesi, trafiğin sınıflandırılmasında, iletişim kuralının tanımlanmasında ve sansürün aşılmasında hayati önem taşır. Ayrıca üst bilgilerde saldırganların işine yarayacak ve paket içeriğinin şifresinin çözülmesini sağlayabilecek bilgiler de bulunur. Devlet düzeyindeki güvenlik duvarları çoğunlukla sınıflandırmaya ve TCP trafiğinin olası bozulmasına odaklanırken, QUIC ve WireGuard gibi yeni UDP iletişim kurallarının zorluklarını karşılamak için UDP yeteneklerinin artacağını öngörüyoruz. SSU2 üst bilgilerinin yeterince gizlenmiş ve/veya şifrelenmiş olmasını sağlamak, ele aldığımız ilk görevdi.
Üst bilgiler, QUIC RFC-9001 ve Nonces are Noticed benzeri ChaCha20 kullanılarak bilinen anahtarlardan hesaplanan verilerle XORing tarafından bir üst bilgi koruma şeması kullanılarak şifrelenir. Böylece, şifrelenmiş üst bilgilerin herhangi bir ayırt edilebilir model olmadan rastgele görünmesi sağlanır.
QUIC RFC-9001 üst bilgi koruma şemasının aksine, hedef ve kaynak bağlantı kimlikleri ile birlikte tüm üst bilgilerin tüm parçaları şifrelenir. QUIC RFC-9001 ve Nonces are Noticed <https://eprint.iacr.org/2019/624.pdf>`, öncelikle üst bilginin "kritik" kısmını, yani paket numarasını (ChaCha20 nonce) şifrelemeye odaklanır. Oturum kimliğini şifrelemek, gelen paket sınıflandırmasını biraz daha karmaşık hale getirirken, bazı saldırıları daha da zorlaştırır.
Tehdit modelimiz, engellemeyi yapan güvenlik duvarlarının I2P ağ veri tabanına gerçek zamanlı erişimi olmadığını varsayar. Üst bilgiler, ağ veri tabanında yayınlanan ya da daha sonra hesaplanan bilinen anahtarlarla şifrelenir. El sıkışma aşamasında, şifre çözme anahtarı herkese açık olduğundan ve anahtar ve nonce yeniden kullanıldığından, üst bilgi şifrelemesi yalnızca trafik sınıflandırma direnci içindir. Bu aşamadaki başlık şifreleme, etkili bir şekilde yalnızca gizlemedir. Üst bilgi şifrelemesinin, ek koruma için el sıkışma sırasında X25519 kısa ömürlü anahtarlarını gizlemek için de kullanıldığını unutmayın.
Veri aşamasında, yalnızca oturum kimliği alanı ağ veri tabanından bir anahtarla şifrelenir. Kritik olmayan alan, anlaşmadan türetilen bir anahtarla şifrelenir. Bu nedenle ağ veri tabanına erişimi olan bir tarafça bile şifresi çözülemeyebilir.
Paket numaralandırma, onaylar ve yeniden aktarım
SSU2, güvenlik ve verimlilik açısından SSU iletişim kuralına göre çeşitli iyileştirmeler içerir. Paket numarası AEAD nonce değeridir ve her paket numarası yalnızca bir kez kullanılır. Onaylar (ACK), paket numaraları içindir, I2NP ileti numaraları veya parçaları değildir. ACK iletileri, QUIC üzerinden uyarlanmıştır. Çok verimli ve kompakt bir biçimde gönderilir. SSU benzeri bir anında onay isteği mekanizması desteklenir. Uygulama esnekliği ve iyileştirme sağlamak için tıkanıklık denetimi, pencereleme, zamanlayıcılar ve yeniden aktarım stratejileri tam olarak belirtilmemiştir. Ancak TCP için genel RFC rehberliği alınmıştır. Zamanlayıcılar için ek algoritmalar, I2P akış iletişim kuralı ve SSU uygulamalarından uyarlanmıştır.
Bağlantı birleştirilmesi
UDP iletişim kuralları, NAT yeniden bağlama, IPv6 geçici adres değişiklikleri ve mobil aygıt adresi değişikliklerinin neden olduğu eş bağlantı noktası ve IP değişikliklerinden kaynaklanan kırılmalara karşı duyarlıdır. Önceki SSU uygulamaları, bu durumların bazılarını karmaşık ve kırılgan buluşsal yöntemlerle ele almaya çalıştı. SSU2, eş adres değişikliklerini algılamak, doğrulamak ve bağlantıları eşin yeni adresiyle veri kaybı olmadan birleştimek için resmi, belgelenmiş bir süreç sağlar. Saldırganlar tarafından paket enjeksiyonu ya da değiştirilmesinden kaynaklanan birleştirmeyi önler. Bağlantı birleştirmeyi uygulamaya yönelik iletişim kuralı, QUIC üzerinden uyarlandı ve basitleştirildi.
Eş sınaması ve aktarım
SSU, I2NP iletilerinin aktarılmasının yanında iki önemli hizmet sunar. İlk olarak, yerel IP adresini belirlemek, ağ adresi çevirisi (NAT) yapan ve güvenlik duvarı aygtılarının varlığını algılamak için işbirliğine dayalı eş sınaması şemasını destekler. Bu algılama, yöneltirici durumunu güncellemek, bu durumu diğer aktarımlarla paylaşmak ve geçerli adresi ve durumu I2P ağ veri tabanında yayınlamak için kullanılır. İkinci olarak, tüm yönelticilerin gelen bağlantıları kabul edebilmesi için yönelticilerin güvenlik duvarlarını aşmak için işbirliği yaptığı Aktarma işlemini destekler. Bu iki hizmet, aslında SSU aktarımı içindeki alt iletişim kurallarıdır.
SSU2, tasarım ve uygulamaya daha fazla yanıt kodu, şifreleme, kimlik doğrulama ve kısıtlamalar eklemek için bu hizmetleri geliştirir ve bu hizmetlerin güvenliğini ve güvenilirliğini artırır.
Başarım
I2P ağı, çeşitli yönelticilerin karmaşık bir karışımıdır. Yüksek başarımlı veri merkezi bilgisayarlarından Raspberry Pi aygıtlarından Android telefonlara kadar tüm dünyada bulunan donanım üzerinde çalışan iki temel uygulama vardır. Yönelticiler hem TCP hem de UDP aktarımlarını kullanır. SSU2 iyileştirmeleri önemli olsa da, bunların yerel olarak veya uçtan uca aktarım hızlarında kullanıcı tarafından fark edilmesini beklemiyoruz. Uçtan uca aktarımlar, her biri SSU2, NTCP2 ya da SSU olabilen 13 diğer yönelticinin ve 14 noktadan noktaya aktarım bağlantısının başarımına bağlıdır.
In the live network, latency and packet loss vary widely. Even in a test setup, performance depends on configured latency and packet loss. The i2pd project reports that maximum transfer rates for SSU2 were over 3 times faster than SSU in some tests. However, they completely redesigned their SSU code for SSU2 as their previous implementation was rather poor. The Java I2P project does not expect that their SSU2 implementation will be any faster than SSU.
Raspberry Pis ve OpenWRT gibi kaynakları çok az olan platformlar, SSU iletişim kuralının kaldırılmasıyla önemli gelişmeler sağlayabilir. ElGamal son derece yavaştır ve bu platformlarda başarımı sınırlar.
SSU2 veri aşaması şifrelemesi, SSU için MD5 HMAC kullanan AES ile karşılaştırıldığında ChaCha20/Poly1305 kullanır. Her ikisi de çok hızlıdır. Bu değişikliğin başarımı ölçülebilir şekilde etkilemesi beklenmiyor.
SSU2 ile SSU karşılaştırması için öngörülen bazı önemli iyileştirmeler şunlardır:
- 40% reduction in total handshake packet size
- 50% or more reduction in handshake CPU
- 90% or more reduction in ACK overhead
- 50% reduction in packet fragmentation
- 10% reduction in data phase overhead
Geçiş planı
I2P, hem ağ kararlılığını sağlamak hem de eski yönelticilerin kullanışlı ve güvenli olmayı sürdürmesini sağlamak için geriye dönük uyumluluğu korumaya çalışır. Bununla birlikte, uyumluluk kod karmaşıklığını ve bakım gereksinimlerini artırdığından bazı sınırlar vardır.
Java I2P ve i2pd projelerinin ikisi de, 2022 Kasım ayının sonlarında çıkacak sonraki sürümlerinde (2.0.0 ve 2.44.0) varsayılan olarak SSU2 iletişim kuralını kullanacak. Ancak, SSU iletişim kuralını devre dışı bırakma planları farklı. I2pd üzerinde, SSU iletişim kuralı hemen devre dışı bırakılacak çünkü SSU2, SSU uygulamasına göre çok büyük bir gelişme sağlıyor. Java I2P üzerinde, kademeli bir geçiş sağlamak ve eski yönelticilere yükseltme için zaman tanımak için 2023 ortalarında SSU iletişim kuralının devre dışı bırakılması planlanıyor. Java I2P 0.9.36 ve i2pd 2.20.0 (2018) NTCP2 destekleyen ilk sürümler olduğundan, bundan daha eski yönelticiler, uyumlu taşıyıcıları olmadığından, sürümü 2.44.0 ya da üzerinde olan i2pd yönelticileri ile bağlantı kuramayacak.
Özet
I2P kurucuları, şifreleme algoritmaları ve iletişim kuralları için birkaç seçim yapmak zorunda kaldı. Bu seçeneklerden bazıları diğerlerinden daha iyiydi ama yirmi yıl sonra çoğu yaşını gösteriyor. Elbette bu günün geleceğini biliyorduk ve son on yılı şifreleme geliştirmelerini planlayıp uygulayarak geçirdik. Eskilerin dediği gibi, yolda giderken otomobilin lastiklerini değiştirmek gibi geriye dönük uyumluluğu korurken bazı şeyleri güncellemek ve büyük değişiklikler yapmak oldukça zordur.
SSU2, uzun güncelleme yolumuzda geliştirilen son ve en karmaşık iletişim kuralıydı UDP tarafında çok zorlu bir dizi varsayım ve tehdit modeli vardır. İlk olarak, Noise iletişim kurallarının üç çeşidini daha tasarladık ve kullanıma sunduk. Bu sırada güvenlik ve iletişim kuralı tasarımı üzerine deneyim ve daha derin bir anlayış kazandık. Son olarak, diğer modern UDP iletişim kurallarını - WireGuard ve QUIC - araştırmamız ve tam olarak anlamamız gerekiyordu. Bu iletişim kurallarının geliştiricileri bizim tüm sorunlarımızı çözemese de, UDP tehdit modellerine ilişkin belgeleri ve tasarlanmış karşı önlemleri ile bizim de işimizi tamamlayabileceğimiz konusunda güven kazanmamızı sağladı. Kullanıcılarımızı güvende tutmak için güvendiğimiz tüm kriptografinin yaratıcılarının yanı sıra onlara da teşekkür ediyoruz.
2022 Kasım ayının sonlarına doğru planlanan i2pd ve Java I2P sürümlerinde SSU2 iletişim kuralının etkinleştirilmesini bekleyin. Güncelleme iyi giderse, hiç kimse bir şey fark etmeyecek. Başarım kazanımları önemli olsa da büyük olasılıkla çoğu insan için ölçülebilir bir fark olmayacak.
Her zamanki gibi, yayınlandığında yeni sürüme güncellemeniz önerilir. Güvenliği korumanın ve ağa yardımcı olmanın en iyi yolu güncel sürümü kullanmaktır.