Tag Archives: java

I2P’ye Giriş

Bir başka anonim ağ, I2P. Bir başka giriş yazısı, I2P’ye Giriş. Eksik olduğunu biliyorum. Fakat iş görmeyecek, anlaşılmayan noktaları gideremeyecek kadar kötü de değil.

Yeni 5651 sayılı kanun tasarısı 5 Şubat 2014 tarihinde kabul edildi. Ben de Tor’a Giriş yazısı gibi bir I2P’ye Giriş yazısı hazırlamaktaydım. Fakat, hem gündemin yoğlunluğu hem de kendi yoğunluğum nedeniyle bunu hep arka plana atıyordum. Şimdi bunu acilen yayımlamak şart oldu. Teknik olarak yazı biraz eksik. İlerleyen süre içerisinde bunu gidereceğim. Öte yandan, yazı içerik olarak kafanızdaki soru işaretlerini giderecek düzeyde ve kullanım açısından pek bir eksik içermiyor. Yazıyı okurken ve I2P kullanırken şunu aklınızdan hiç çıkarmayın; “I2P kullanan bir kişi gizli değildir. Gizli olan şey tıpkı router’ın (yönlendirici) bağlı olduğu belirli bir hedef gibi kullanıcının bu anonim ağda ne yaptığına dair bilgidir.

I2P; açık kaynak, P2P anonim bir ağ olup,  basit bir katman oluşturarak çeşitli araçların birbirleriyle güvenli bir iletişim kurmalarını sağlayan özgür bir yazılımdır. I2P’de anonim olarak e-posta servisini kullanabilir, sörf yapabilir, blog ve forum hizmetlerinden yararlanabilir, sitenizi yayımlayabilir,  anlık mesajlaşma yapabilir (IRC), dosya paylaşabilir veya yükleyebilirsiniz. Tüm veriler birkaç katmandan oluşan şifreleme ile paketlenir ve tüneller ile iletilir. Bu yüzden I2P ile ilgili bilinmesi gereken en önemli noktalardan biri “tünel” kavramıdır. I2P’deki bir tünel yönlendiriciler listesinden seçilen bir yoldur. Katmanlı şifreleme kullanılır ve böylece yönlendiricilerden herbiri sadece bir katmanın şifresini çözer. Şifre çözümü sonunda elde edilen bilgi, şifreli bilginin iletileceği bir sonraki yönlendiricinin IP adresidir. Bununla birlikte, her tünelin bir başlama noktası (ilk router) ve bir de bitiş noktası (son router) vardır. Ayrıca, gönderilen bir mesaj sadece tek yönlüdür. Eğer bu mesaja cevap verilecekse, yeni bir tünel üzerinden yapılacaktır.

I2P’de iki çeşit tünel mevcuttur. Bunlar, tüneli oluşturan tarafından gönderilen mesajları içeren “outbound” (giden) ve mesajları almak için tünel oluşturan “inbound” (gelen)’dur. Bu iki tünelin bir araya gelmesiyle kullanıcılar birbirleriyle iletişim kurabilmektedirler. Şimdi bunu bir şema üzerinde görelim (şemalar i2p‘den alıntıdır):

net2014-02-07-200942_1920x1080_scrotÖrneğimizde Ayşe Ali ile buluşmak istemektedir. Bunun için de ona “Bugün buluşalım mı?” diye bir mesaj gönderecektedir. Şemada gördüğünüz gibi her giden ve gelen tünelleri (1, 2, 3, 4, 5 ve 6) 2 sıçramaya sahiptirler. Bu sıçramalar peer’ler (eşler) üzerinden gerçekleşecektir. Sıçrama sayısını Eşler bölünden ayarlayabilirsiniz. Tıpkı torrentte olduğu gibi bağlandığınız birçok eş olacaktır. Bunlar I2P’nin ağ veritabanı (network database) içinde Kademlia algortiması ile bulunur. Ayrıca, sol ana menüde ve altta Shared Clients (Paylaşılmış İstemciler)’den ayrıntılı bilgiye ulaşabilirsiniz. Ayşe, Ali’ye mesajını gönderdiği zaman pembe renkli olan giden tüneli üzerinden 3 veya 4 numaralı tünel geçidini kullanarak Ali’nin yeşil renkli gelen tüneli ile mesaj Ali’nin yerel istemcisine ulaşacaktır. Eğer, Ali bu mesaja “Evet, nerde?” diye cevap verecek olursa yeni bir tünel oluşuturulacak, bu sefer de Ali’nin pembe renkli olan giden tüneli üzerinden 1 veya 2 numaralı tünel geçiti kullanılarak Ayşe’nin yeşil renkli gelen tüneli ile yerel istemcisine ulaşacaktır. Mesajın iletimi sırasında bir katmanlı şifreleme mevcuttur. Bir de katmanlı şifreleme nasıl oluyormuş ona bakalım:

endToEndEncryptionÖrneğimizde Ayşe’den Ali’ye “Bugün buluşalım mı?” mesajının gönderildiğini söylemiştik. Birinci katmanda mesajın ilerleyeceği tüm tünel (a’dan h’ye) garlik şifreleme ile şifrelenmiştir. Ayrıca, ikinci katmanda giden tüneli (a’dan d’ye) ve gelen tünelleri (e’den h’ye) bundan bağımsız olarak AES ile şifrelenmiştir. Bununla birlikte, üçüncü katmanda iletim esnasında her sıçrama (a’dan b’ye, b’den c’ye, c’den d’ye, d’den e’ye, e’den f’ye, f’den g’ye ve g’den h’ye) da şifrelenmiş durumdadır. Bir saldırgan eğer bu mesajın içeriğini öğrenmek istiyorsa tüm bu katmanların şifreleri kırmak zorundadır. Şifreleme ile ilgili ayrıntılı bilgiye buradan ulaşabilirsiniz. Kafamıza bu kısım oturduysa artık kuruluma geçebiliriz.

  • Kurulum

I2P platform bağımsızdır. Burada anlatacağım GNU/Linux üzerinde nasıl kurulacağıdır. Kullanım olarak platform farketmiyor. Sisteminizde OpenJDK kurulu olursa iyi olur. Değilse paket yöneticinizden kuruverin. Debian/Ubuntu türevi dağıtımlar kullanıyorsanız bir terminal açın ve:

Ubuntu için;
kame ~ $ sudo apt-add-repository ppa:i2p-maintainers/i2p
kame ~ $ sudo apt-get update
kame ~ $ sudo apt-get install i2p

Debian için;
kame ~ $ sudo nano etc/apt/sources.list.d/i2p.list

Aşağıdaki repo adreslerini yapıştırıp kaydedin:

deb http://deb.i2p2.no/ stable main
deb-src http://deb.i2p2.no/ stable main

kame ~ $ sudo apt-key add debian-repo.pub
kame ~ $ sudo apt-get update
kame ~ $ sudo apt-get install i2p i2p-keyring

Elle kurmak isterseniz önce şu adrestenjar” paketini indirin ve bir terminal açın:

kame ~ $ java -jar i2pinstall_0.9.10.jar

Kurulumu gerçekleştirin. Hepsi bu kadar.

  • Kullanım

Hangi dizine kurulumu gerçekleştirdiğinizi bilmiyorum. Ben varsayılan olarak /home/kullanıcı/i2p dizini (bende kullanıcı kame) üzerinden gideceğim.Öncelikle i2p’yi çalıştıralım:

Repolardan paket olarak kurduysanız servis yöneticiniz (openrc, systemd vd.) otomatik olarak eklemiştir. Eklememiş, çalıştırmamış vs ise:

kame ~ $ sudo /etc/init.d/i2prouter start
kame ~ $ sudo systemctl start i2prouter.service

Elle kurulum yaptıysanız:

kame ~ $ cd /home/kame/i2p
kame ~ $ sh i2prouter start

2014-02-07-201005_1920x1080_scrotI2P çalışmaya başladığı zaman varsayılan tarayıcınız hangisiyse onda I2P Router Console sayfasını açacaktır. Aşağıda Local Services kısmını göreceksiniz. Buradan isterseniz Configure Language ile dilini (eksik çeviri) Türkçe yapabilirsiniz. Bizleri ilgilendiren ilk kısım ağ durumudur. Birkaç dakika içinde sizlere “OK (Tamam)“, “Firewalled (Güvenlik duvarı engeli)“, “Hidden (Gizli)” vs gibi bir şekilde geri dönecektir. Bu ana sayfadaki sol kutu içinde görebilirsiniz. Eğer uyarı alıyorsanız güvenlik duvarınızda “17193” UDP portunu açabilirsiniz.

Örneğin:

kame ~ $ iptables -A UDP -p udp -m udp --dport 17193 -j ACCEPT

Ağ durumumuz “Tamam” ise kullanım kısmını ben üç bölümde anlatacağım. Bunlar:

  1. Internete I2P üzerinden anonim olarak çıkmak ve Eepsitelere erişmek
  2. Anonim torrent kullanmak
  3. Anonim e-posta almak

Internete I2P üzerinden anonim olarak çıkmak ve Eepsitelere erişmek:

Önce, I2PTunnel (I2PTüneli) içinde tanımlı olan tünelleri başlatabilir veya durdurabilirsiniz. Http, https, IRC veya e-posta istemcisi gibi hazır tüneller göreceksiniz. Ayrıca, yeni bir tünel oluşturma işlemini de buradan yapabilirsiniz. I2P kullanımıyla ilgili detaylı bilgilere Logs (Günlük), Stats (İstatistik) ve Graphs (Çizelgeler) üzerinden ulaşabilirsiniz.

Eepsites (Eepsiteler), tıpkı Tor‘daki Hidden Services gibi I2P ağı içinden erişilen sitelerdir. Birçok konuda ve içerikte sitelere buradan erişebilirsiniz. Ayrıca, kendiniz de bir eepsite hazırlayıp, yayımlayabilirsiniz. Bunun için Local Services kısmından Websites‘e girerek gerekli bilgileri alabilirsiniz.

Tarayıcınız için en kolay çözüm FoxyProxy kullanmak olacaktır. FoxyProxy eklentisini kurduktan sonra HTTP için Options -> Add New Proxy diyorsunuz. Bununla birlikte, i2p ile Internete Tor ağı üzerinden çıkmaktasınız. i2p’nin outproxy’si Tor ağı olarak ayarlanmıştır. Tarayıcınızdan kontrol etmek isterseniz https://check.torproject.org adresine girebilirsiniz.

Host or IP Address = 127.0.0.1
Port = 4444
HTTPS için Port = 4445

Ayrıca, tüm bunları Privoxy kurarak da halledebilirsiniz. Privoxy ayarı için (/etc/privoxy/config):

forward-socks5 / 127.0.0.1:9050 .
forward .i2p 127.0.0.1:4444
forward 192.168.*.*/ .
forward 10.*.*.*/ .
forward 127.*.*.*/ .

Tarayıcınızı HTTP ve HTTPS için ağ ayarlarından 127.0.0.1, port 8118 olarak ayarlayıp kullanabilirsiniz. Hepsi bu kadar.

Anonim torrent kullanmak:

I2P’nin kendi ait I2PSnark adında anonim bittorent istemcisi vardır. Farklı istemciler ile (Azureus, Transmission vd.) kullanabilirsiniz. Sizin dikkat etmeniz gereken I2P üzerinden I2P’ye ait olmayan torrentleri indiremeyeceğinizdir. Yani, kickass’ten kopyaladığınız bir magnet linkini I2PSnark ile indiremezsiniz. Fakat, I2PSnark ile I2P üzerinde dolaşımda olan her torrenti indirebilirsiniz. Zaten, Eepsiteler içinde torrent siteleri var. İçerikleri de çok kötü değil. i2p planet veya DifTracker ile bunlara erişebilirsiniz. Torrentin ve I2P’nin daha hızlı olmasını istiyorsanız bant genişliğini ve paylaşımı artırmanız gerekmektedir.

Anonim e-posta almak:

I2P’nin Susimail adında kendi ait anonim bir e-posta servisi vardır. Servislerden buraya ulaşabilirsiniz. Dışarıdan (clear web) kendinize e-posta atacaksanız i2pmail.org kullanarak atabilirsiniz. Kendi sayfasında açıklamalar mevcut ama ben burada tekrar belirteyim, i2p hesabınızdan gerçek hesaplarınıza veya gerçek hesaplara e-posta atmamaya özen gösterin. Bunu anonimlik derecenizi azaltmamak adına yapmayın dediğimi de unutmayın.

Son birkaç şey

I2P kullanmak, I2P ile torrent indirmek ve bunlara istinaden anonimliğiniz tekrar sizin tehlike modelinizde dayanır. Kimsiniz ve kimden saklanıyorsunuz? Neden ve ne tür bir risk almayı hedefliyorsunuz? I2P ile gelen anonim bittorrent istemcisi Azuerus’a kıyasla daha güvenlidir. I2P’ye ait yerel kimliğinizi kimseyle paylaşmayın. Hızlı olmasını istiyorsanız bant genişliğini ve paylaşımı lütfen artırın. I2P’ye giriş biraz kısa gibi oldu. İlerleyen zamanda bunu detaylandıracağım. Sizler de indirip kurar ve kurcalamaya başlarsanız çok çabuk birkaç şeyi deneyebilir ve belirli bir yol katedebilirsiniz.

Tagged , , , , , , , , , , , , , , , , , , , , ,