Bu sayfa son olarak 2014 Mart tarihinde güncellendi ve 0.9.12 yöneltici sürümü için geçerli.

Garlic Yöneltme ve "Garlic" Terminolojisi

"Garlic yöneltme" ve "garlic şifreleme" terimleri, I2P teknolojisinden bahsederken genellikle oldukça gevşek bir şekilde kullanılır. Burada terimlerin tarihçesini, çeşitli anlamlarını ve "garlic" yöntemlerinin I2P içindeki kullanımını açıklıyoruz.

"Garlic yöneltme" ilk olarak Michael J. Freedman tarafından Roger Dingledine'nin Free Haven Yüksek Lisans tezinin 8.1.1 bölümündeki (Haziran 2000), Onion yöneltmeden türetilmiştir.

"Garlic" Freedman'ın tanımladığı gibi bir paketleme biçimi uyguladığı ya da yalnızca Tor ile genel farklılıkları vurgulamak için özgün olarak I2P geliştiricileri tarafından kullanılmış olabilir. Gerçek nedenleri tarihte kaybolmuş olabilir. Genel olarak, I2P ağında "garlic" terimi üç şeyden biri anlamına gelebilir:

  1. Katmanlı Şifreleme
  2. Bir kaç iletinin bir arada paketlenmesi
  3. ElGamal/AES Şifrelemesi

Ne yazık ki, I2P geçen yedi yılda "garlic" terminolojisini her zaman aynı kesinlikte kullanmadı. Bu nedenle okuyucu, bu terimle karşılaştığında dikkatli olmalıdır. Umarım, aşağıdaki açıklama her şeyi açıklığa kavuşturur.

Katmanlı Şifreleme

Onion yöneltme, bir dizi eş aracılığıyla yollar veya tüneller oluşturmak ve ardından bu tüneli kullanmak için kullanılan bir yöntemdir. İletiler, oluşturucu tarafından üst üste şifrelenir ve ardından her sıçramada şifresi çözülür. Tünel oluşturulurken, her bir eşte yalnızca bir sonraki sıçramanın yöneltme yönergeleri açığa çıkar. İşlem sırasında, iletiler tünelden geçirilir ve ileti ile yöneltme yönergeleri yalnızca tünelin uç noktasında açığa çıkar.

Bu, Mixmaster (ağ karşılaştırmasına bakın) ileti gönderme şekline benzer. Bir ileti alınır, alıcının herkese açık anahtarıyla şifrelenir, bu şifrelenmiş ileti alınır ve şifrelenir (bir sonraki sıçramayı belirten yönergelerle birlikte) ve ardından elde edilen şifrelenmiş ileti alınır. Yol boyunca her sıçrama için bir şifreleme katmanı olana kadar bu şekilde ilerlenir.

Bu anlamda, genel bir kavram olarak "garlic yöneltme", "onion yöneltme" ile aynıdır. I2P üzerinde uygulandığı gibi, elbette Tor uygulamasına göre aşağıdaki gibi birkaç fark vardır. Öyle olsa bile, I2P onion yöneltme ve, Tor ve benzeri karma ağlar üzerine yapılan çok sayıda akademik araştırmadan yarar sağlar.

Birkaç İletiyi Paketlemek

Michael Freedman, "garlic yöneltmesini", birden fazla iletinin bir araya getirildiği onion yöneltmesinin geliştirilmiş bir şekli olarak tanımladı. Her iletiye "ampul" dedi. Her biri kendi teslim yönergelerini taşıyan tüm iletiler, uç noktada açığa çıkar. Böylece özgün iletiyle onion yöneltmesi "yanıt bloğu" verimli bir şekilde paketlenir.

Bu kavram I2P üzerinde aşağıda açıklandığı gibi uygulanır. Garlic "ampulleri" için "dişler" terimini kullanıyoruz. Tek bir ileti yerine herhangi bir sayıda ileti yer alabilir. Bu, Tor üzerinde uygulanan onion yöneltmesine göre önemli bir farktır. Ancak, I2P ve Tor arasındaki birçok önemli mimari farklılıktan yalnızca biridir. Belki de tek başına terminoloji değişikliğini haklı çıkarmaya yeterli değildir.

Freedman tarafından açıklanan yönteme göre bir başka fark, yolun tek yönlü olmasıdır. Onion yöneltme veya mixmaster yanıt bloklarında görüldüğü gibi, algoritmayı büyük ölçüde basitleştirerek daha esnek ve güvenilir aktarım sağlayan bir "dönüm noktası" yoktur.

ElGamal/AES Şifrelemesi

Bazı durumlarda, "garlic şifrelemesi" basitçe ElGamal/AES+Oturum etiketi şifrelemesi (birden çok katman olmadan) anlamına gelebilir.

I2P içindeki "Garlic" Yöntemleri

Artık çeşitli "garlic" terimlerini tanımladığımıza göre, I2P garlic yöneltmesinin paketleme ve şifreleme için üç yerde kullandığını söyleyebiliriz:

  1. Tüneller oluşturmak ve yöneltmek için (katmanlı şifreleme)
  2. Uçtan uca ileti tesliminin (paketleme) başarısını veya başarısızlığını belirlemek için
  3. Bazı ağ veritabanı kayıtlarını yayınlamak için (başarılı bir trafik analizi saldırısı olasılığını azaltmak) (ElGamal/AES)

Bu yöntemin, ağın başarımını iyileştirmek, taşıma gecikmesinden/çıkış takaslarından yararlanmak ve güvenilirliği artırmak için yedekli yollar aracılığıyla verileri dallandırmak için kullanılabileceği önemli yolları da vardır.

Tünel Oluşturma ve Yöneltme

I2P üzerinde tüneller tek yönlüdür. Her bir taraf, biri gidiş ve biri geliş trafiği için olmak üzere iki tünel oluşturur. Bu nedenle, tek bir gidiş-dönüş iletisi ve yanıtı için dört tünel gerekir.

Tüneller, katmanlı şifreleme ile oluşturulduktan sonra kullanılır. Bu durum, tunnel uygulama sayfasında açıklanmıştır. Tünel oluşturma ayrıntıları da bu sayfada açıklanmıştır. Şifreleme için ElGamal/AES+Oturum etiketi kullanıyoruz.

Tüneller, tüm I2NP iletilerini taşımak için genel amaçlı bir mekanizmadır ve Garlic iletileri tünel oluşturmak için kullanılmaz. Gidiş tüneli uç noktasında paketi açmak için birden fazla I2NP iletisini tek bir Garlic iletisi içinde paketlemiyoruz. Tünel şifrelemesi yeterlidir.

Uçtan Uca İleti Paketleme

Tünellerin üzerindeki katmanda I2P, Hedefler arasında uçtan uca iletiler aktarır. Tıpkı tek bir tünel içinde olduğu gibi, şifreleme için ElGamal/AES+Oturum etiketi kullanıyoruz. I2CP arabirimi aracılığıyla yönelticiye iletilen her istemci iletisi, bir Garlic dişi içinde kendi Teslim yönergeleri ile tek bir Garlic iletisi haline gelir. Teslimat yönergelerinde bir hedef, yöneltici veya tünel belirtilebilir.

Genellikle, bir Garlic iletisinde yalnızca bir diş bulunur. Bununla birlikte yöneltici Garlic iletisinde düzenli olarak pakete iki diş daha ekler:

Garlic İletisi Dişleri
  1. Bir Teslim durumu iletisi, Teslim yönergeleri ile kaynak yönelticiye geri dönüleceğini belirten bir alındıdır. Bu durum, referanslarda açıklanan "yanıt bloğu" veya "yanıt onion" paketine benzer. Uçtan uca ileti tesliminin başarılı ya da başarısız olduğunu belirlemek için kullanılır. Kaynak yöneltici, teslimat durumu iletisini beklenen süre içinde alamazsa, uzak uçtaki varış noktasına yöneltmeyi değiştirebilir veya başka işlemler yapabilir.
  2. Bir Veritabanı kaydetme iletisi, kaynak hedef için bir "Kiralama kümesi" (LeaseSet) ile uzak uçtaki hedefin yönelticisini belirten teslimat yönergeleri bilgilerini içerir. Yöneltici bir "Kiralama kümesini" (LeaseSet) düzenli olarak gruplayarak, uzak ucun iletişimi sürdürebilmesini sağlar. Yoksa, uzak uç "Ağ veritabanı" (NetDB) kaydı için bir otomatik doldurma yönlendiricisini sorgulamak zorunda kalacak ve "Ağ veritabanı" (NetDB) sayfasında açıklandığı gibi tüm "Kiralama kümelerinin" (LeaseSets) "Ağ veritabanında" (NetDB) yayınlanması gerekecekti.

Varsayılan olarak, teslimat durumu ve veritabanı kaydetme iletileri, yerel "Kiralama kümesi" (LeaseSet) değiştiğinde, ek Oturum etiketleri teslim edildiğinde ya da iletiler bir önceki dakika içinde paketlenmemişse paketlenir. 0.9.2 sürümünden başlayarak, istemci gönderilecek varsayılan oturum etiketi sayısını ve geçerli oturum için düşük etiket eşiğini yapılandırabilir. Ayrıntılı bilgi almak için I2CP seçenekleri teknik özelliklerine bakabilirsiniz. Ayrıca her ileti için oturum ayarları değiştirilebilir. Ayrıntılı bilgi almak için I2CP ileti gönderme geçerlilik süresi teknik özelliklerine bakabilirsiniz.

Açıkçası, ek iletiler şu anda genel amaçlı bir yöneltme şemasının parçası olarak değil, belirli amaçlar için paketlenmiştir.

0.9.12 sürümünden başlayarak, teslimat durumu iletisi, içeriğin şifrelenmesi ve dönüş yolundaki yönelticiler tarafından görülmemesi için gönderici tarafından başka bir garlic iletisine sarılır.

Otomatik Doldurma Ağ Veritabanına Depolama

"Ağ veritabanı" (NetDB) sayfasında açıklandığı gibi, yerel "Kiralama kümeleri" (LeaseSets) bir Garlic iletisine sarılmış bir "Veritabanı kaydetme iletisi" (DatabaseStoreMessage) içindeki otomatik doldurma yönelticilerine gönderilir. Böylece tünelin gidiş ağ geçidi tarafından görülmez.

Gelecekte Yapılacak Çalışmalar

Garlic ileti mekanizması çok esnektir ve birçok türde mixnet dağıtım yönteminin uygulanabileceği bir yapı sağlar. Tunel ileti teslim yönergelerinde kullanılmayan gecikme seçeneğiyle birlikte, geniş bir toplu işlem, gecikme, karıştırma ve yöneltme stratejileri yelpazesi uygulanabilir.

Özellikle, gidiş tüneli uç noktasında çok daha fazla esneklik potansiyeli vardır. İletiler büyük olasılıkla oradan birkaç tünelden birine yöneltilebilir (böylece noktadan noktaya bağlantılar en aza indirilir) ya da yedeklilik veya ses ve görüntü akışı için birkaç tünel ile çok noktaya yayın yapılabilir.

Bu tür deneyler, belirli yöneltme yollarının sınırlandırılması, çeşitli yollar boyunca iletilebilecek I2NP iletilerinin türlerinin kısıtlanması ve belirli ileti geçerlilik sürelerinin uygulanması gibi güvenlik ve anonimlik sağlama gereksinimiyle çelişebilir.

ElGamal/AES şifrelemesinin bir parçası olarak bir Garlic iletisi göndericinin belirttiği kadar dolgu ekleme verisi içerir ve göndericinin trafik analizine karşı etkin önlemler almasını sağlar. Bu seçenek şu anda 16 baytın katlarına kadar dolgu ekleme gereksiniminin ötesinde kullanılmaz.

Otomatik doldurma yönelticilerinin geliş ve gidiş ek iletilerinin şifrelenmesi.

Referanslar