Bloga geri dön
Günümüzde çok önemli bir yer tutarak verilerin güvenliğini sağlayan kriptografi alanında büyük asal sayılar çeşitli şifreleme protokollerini oluşturmada önemli rol oynar. Yaygın olarak kullanılan birçok şifreleme algoritmalarının güvenliği, büyük sayıları asal bileşenlerine ayırma zorluğuna dayanır. Özellikle internet üzerinde güvenli iletişimin ayrılmaz bir parçası olan ve yaygın olarak benimsenen RSA algoritması, genel ve özel anahtarları oluşturmak için büyük asal sayıları kullanır.
Asal Sayılar ve Kriptografi
RSA ve diğer genel anahtarlı şifreleme sistemlerinin güvenlik gücü, kullanılan asal sayıların boyutu ile doğrudan ilişkilidir. Daha büyük asal sayılar, saldırganların şifreyi çözmesini çok daha zor hale getirir. Bu sistemler, büyük asal sayıların çarpanlarına ayrılmasındaki asimetriye dayanır. Yani, iki büyük asal sayıyı çarpmak kolayken, bu sayıları çarpanlarına ayırmak hesaplama açısından zordur. Şu anda, bu büyük sayıları etkili bir şekilde çarpanlarına ayırmak için bir çözüm olmadığı bilinmektedir. Kriptografide şifrelerin geri çözülememesi için tersinemez (veya tersinmesi zor) fonksiyonlar önemli yer taşır ve büyük asal sayıların çarpanlarına ayrılması da kolay olmadığından asal sayılar bizim için çok önemlidir.
Peki şifrelemede kullanacağımız büyük bir sayının asal olup olmadığını nasıl kontrol edebiliriz? Bunun için tarih boyunca çeşitli yöntemler geliştirilmiştir. Bunlardan iki tanesine örnek olarak Miller-Rabin Testi ve Eratosthenes Eleği’ni sayabiliriz. Bu iki asallık testine geçmeden önce yazının başından beri sıklıkla bahsettiğim RSA hakkında bilgi vermek istiyorum.
RSA Nedir?
RSA asimetrik bir şifreleme yöntemidir. Yani public key’in yanı sıra private key de kullanır. İsmini bu yöntemi bulanların baş harflerinden almaktadır (Rivest, Adi Shamir, Leonard Adleman).
RSA'da bir kullanıcı, public key (herkes tarafından erişilebilirdir) ve private key (gizli kalmak zorundadır) olmak üzere bir çift anahtar kullanır. Sistemin güvenliği, büyük bir tam sayı içeren public key’e sahip olunsa bile bu sayının asal çarpanlarını içeren private key’e ulaşılmasının bilgisayar açısından makul bir zamanda olanaksız olması gerçeğine dayanır. Özellikle büyük asal sayı tercihi, güvenliği daha da artıracaktır.
Bu şifreleme yöntemi aşağıdaki adımları takip eder:
Buradaki zorluk kriptografideki ayrık logaritma problemine dayanır. Üssü hesaplamak oldukça zordur ve key’in bilinmesi gerekir.
Buradaki problemi ve neden hesaplamanın oldukça zor olduğunu anlamak için “Diffie-Hellman key exchange” konusunu öğrenmek çok yerinde olacaktır. Bunun için Alice ve Bob isimlerinde iki kişinin haberleşmek istediklerini varsayalım. Bu durumda mesajları şifrelemek için ortak bir anahtar kullanmak istiyorlarsa, bu anahtarın her ikisinde de bulunması gerekir ancak bu anahtarı da açık olarak göndermek doğru olmaz.
Aşağıda bu durum için bir şema görebilirsiniz. Algoritma, şema üzerinde daha anlaşılır olacaktır:
n ve g public olarak belirlediğimiz 2 büyük asal sayımız.
x Alice’in, y ise Bob’ın private sayısı.
Ayrık logaritma problemi sayesinde saldırgan private key olmadan şifreleri öğrenemez. Bu bize anahtar değişiminde güvenli bir algoritma sunar.
MILLER-RABIN: Büyük Asal Sayı Testi İçin Güçlü Bir Algoritma
Bahsettiğimiz gibi güvenli şifreleme sistemlerinde kullanmak için büyük asal sayıların etkili bir şekilde bulunması gerekiyor. Bu noktada karşımıza çıkan zorluklardan biri büyük sayıların asallığını kontrol etmenin hesaplama açısından zorluğudur. Miller-Rabin Testi, bu zorluğu aşmak için kullanılan olasılık temelli bir testtir. Michael Oser Rabin ve Gary Lee Miller tarafından geliştirilmiştir. Algoritma ile bir sayının asal olup olmadığı anlaşılır.
Miller-Rabin asallık testinde, asal değerler için geçerli olduğu bilinen belirli bir özelliğin, test edilen sayı için geçerli olup olmadığını kontrol ederiz. Eğer test “bu sayı asaldır” diyorsa aslında bu “bu sayı muhtemelen asaldır” anlamına gelir. Ancak testi yaparsak ve sayının asal olmadığı söylenirse, bu sayının asal olmadığından %100 emin oluruz.
Başlangıçta sayının asal olduğunu varsayarız. Eğer yanlış bir ifadeye ulaşırsak bu, başlangıçtaki varsayımımızın yanlış olduğu anlamına gelir. Yani sayımız asal değildir.
Miller-Rabin testinin adımları:
Örnek: 53 asal mıdır?
Miller-Rabin Testi, büyük asal sayıların testi için güçlü bir araçtır. Asallık testlerinin karmaşıklığını ve hesaplama maliyetini azaltarak, kriptografik uygulamalarda kullanılan büyük asal sayıların etkili bir şekilde seçilmesine yardımcı olur. Ancak, kesinlikle asal olup olmadıklarını belirleme konusunda mutlak bir güvence sağlamaz. Bu nedenle, genellikle Miller-Rabin testinin diğer asal sayı testleri ve algoritmalarla birlikte kullanılması tercih edilir.
Bu testin kod olarak örneğini de aşağıda görebilirsiniz:
Eratosthenes’in Eleği
En basit ve en eski asallık testlerinden biridir. Milattan önce 200’lü yıllarda Antik Yunan’da yaşayan Eratosthenes tarafından geliştirilmiştir. İsminden de anlaşılacağı üzere test, bir elek gibi davranarak asal olmayan sayıları eler ve elimizde asal sayılar kalır.
Bu test ile belirlenen bir sayıya kadar olan tüm asal sayılar listelenebilir.
Örneğin:
Görüldüğü üzere tabloda bir bir ilerlerken asal değil olarak işaretlediğimiz sayıları atlarız. İşaretlenmeyen bir sayı gördüğümüzde o sayı asal demektir.
Adımları tamamladığımızda 1’den 100’e kadar işaretlenmemiş sayıları da asal olarak işaretleyebiliriz. Çünkü sonraki sayımız olan 11’i kendisi ile çarptığımızda 100’den büyük bir sayı elde ederiz. Diğer sayılar ile (2, 3, 4, 5, …, 10) çarpmamızın önemi yoktur çünkü zaten o sayıların katlarını önceki adımlarda elemiştik.
Eratosthenes’in Eleği, belirli bir aralıktaki asal sayıları hızlı bir şekilde tespit etmek için oldukça etkili bir yöntemdir. Bu algoritma, asal sayıları test etmek için hızlı ve basit bir yaklaşım sunar. Ancak, büyük asal sayıları bulmak için Miller-Rabin gibi diğer algoritmalarla birlikte kullanılarak daha güçlü bir asal sayı testi sağlanabilir.
Bu testin kod olarak örneğini de aşağıda görebilirsiniz:
Kriptografide Asal Sayıların Seçimi ve Kullanımı
Bu yazıda, kriptografi dünyasının gizemli ve güçlü temsilcileri olarak karşımıza çıkan asal sayıların önemini keşfettik. Asallığın, bilgi güvenliğindeki temel taşlardan biri olarak nasıl işlev gördüğünü ve neden bu kadar değerli olduğunu anladık. Şimdi, kriptografik algoritmaların niçin asal sayıları tercih ettiğini ve bunları nasıl kullandığına bir göz atalım.
Bilgi güvenliği, asal sayıların izlediği yoldan ilerler; bu yolda, matematik ve bilgi güvenliği mühendisliğinin birleşiminde, güçlü şifreleme algoritmaları ve güvenli iletişim sistemleri doğar. Gelecekteki siber dünyamızda, asal sayılar bu önemli rolü sürdürmeye devam edecek ve kriptografinin sırları, güvenli bir dijital yaşamın temelini oluşturacaktır.