Kriptografik Olarak Oluşturulan Adres - Cryptographically Generated Address

Bir Kriptografik Olarak Oluşturulan Adres (CGA) bir İnternet Protokolü Sürüm 6 Bir ana bilgisayar tanımlayıcısına sahip bir (IPv6) adresi kriptografik karma işlevi.[1] Bu prosedür, bir bağlanma yöntemidir. genel imza anahtarı bir IPv6 adresi içinde Güvenli Komşu Bulma Protokolü (GÖNDER).[2]

Metodoloji

Kriptografik Olarak Üretilen Adres, 128 bitlik IPv6 adresinin en az anlamlı 64 bitini adres sahibinin genel anahtarının şifreleme karması ile değiştirerek oluşturulur. Mesajlar, ilgili özel anahtarla imzalanır. Yalnızca kaynak adresi ve genel anahtar biliniyorsa, doğrulayıcı, ilgili göndericiden gelen mesajı doğrulayabilir. Bu yöntem gerektirmez Açık Anahtar Altyapısı. Geçerli CGA'lar, potansiyel bir saldırgan da dahil olmak üzere herhangi bir gönderici tarafından oluşturulabilir, ancak mevcut CGA'ları kullanamazlar.

Özellikler

Kriptografik Olarak Üretilen Adres, arabirim tanımlayıcısı CGA oluşturma yöntemine göre oluşturulan bir IPv6 adresidir. Arayüz tanımlayıcı, bir IPv6 adresinin en az anlamlı 64 bitinden oluşur ve ana bilgisayarın alt ağındaki ağ arayüzünü tanımlamak için kullanılır. Alt ağ, en önemli 64 bit olan alt ağ öneki tarafından belirlenir.

IPv6 adres biçimi
bitler6464
alanalt ağ önekiarayüz tanımlayıcı

CGA'ya bağlanacak genel anahtarın yanı sıra, CGA oluşturma yöntemi, önceden tanımlanmış alt ağ öneki dahil olmak üzere birkaç başka girdi parametresini alır. Bu parametreler, CGA oluşturma yönteminin yürütülmesi sırasında üretilen diğer parametrelerle birlikte, CGA Parametreleri veri yapısı adı verilen bir dizi parametre oluşturur. İlgili CGA'yı doğrulayabilmek için CGA Parametrelerinin tam setinin bilinmesi gerekir.

CGA Parametreleri veri yapısı şunlardan oluşur:

  • değiştirici: rastgele 128 bit imzasız tamsayı;
  • subnetPrefix: CGA'nın hangi alt ağa ait olduğunu tanımlayan 64 bitlik önek;
  • collCount: 0, 1 veya 2 olması gereken 8 bitlik işaretsiz bir tam sayı;
  • Genel anahtar: genel anahtar DER kodlanmış ASN.1 SubjectPublicKeyInfo türünün yapısı;
  • extFields: isteğe bağlı bir değişken uzunluk alanı (varsayılan uzunluk 0).

Ek olarak, bir güvenlik parametresi Sn CGA'nın karşı gücünü belirler kaba kuvvet saldırıları. Bu, 0'dan 7'ye (ve dahil) herhangi bir değere sahip olabilen ve CGA'nın arayüz tanımlayıcısının en soldaki üç bitinde kodlanan 3 bitlik işaretsiz bir tamsayıdır. Değeri ne kadar yüksekse Sn, güvenlik seviyesi ne kadar yüksekse, aynı zamanda bir CGA oluşturmak genellikle daha uzun sürer. Kolaylık sağlamak için ara Sn Aşağıdaki sözde koddaki değerlerin, 7'den büyük bir değere sahip olamayan 8 bitlik işaretsiz tamsayılar olarak saklandığı varsayılır.

CGA oluşturma yöntemi

Aşağıdaki sözde kod parçası, yeni bir Kriptografik Olarak Oluşturulan Adres oluşturmak için kullanılan CGA oluşturma yöntemini temsil eder.

 1  prosedür oluşturmakCGA (Sn, subnetPrefix, Genel anahtar, extFields): 2      değiştirici : = rastgele (0x00000000000000000000000000000000, // 16 sekizli (128 bit) 3 0xffffffffffffffffffffffffffffffffff) 4 5 etiket1: 6      concat : = bitiştirme (değiştirici, 0x000000000000000000, // 9 sıfır sekizli 7 Genel anahtar, extFields) 8 9      sindirmek : = SHA1 (concat)10      Hash2 := sindirmek[0:14] // 14 * 8 = 112 en soldaki bit1112 Eğer Sn ≠ 0 ve Hash2[0:2*Sn] ≠ 0: // 2 * Sec * 8 = 16 * Sec en soldaki bit13 değiştirici := değiştirici + 114          git etiket115 eğer biterse1617      collCount : = 0x00 // 8 bit çarpışma sayısı1819 etiket2:20      concat : = bitiştirme (değiştirici, subnetPrefix, collCount,21                            Genel anahtar, extFields)2223      sindirmek : = SHA1 (concat)24      Hash1 := sindirmek[0: 8] // 8 * 8 = 64 en soldaki bit2526 intID := Hash1                                             // Hash1 arayüz tanımlayıcısı olur ... 27 intID[0] := intID[0] ikili ve 0x1c ikili veya (Sn << 5) // ... Sec ve u / g bitlerini yazdıktan sonra2829 CGA : = bitiştirme (subnetPrefix, intID) // CGA3031'i oluşturmak için birleştirin Eğer çiftleme(CGA):32          collCount := collCount + 13334          Eğer collCount = 3:35              iptal etmek36          eğer biterse3738          git etiket239 eğer biterse4041      dönüş [CGA, [değiştirici, subnetPrefix, collCount, Genel anahtar, extFields]]42  son prosedür

CGA'nın arayüz tanımlayıcısı büyük ölçüde aşağıdakilerden oluşur: Hash1, sindirilmiş CGA Parametreleri veri yapısının ilk 64 bitinden alınır (satırlar 20 ila 24). 27. satırda, ilk üç bitin üzerine Sn değer ve ayrılmış "u" ve "g" bitleri (yedinci ve sekizinci bit) 0'a ayarlanır.

Sn parametresi, ilk 16 kez zorlayarak bir karma uzantısı uygular Sn başka bir hash bitleri, Hash2, 0 olacaktır. Bu karma, sindirilmiş CGA Parametreleri veri yapısının sonucudur. subnetPrefix ve collCount esasen 0'a ayarlanmıştır. A kaba kuvvet arama uygun olanı bulmak için yapılır Hash2, artırarak değiştirici her yinelemede 1'er (satır 6 ila 15). Çünkü daha yüksek bit ile daha fazla bitin 0 olması gerekir Sn değer, aramayı gerçekleştirmek için gereken ortalama süre, değeri ile katlanarak artar. Sn.

CGA'yı oluşturmak için alt ağ önekini ve oluşturulan arayüz tanımlayıcısını birleştirdikten sonra, yinelenen adres algılama gerçekleştirilebilir. Adres zaten kullanımdaysa, çarpışma sayacı collCount 1 artırılır ve yeni bir arayüz tanımlayıcı oluşturulur (20 ila 39. satırlar). Çünkü collCount hesaplamada kullanılmaz Hash2yeni bir arama yapmak gerekli değildir Hash2 bir adres çakışması meydana geldiğinde. Benzer bir nedenle, subnetPrefix adresin alt ağ öneki değişirse ancak ana bilgisayarın genel anahtarı değişmezse, aynı değiştirici yeniden kullanılabilir ve yeni bir arama yapmaya gerek yoktur. Hash2.

41. satırda, CGA Parametreleri veri yapısı ile birlikte CGA döndürülür.

CGA doğrulama yöntemi

Kriptografik Olarak Oluşturulan Adres, alınan imzalı mesajların bu adresin atandığı ana bilgisayar tarafından gönderildiğini doğrulamak için kullanılır. Bu, imzalama için kullanılan anahtar çiftinin CGA'ya bağlandığını doğrulayarak yapılır. Açık anahtarın gerçekliği bu şekilde doğrulanabildiğinden, genel anahtar altyapısına gerek yoktur. Ancak ana bilgisayarın kendisinin de kimliğinin doğrulanması gerekiyorsa, CGA'nın önceden doğrulanması gerekir, çünkü böyle bir durumda adrese güvenilmiyorsa (başka biri tarafından doğrulanmadığı varsayılarak) bağlı ortak anahtara güvenilemez. CGA'dan daha yöntemler).

Bir genel anahtarın bir CGA'ya bağlı olduğunun doğrulandığı CGA doğrulama yöntemi, girdi olarak karşılık gelen CGA Parametreleri veri yapısını gerektirir ve aşağıdaki gibi uygulanabilir.

 1  prosedür doğrulamaCGA (CGA, [değiştirici, subnetPrefix, collCount, Genel anahtar, extFields]): 2      Eğer collCount > 2 veya CGA[0:8] ≠ subnetPrefix: 3          dönüş yanlış 4 eğer biterse 5 6      concat : = bitiştirme (değiştirici, subnetPrefix, collCount, 7                            Genel anahtar, extFields) 8 9      sindirmek : = SHA1 (concat)10      Hash1 := sindirmek[0: 8] // 8 * 8 = 64 en soldaki bit11 Hash1[0] := Hash1[0] ikili ve 0x1c // Sec ve u / g bitlerini göz ardı et1213 intID := CGA[8:16] // arayüz tanımlayıcı (64 en sağdaki bit) 14 intID[0] := intID[0] ikili ve 0x1c // Sec ve u / g bitlerini göz ardı et1516 Eğer Hash1intID:17          dönüş yanlış18 eğer biterse1920      Sn := CGA[8] >> 5 // arabirim tanımlayıcı2122'den Sec'i çıkar concat : = bitiştirme (değiştirici, 0x000000000000000000, // 9 sıfır sekizli23 Genel anahtar, extFields)2425      sindirmek : = SHA1 (concat)26      Hash2 := sindirmek[0:14] // 14 * 8 = 112 en soldaki bit2728 Eğer Sn ≠ 0 ve Hash2[0:2*Sn] ≠ 0: // 2 * Sec * 8 = 16 * Sec en soldaki bit29 dönüş false30 eğer biterse3132      dönüş doğru // doğrulama başarılı 33 son prosedür

Yöntem kontrol etmekle başlar. collCount CGA Parametreleri veri yapısından geçerli bir değer var ve eğer subnetPrefix aynı veri yapısından CGA'nın alt ağ önekiyle eşleşir (2. satırda). Bu için yapılır güvenlik nedenleri.

6. satırdan 18. satıra, Hash1 CGA Parametreleri veri yapısından (genel anahtar ve alt ağ önekini içeren) hesaplanır ve ilgili bitler, CGA'nın arayüz tanımlayıcısınınkilerle karşılaştırılır. Bu durumda, bu, ilk üç biti (Sn) ve her ikisinin de yedinci ve sekizinci biti ("u" ve "g" bitleri) Hash1 ve kolay karşılaştırma için 11 ve 14. satırlarda 0 arayüz tanımlayıcısı.

Çıkardıktan sonra Sn CGA'nın arayüz tanımlayıcısından, Hash2 hesaplanır ve ilk 16 kez Sn karmanın bitleri 0 ile karşılaştırılır (22 ila 30 satırları). Tüm kontroller iyi sonuçlanırsa, açık anahtarın o CGA'ya bağlı olduğu (yani geçerli olduğu) doğrulanmıştır.

Güvenlik

İçin saldırgan yapmak müşteri saldırgana ait olmayan belirli bir CGA'dan geçerli bir mesaj aldığına inanıyorsanız, saldırgan bir karma çarpışma ilgili bitleri için Hash1 ve Hash2 yaparak kaba kuvvet saldırısı. Saldırgan, hedef CGA ile aynı CGA'yı oluşturmak için kullanılabilecek bir dizi CGA Parametresi (saldırganın özel anahtarı bildiği bir genel anahtar dahil) bulursa, saldırgan CGA'ya sahip olan ana bilgisayarı taklit edebilir. tespit edilmesi (belki istemcinin daha önce ana bilgisayarla iletişim kurması ve genel anahtarın değiştiğini ancak CGA'nın değişmediğini fark etmesi dışında).

64 bitlik Hash15 bitin üzerine yazıldığı için arayüz tanımlayıcısında sadece 59 kullanılır. Bir CGA için Sn 0'a eşittir, bu, istenen 59 biti veren bir dizi CGA Parametresi bulmanın maliyetinin yaklaşık olarak (içinde büyük O notasyonu ). Daha büyük bir değer Snancak, bu maliyeti bir kat artırır -e çünkü ilk 16 kez Sn bitleri Hash2 daha sonra alakalı hale gelir (yani bu bitlerin 0'a eşit olmasını talep ederek bir karma uzantısı uygular). CGA oluşturma sürecinde, bir adres üretme maliyeti, değerine bağlı olarak aynı faktör kadar artırılır. Snancak bir CGA kullanma ve doğrulama maliyeti sabit kalır.

Çünkü Sn CGA Parametreleri veri yapısının bir parçası değil, adresin kendisinin bir parçası olduğundan, bir saldırgan bir Sn kaba kuvvet saldırısını atlamak (veya küçültmek) amacıyla hedef adresinkinden (0 gibi) daha küçük bir değer Hash2. Arayüz tanımlayıcısının en soldaki üç bitinden en az biri eşleşmeyeceğinden, bu, hedef CGA'dan farklı bir CGA verir. Eğer hedef Sn değer yine de arabirim tanımlayıcısına yazılır, sonra Hash2 Doğrulama işlemi sırasında (neredeyse kesinlikle) gerekli miktarda en soldaki 0 ​​bitten yoksun bulunacaktır.

CGA oluşturma işlemi sırasında, üç adres çakışmasının meydana gelmesi pek olası değildir. Üçüncü kez yinelenen bir adres algılanacaksa, bu büyük olasılıkla bir yapılandırma veya uygulama hatası veya bir hizmeti engelleme saldırısı. Bu nedenle, için geçerli değerlerin sayısı collCount 0 ila 2 aralığıyla sınırlıdır. Bu parametrenin, bir saldırganın başka bir kaba kuvvet araması yapmaya gerek kalmadan onu kullanmasını ve tüm farklı değerleri denemesini önlemek için CGA doğrulama işlemi sırasında bu aralıkta olduğu doğrulanmalıdır. Hash2 her seferinde farklı bir değer denenir.

Özet işlemine alt ağ önekini ekleyerek Hash1, bir saldırganın farklı alt ağ öneklerine sahip adreslere saldırmak için önceden hesaplanmış tek bir veritabanı kullanması engellenebilir. Bir doğrulayıcı aynı zamanda ortak anahtarın bu tam adrese bağlı olduğundan ve muhtemelen aynı arayüz tanımlayıcısına sahip bir adrese değil, ancak farklı bir alt ağ önekine sahip olduğundan emin olabilir. CGA spesifikasyonu, subnetPrefix Özet işlemleri için CGA Parametreleri veri yapısından, CGA doğrulama işlemi sırasında CGA'nın alt ağ önekiyle eşleştiği doğrulanmalıdır.

Ayrıca bakınız

Referanslar

  1. ^ RFC 3972, Kriptografik Olarak Oluşturulan Adresler (CGA), T. Aura (Mart 2005)
  2. ^ RFC 3971, Güvenli Komşu Keşfi (GÖNDER)J. Arkko (ed.), J. Kempf, B. Zill, P. Nikander (Mart 2005)