I2P

I2P - Anonim Ağ I2PAndroid-console-0.9.20.png görüntüsünün açıklaması. Bilgi
İlk versiyon 2003
Son sürüm 0.9.45 (25 Şubat 2020)
Depozito github.com/i2p/i2p.i2p , [cvs: //cvs.i2p.net/cvsroot/ cvs: //cvs.i2p.net/cvsroot] ve [cvs: //cvs.invisiblenet.net: / cvsroot / freeweb cvs: //cvs.invisiblenet.net: / cvsroot / freeweb]
Kalite güvencesi Sürekli entegrasyon
Proje durumu Aktif
Yazılmış Java
İşletim sistemi Microsoft Windows , Linux , macOS , OpenBSD , FreeBSD ve Android
Çevre bağımsız
Diller Fransızca, İngilizce, İspanyolca ve diğerleri
Tür P2P istemcisi
Dağıtım politikası Bedava
Lisans BSD lisansı , GNU Genel Kamu Lisansı , MIT lisansı ve telif hakkı sahibi tarafından kamuya açık hale getirilen ( d )
İnternet sitesi geti2p.net

I2P ( "  Görünmez İnternet Projesi  ") bir olan anonim ağ basit sağlayan ağ katmanı yazılımı ait ağ bindirme tipi , uygulamalar birbirine anonim ve güvenli bilgi göndermek için kullanabilirsiniz. İletişim uçtan uca şifrelenmiştir .

Bir mesaj göndermek için toplamda dört şifreleme katmanı kullanılır. Anonimlik, bilgi alışverişi yapmak isteyen eşler  arasındaki doğrudan bağlantıların kaldırılmasını içeren " karma ağ " kavramı ile sağlanır  . Bunun yerine, trafik bir dizi başka eşten geçer, böylece bir gözlemci, ilk gönderenin kim olduğunu ve bilginin son alıcısının kim olduğunu belirleyemez. Her bir akran, kendi savunmasında, verilerin kendileri için tasarlanmadığını söyleyebilir.

İnternette bir alıcı, bir IP adresi ve bir bağlantı noktası ile tanımlanır . Bu IP adresi fiziksel bir arayüze ( modem veya yönlendirici , sunucu vb.) Karşılık gelir . Ancak I2P'de, şifreleme anahtarı olan bir alıcı tanımlıyoruz .

IP adreslemenin aksine , bu anahtara sahip makineyi belirleyemezsiniz. Anahtar halka açık olduğundan, anahtar ile ona sahip olan arabirim arasındaki ilişki açıklanmaz.

Teknik konsept

"Hedefler" (örnekler: Web sunucusu, IRC, oyun,  vb. ) Bir çift asimetrik anahtar (özel anahtar / genel anahtar çifti) tarafından tanımlanan kriptografik tanımlayıcılardır (IP adresleri değil). Hedef, bir ana bilgisayarın tanımlayıcısı ve katılacak bağlantı noktası numarası tarafından belirlenir. Bu bir olabilir POP sunucu , bir SMTP sunucusu , bir IRC sunucusu , bir web sunucusu , bir SVN sunucusu , bir haber grubu sunucusu ,  vb

Yönlendirici yapılar tüneller gelen ve giden mesajları taşımak. Bir tünel oluşturmak için yönlendirici, bağlı olduğu eşlerden birinin bu tüneli oluşturmasını ister. Bu akran daha sonra başka bir akranla temasa geçerek onlardan tüneli oluşturan akranlar zincirindeki bir sonraki halka olmasını isteyecektir. Kriptografik bir hedefe - ve dolayısıyla bir eşe - ulaşmak için, hangi tünel "çıkışının" ele alınacağını bilmek gerekir, bu sorunu çözmek için, ağa belirli bir yönlendirici sınıfının eklenmiş olması gerekir. Bunlar "  Su Baskını  " dır . Bunlar, tüneller ve hedefler arasındaki bağlantıların bir listesini tutar. Bu şekilde, bir yönlendirici bir hedefe ulaşmak istediğinde, Floodfill'e o hedefle iletişim kurmak için hangi tünele gitmesi gerektiğini sorar . Dolayısıyla, ağ büyüdükçe Floodfill yönlendiricilerinin sayısı artacaktır. Her şey otomatiktir, eğer ağ yeni Floodfills'e ihtiyaç duyarsa , hız, kararlılık ve bağlantı sayısı koşullarını karşılayan yönlendiriciler otomatik olarak bu hale gelecektir.

Ağın tüm yönlendiricileri, diğer yönlendiricilerin mesajlarının taşınmasına katılır ve böylece oluşturduğunuz trafiği ağın sabit akışında boğarak ayırt edilemez hale getirmeyi mümkün kılar . Bir saldırganın, verilerin gerçekten sizin için mi yoksa sadece sizden mi geçtiğini belirlemesi çok karmaşıktır.

I2P akciğeri I2PTunnel'dir , gelen ve giden tünelleri yönetir. Özellikle, kendi eep sitenizi ve diğerini Jabber veya POP3 sunucunuzu barındırmak için makinenizin 80 numaralı bağlantı noktasına işaret eden bir HTTP tüneli olarak kendinizinkini oluşturabilirsiniz .

Başvurular

Olduğu gibi VPN'lere veya darknets , I2P sömüren tünel , bir “ağ içinde ağ” sağlamaktır. Yazılım çoğu aksine eşe eş dosya paylaşımı içine anonim p2p , I2P özerk yönetimine odaklanan ağa ve sağlanması taşıma katmanının anonim. Tek başına kullanıldığında, I2P bulunabilir hizmetleri sağlamaz Internet ( e-posta , indir , web ,  vb ). Bununla birlikte, I2P, ağ tarafından sunulan gizlilik ve anonimleştirme niteliklerini korurken bazı ortak hizmetleri bulmak için birkaç uygulama ile birlikte gelir.

Bu nedenle, ağı kullanan uygulamaların geliştirilmesi, I2P projesini değiştirmek zorunda kalmadan mümkündür. Bu şekilde, İnternette bulduğumuzla aynı protokolleri kullanan I2P ağını kullanan uygulamaları görebiliriz (örneğin: iMule ).

IRC

I2P orijinal olarak anonim bir IRC ağı içerir : 127.0.0.1 sunucu adresine ve 6668 numaralı bağlantı noktasına işaret eden IRC istemci yazılımını (ne olursa olsun) kullanarak ona bağlanabilirsiniz .

En çok ziyaret edilen kanallara örnekler: # i2p-fr , # i2p-help , # i2p , #anonops ( Anonim ).

Orijinal tedarik edildi

İsteğe bağlı

Canlı Dosya Paylaşımı

Geliştiriciler için

I2P'ye ( SDK , yönlendirici vb.) Dayalı yeni uygulamalar gibi yazılımların geliştirilmesini kolaylaştırmak için bir API de sağlanmıştır .

I2PTunnel

İletişim yönlendirme

Muhabirler kendilerini doğrudan ifşa etmezler. Her biri, bir I2PTunnel oluşturmak için aracı olarak bir dizi I2P yönlendiricisi kullanır. Bu tüneller tek yönlüdür ve hem alıcıyı hem de göndereni maskelemek için kullanılır. Bu nedenle, I2PTunnel'in iki kategorisini ayırt edebiliriz:

Ağın bir üyesiyle iletişim kurmak için , alıcı tarafından kullanıma sunulan tünellerin girişlerine karşılık gelen I2P yönlendiricilerini bulmak gerekir . Bu arama, Ağ Veritabanı kullanılarak yapılır .

Dolaylı olarak anonimlik

Bir şifreleme onun farkını işaretlemek için diş sarımsak denilen, TOR soğan şifreleme , I2PTunnels geçen mesajlar kullanılır. Bu şifreleme şunları sağlar:

  1. gizlilik mesajının
  2. ve aracıların yalnızca tünelden önceki ve sonraki yönlendiricileri bilebilir .

Nokta 1, mesajda yer alan bilgilerin muhabirleri tanımlamak için kullanılmasını engeller. 2. Nokta, aracıların tüneldeki konumlarını bilmelerini ve dolayısıyla bu aracıların muhabir ve aracılar arasında ayrım yapmasını engellemektedir.

Tünel boyutu ve anonimlik kalitesi

I2PTunnels'in boyutu, onları oluşturan kişi tarafından seçilir. Anonimliği koruyan tüm mekanizmalar üzerinde önemli bir etkiye sahiptir.

Aracısız bir tünel , muhabirleri ve aracıları ağın içinden ayırt etmek mümkün olmadığından koruma sağlar; Bir makul reddi onları korur. Bununla birlikte, ağın dışındaki ve böyle bir tünelin trafiğini denetleyecek kaynaklara sahip bir saldırgan, istatistiksel analiz yoluyla saldırı gerçekleştirebilir.

Aracılar müdahale ettiğinde, istatistiksel analiz yoluyla bir saldırı düzenlemeden önce tüm aracılar tehlikeye atılmalıdır. Trafik karıştırma mekanizması bu sorunu giderir.

I2PTunnel'in sınırlamaları ve kısıtlamaları

I2PTunnel ağ içinde anonimliğin korunmasında göreceli olarak etkili ise, tek başına I2P ağının global bir görüşüne sahip olanlar için artık yeterli değildir. Nerede başladığını ve nerede durduğunu görmek için trafiği gözlemlemek yeterli olacaktır.

Bir tünel , I2P veya diğer, hızın azalmasına ve gecikmenin artmasına neden olur . Tünellerin çoğalması, kullanılmayan akışın kullanımını artırmayı mümkün kılar.

Tünel oluşturma

İletişim kurmak için, bir muhabir , anonimliğini kaldırmak zorunda kalmadan bir tünel oluşturmalıdır (mesajını akranlarından geçirmek için). Tünelin yaratıcısı önce tüneline katılma potansiyeli olan akranları seçmelidir. Ardından, her birinin yanıtlarıyla oluşturucuya dönmeden önce seçilen eşlerden geçecek bir istek isteği (TunnelBuildMessage) oluşturur.

Akran seçimi

Akran seçimi belirli kriterlere göre yapılır. Bu kriterler, diğerlerinin yanı sıra yanıt sürelerini ve bant genişliklerini içerir. Bu seçim performans, güvenilirlik veya kullanıcı tarafından aranan anonimlik derecesine göre yapılır.

TunnelBuildMessage'ı Oluşturma

TunnelBuildMessage tarafından inşa bir mesajdır tünel yaratıcısı . Tünele girip çıkmamayı kabul eden akranların cevaplarını listelemek için kullanılacaktır. Tüm cevaplar olumlu ise tünel oluşturulur. Bu mesaj sekiz kayıt sayfasından oluşur. Bir kayıt formu, bir akranın katılım talebini içerir. Bu nedenle bir tünelin maksimum sekiz eşi olabilir.

bytes 0-3: tunnel ID to receive messages as bytes 4-35: local router identity hash bytes 36-39: next tunnel ID bytes 40-71: next router identity hash bytes 72-103: AES-256 tunnel layer key bytes 104-135: AES-256 tunnel IV key bytes 136-167: AES-256 reply key bytes 168-183: reply IV byte 184: flags bytes 185-188: request time (in hours since the epoch) bytes 189-192: next message ID bytes 193-222: uninterpreted / random padding

Kayıt formunun açıklaması

AES-256 tünel katmanı anahtarı ve AES -256 tünel IV anahtarı  : tünelde inşa edilmişse işlemlerde kullanılacak şifreleme anahtarları .

AES-256 yanıt IV ve AES-256 yanıt anahtarı  : yanıt şifreleme anahtarı ve başlatma vektörü , eşin mesajı iletmeden önce yanıtını şifrelemesine izin verir.

sonraki mesaj kimliği  : tüneldeki bir sonraki eş . Cevap verdikten sonra mesajın gönderilmesi gereken kişi.

Diğer seçenekler, mesajın bütünlüğünü kontrol etmenize ve ayrıca yanıta ek bilgi eklemenize izin verir.

Göndermeye hazırlanıyor

TunnelBuildMessage'ı göndermeden önce , tünel oluşturucu bu mesajı art arda iki şekilde şifreler. By asimetrik şifreleme o zamana kadar, ağ üzerinde gizli bilgi tutar simetrik şifreleme mesajı oluşturan tarafından belirlenen sırayla geçti sağlar:

Asimetrik şifreleme  : Her kayıt formu, ilgili eşin genel anahtarıyla şifrelenir , böylece her bir eş yalnızca kendi kayıt formuna erişir.

Simetrik şifreleme  : Mesaj daha sonra, dosyayı yalnızca uygun zamanda açığa çıkarmak için birkaç katman tarafından şifrelenir. Şifreleme emsal onun yanıtı ile mesaj şifreler zaman, bir sonraki eş kayıt kartta tarafından deşifre edilebilir şekilde gerçekleşir. Bunu, birinden diğerine her iletimde kaldırılmış bir katmana sahip bir soğan olarak düşünebilirsiniz. Örneğin, üç eş A, B ve C'ye sahip bir tünel:

Tünelin (C) son eşinin kaydı, B'nin yanıtını şifrelediğinde C'nin kaydının C tarafından deşifre edilebileceği şekilde, ikinciden sonuncuya (B) cevap anahtarı ile şifrelenir. B ve C, A anahtarıyla şifrelenir, böylece B yalnızca A'dan sonra okunabilir.

TunnelBuildMessage için eş işleme Dosya Kurtarma

Bir eş TunnelBuildMessage aldığında , simetrik olarak şifrelenmemiş yalnızca bir kayıt kartı vardır. Tünele katılma talebini geri almak için bu dosyanın şifresini kendi özel anahtarıyla çözer .

Katılım seçimi

Dosya deşifre edildiğinde, tünele katılıp katılmayarak dosyanın içeriğini yanıtıyla değiştirir . Reddederse, reddedilme sebebini verir.

Mesaj şifreleme

Yanıt oluşturulduktan ve kayıt formuna yazıldıktan sonra, talepte sağlanan anahtarla kayıt formunu simetrik olarak şifreler. Daha sonra diğer kayıt kartlarını şifreler. Diğer dosyaların şifrelenmesi , simetrik bir şifreleme katmanının kaldırılması sonucunu doğurur , bu nedenle bir sonraki alıcının dosyası artık simetrik şifrelemeye sahip değildir. Alıcı tarafından deşifre edilmeye hazır.

Bir sonrakine git

Tüneli oluştururken eş tarafından gerçekleştirilen son işlem , TunnelBuildMessage'ı bir sonraki alıcıya iletmektir . Bir sonraki alıcı, talep sırasında kayıt formunda belirtilir.

Tünelin oluşturulmasına katılan son akran, tünelin yaratıcısıdır. Yanıtları almak için TunnelBuildMessage oluşturulurken gerçekleştirilen simetrik şifrelemenin tersi sırayla formların şifresini çözer .

Yönlendirme mekanizması

I2P, yönlendirme sorununa anonimlikten, ağ kalitesinden (gecikme ve aktarım hızı) ve ağın tamamında yapılan inkar saldırılarından ödün vermemeye çalışarak yanıt verir .

NetdB

Kavram basit ama önemli olan, (için NetdB ağ veritabanı ) bir olduğu veritabanı tanımlayıcıları içeren yönlendiriciler içinde ağa . Bu veritabanı dağıtılır ve geleneksel bir yönlendiricideki bir yönlendirme tablosuna benzer (burada I2P yönlendiricilerinin tanımlama anahtarlarını içermesi dışında). O kullanılan DHT den Kademlia'da bir çare çözüm olarak tabanında ancak bu terk edildi.

Taşkın yönlendiriciler

Paylaşılması için meta veri gelen , bu başlatılmış akran floodfill (az sayıda yönlendirici bir türevinin kullanılarak I2P bu algoritmayı kullanır, diğer Kademlia ama artık hemen kullanılır). Bir floodfill eşi , ağ veritabanına yeni bir şifreleme anahtarı girdiğinde , rastgele seçilen başka bir floodfill eşi bu anahtarı tekrar ister, o zaman eğer geçerliyse, eş ilkine yaklaşır ve anahtarı yeniden yayınlar . Sonunda, floodfill eşleri , veritabanını sürekli sorgulayarak ve yerel belleklerinde geçerli anahtarların bir kopyasını oluşturarak anahtarlarını paylaşırlar , bu da floodfill eşlerinin birbirine olan yakınlığının değişmesine neden olur (eşler yaklaşır). Veritabanında depolanan tüm veriler, depolanan öğenin imzasını doğrulayarak kendi kendini doğrulamaktadır. Veriler bir zaman damgası ile doğrulanır , yönlendiriciler bir SNTP sunucusunu (pool.ntp.org) sorgulayarak saati düzenli olarak kontrol eder ve taşıma katmanındaki tutarsızlıkları tespit eder (saldırıları önlemek için). Basitçe söylemek gerekirse, floodfill yönlendiricileri ağda anahtar eşleştirme, bilgi yönlendirme ve veri aktarımı sağlar (3'ten 5'e kadar Floodfill yönlendiricileri teorik olarak ağdaki 10.000 yönlendiriciden oluşan bir setin düzgün çalışmasını sağlar). Kullanılan algoritma tam bir algoritma olmayıp, uygulamayı zorlamadan I2P ihtiyacını karşılayacak şekilde ayarlanmıştır .

Kademlia'nın Terk Edilmesi

Yönlendiriciler arasında meta veri alışverişi için Kademlia'nın algoritmaları kullanıldı . Bu çözüm , algoritmayı kurmanın zorlukları nedeniyle Terk edildi . Algoritma , yönlendiricilerin varsayamayacağı minimum kaynak (bilgisayar ve işlemci ) gerektiriyordu (kağıt üzerinde iyi fikir, ancak bu uygulamada değil).

Yönlendirici bilgileri

Yönlendirici üzerinde mesaj göndermek için esastır sadece bilgileri depolar ağına . Bunlar kimliğidir ( 2048 bit genel ElGamal anahtarı , genel DSA anahtarı ve ardından sertifika ) ve adresler ( IP adresleri , bağlantı noktaları ve yayınlama seçenekleri kümesi). Bu yapının anahtarı, yönlendiricilerin kimliğinin bir SHA256'sıdır. I2P'nin sürümü 1.0 sürümünde olmadığı sürece, yayın seçenekleri hata ayıklama verileridir .

Belirli bir yönlendirici için ağı arama

Böyle bir olarak dağıtılmış sistemin , bilgi arayışı bir bir arama gibi görünebilir DHT (örneğin taşınan bu gibi geleneksel ağlarda içinde P2P ). Ancak ağın uçucu olduğu ve sürekli geliştiği göz önüne alındığında (10 dakikalık tünel geçerliliği süresi göz önüne alındığında ), yinelemeli arama, bilginin en yakın yönlendiricide değil, yönlendiricilerde olması gerçeğiyle kolaylaştırılır . SHA'ya yakın bir tanımlama anahtarına sahip olmak 256 (yönlendiricinin kimliği + YYYYMMDD biçiminde bir zaman damgası), istenen bilgilere sahip bir dizi yönlendiriciye sahip olmayı mümkün kılar. Bu aynı zamanda ağdaki bilgi yerinin yenilenmesine ve saldırılara karşı korumaya izin verir (çünkü bu ilkeyle bir makineye saldırmak için bilginin konumu her gün değişir ve saldırganı her seferinde saldırısını yeniden oluşturmaya zorlar.). Araştırma verileri hassas olduğundan, veri tünellerinden farklı olan keşif tünellerinden geçer.

Yükün daldırılması

Yükün daldırılması, bir I2P yönlendiricisinin kullanıcısı tarafından fiilen gönderilen veya alınan verilerin gizlenmesini mümkün kılar. Ağa genel bir bakış olan harici bir saldırgan karşısında anonimliğin korunması bu olduğundan, daldırma çok önemlidir.

Bir ağ yönlendiricisinden saldırılar

Tasarımında, geliştiriciler saldırıları hesaba katar ve kullanıcıların ve ağın korunmasını sağlamak için bunları listeler (örneğin, taşkın yönlendiricilerinin aşırı yüklenmesini önlemek için ).

Notlar ve referanslar

  1. "  https://staas.home.xs4all.nl/t/swtr/documents/wt2015_i2p.pdf  "
  2. "  Anonim ağların karşılaştırması  " ( 20 Aralık 2009'da erişildi )
  3. http://i2pbote.i2p.us
  4. http://wiki.vuze.com/w/I2P_HowTo
  5. (in) I2P Team, "  Tunnel Routing Nasıl Çalışır?  " ( 18 Aralık 2009'da erişildi )
  6. "  TOR, THE ENCRYPTED FACE OF THE INTERNET - CAMILLE BOSQUÉ  " , www.camillebosque.com (erişim tarihi 10 Nisan 2016 )
  7. (in) I2P Team "  I2P's Threat Model - Predecessor attack  " ( 18 Aralık 2009'da erişildi )
  8. (in) Matta K. Wright , Micah Adler , Brian Neil Levine ve Kil Shields , Anonim Haberleşme Sistemleri Karşı Pasif-Günlüğü Saldırıları ,Haziran 2007, 34  p. ( çevrimiçi okuyun )
  9. "  Tünel Uygulaması  "

Ekler

İlgili Makaleler

  • I2P'ye bazı düğümleri nitelendirmesi için ilham veren Flood fill (İngilizce: Floodfill ) terimi
  • Anonim P2P (bir yazılım listesi içerir)
  • Freenet  : tamamlayıcı ağ.
  • GNUnet  : dosya paylaşımıyla anonim P2P ve F2F ağı. Çok işlevli ve çok platformlu yazılım. ( C ile yazılmış GNU Projesi ).

Dış bağlantılar