(Alıntıdır)
Lütfen like atmayı unutmayın
Lütfen like atmayı unutmayın
View hidden content is available for registered users!
Konuda bahsedilen başlıklar:
1)
1)
View hidden content is available for registered users!
Kriptolojinin tanımı.
2) Bazı basit kriptografi yöntemleri.
3) Kriptoloji hakkında kavramların kısa açıklamaları.
4) Kriptosistemler.
5) Birbirine karıştırılan kelimeler ve doğru anlamları.
6) Kriptoloji alanında kullanılan matematiksel teoremler ve kısaca açıklamaları. (İstek olursa, detaylı olarak başka konular yazabilirim.)
Not: Örnek olarak gösterdiğim tüm şifreler, Base64 ile kodlanmıştır.
Kriptoloji Nedir ?
Kriptoloji, şifre bilimidir. Askeri kurumlarda, devletler arası iletişimde, özel kurumlar içinde, kişiler arasındaki mesajlarda vb. alanlarda kullanılır.
Kriptoloji Neden Kullanılmalıdır ?
İletilen mesajın üçüncü kişiler tarafından müdahale edilmemesini sağlamak.
Kriptoloji = Kriptografi + Kriptoanaliz
Kriptografi: Şifreleme
Kriptoanaliz: Şifreli dosyayı analiz etme
Bazı basit ve herkes tarafından bilinen şifreleme yöntemleri
2. Dünya Savaşı’nda; Nazi Almanyası, İngilizler’e karşı Enigma cihazını kullanarak tüm mesajları şifrelemişlerdir.
Roma İmparatoru Sezar’ın Sezar Şifrelemesi
Sezar Şifreleme: Harfleri alfabetik sırada x birim kadar öteler. (İleri veya geri)
ROT13: Sezar yönteminin sayılarla ifade edilen şeklidir.
1) Her harfin, sıfırdan başlayarak sırasıyla sayı olarak karşılığı yazılır.
2) Kelimeye karşılık gelen sayılar yazılır ve ötelenecek sayı kadar hepsine eklenir.
3) Her bir sayı, alfabedeki en büyük sayının modu olarak yazılır.
4) En sonunda elde edilen sayıların harf karşılığı yazılır.
Not: x^y ifadesi, bilgisayarda x üssü y olarak kullanılır.
RSA Şifreleme
RSA algoritması, birazdan bahsedeceğim matematik işlemlerine ihtiyaç duyduğumuz bir algoritmadır. Eğer mod alma işlemini bilmiyorsanız bu kısmı atlayıp, konu bittikten sonra bu algoritmaya tekrar dönebilirsiniz.
* Açık anahtarlı şifreleme yöntemidir.
1) p ve q aralarında asal iki tamsayı seçilir.
2) n = p*q işlemi yapılır.
3) f = (p-1)*(q-1)
4) 1 ile f arasında olacak şekilde bir e sayısı seçilir. (e ve f aralarında asal olmalı)
5) d*e = 1 mod(f) değerini sağlayan d değeri bulunur.
6) Şifreli Metin = (açık metin)^e mod(n) ve Açık Metin = (şifreli metin)^d mod(n)
* Açık anahtarlar: n ve e ‘dir.
* Gizli anahtarlar: n ve d ‘dir.
Örnek:
1) p = 2357, q = 2551 asal sayıları seçilir.
2) n = p*q = 2357*2551 = 6012707
3) f = (p-1)*(q-1) = 2356*2550 = 6007800
4) e, 1 ile f arasında ve gcd(e,f | = 1) olacak şekilde; e = 3674911 belirleyelim.
5) e*d = 1 mod(f) olan d değeri bulunur.
6) "Ters mod alma" = "Inverse mod calculator" (İnternet üzerinden yapılabilir) : d = 422191
7) Açık metin = 523467 olsun,
8) Şifreli Metin = (açık metin)^e mod(n) = 3650502
9) Açık Metin = (şifreli metin)^d mod(n) = 523467
Kavramlar
Blok Şifreleme: Şifrelenecek metni belli boyutlarda bloklara ayırıp, ayrı ayrı şifreleyip birleştirme.
Akan Şifreleme (Stream Ciphers) : Seçilen anahtarın her harfini, düz metnin her harfi ile şifreleme. (Sırayla mod(2) ile toplama (XOR))
Gizli Anahtarlı (Simetrik) Şifreleme: Bir adet gizli anahtar kullanılarak şifrelenir.
Açık Anahtarlı (Asimetrik) Şifreleme: Genel anahtar (Public Key) ile şifrelenir. Gizli anahtar (Private Key) ile deşifre edilir. (2 anahtar kullanılır)
Kriptosistemler
Tanım: Bir kriptosistem (P,C,K,E,D) beşlisinden oluşur.
Alfabe (A) : Sonlu sayıda eleman kümesi.
Örnek: A={0,1}
Plaintext (P) (Açık Metin) : Alfabedeki elemanlardan oluşan sonlu sayıdaki eleman *****.
Örnek: Cyber-Warrior
Cipher Text (C) (Şifreli Metin) : Alfabedeki elemanlardan oluşan ama açık metinden farklı bir dizilişe sahip olan sonlu eleman dizisidir.
Örnek: Q3liZXItV2Fycmlvcg==
Key Space (K) (Anahtar Uzayı): Alfabedeki elemanlardan oluşur. Şifreleme için kullanılan anahtardır.
Örnek: CW
Encrytion: P açık metnini, C şifreli metnine çevirir.
Decryption: C şifreli metnini, P açık metnini geri çevirir.
Kriptosistemlerin Sınıflandırılması
3 farklı şekilde sınıflandırma yapılabilir:
1) Açık Metinden Şifreli Metine
a) Yerine Koyma: Bir karakterin şifrelenip aynı yerine koyulması.
b) Yer Değiştirme: Bir karakterin yerini değiştirme ya da şifreleyip yerini değiştirme.
2) Anahtara göre sınıflandırma
a) Simetrik (Gizli, geleneksel)
b) Asimetrik (Açık)
3) Şifreli metini işleme yöntemine göre
a) Blok Şifreleme
b) Dizi İşleme (Akan Şifreleme)
Matematiksel işlemler kısmına geçmeden önce, birbirine karıştırılan birkaç kavramın aslında doğru anlamlarının ne olduğundan bahsetmek istiyorum.
Parola ve Şifre. Çoğu insanın birbiri yerine kullandığı bu kavramlar aslında birbirinden farklı şeylerdir:
Parola: Bir sisteme girerken kullandığımız, harflerden, sayılardan ve yeri geldiğinde özel işaretlerden oluşan, gizli tuttuğumuz sözcüklerdir.
Şifre: Bir verinin, farklı algoritmalar kullanılarak oluşturulan verilerdir (bu algoritmaların bazılar hakkında yazdığım konuları inceleyebilirsiniz). Şifreler genelde bir anlam ifade etmezken, parolalar kendimizce anlamlıdır.
Hashing, Encryption ve Encoding: Bu üç kavram da birbirine karışabildiği için tek tek inceleyelim:
Hashing: Belirli algoritmalar amacıyla verilerin doğruluğunu sağlarlar ve bu algoritmalar ile oluşturulan hasler geri döndürülemez özelliktedir. Örneğin; MD5, SHA1 en çok bilinen hashing algoritmalarıdır.
Encryption (Şifreleme): Anahtar kullanılarak verilerin şifrelenmesi işlemidir. Şifrelenmiş veriler, yine aynı anahtar kullanılarak geri döndürülebilir. Örneğin; RSA, DES, AES en çok bilinen encryption algoritmalarıdır.
Encoding (Kodlama): Verinin, kodlama algoritmaları ile bir formattan başka bir formata dönüştürülmesi işlemidir. Bu sebeple gizlilik sağlamak. Örneğin; Base64, ROT13, Sezar en çok bilinen encoding algoritmalarıdır.
Salting: Türkçesi “Tuzlama” olan bu kavram, şifreleri Brute Force gibi saldırılardan korumaya yarıyor. Salting, açık metnin veya oluşturulan şifrenin sonuna bir veri eklenerek yapılır.
Salting Örnek 1: Q3liZXItV2Fycmlvcg==CW (Şifrenin sonuna eklenerek)
Salting Örnek 2: Q3liZXItV2FycmlvckNX (Açık metnin sonuna eklenip şifrelenerek)
Birbirine karıştırılan bu önemli kavramları da öğrendiğimize göre, matematik kısmına geçebiliriz.
Matematik (Sayılar Teorisi)
Buradan sonrası, temel matematik bilgisine sahip fakat yeterli düzeyde bilgisi olmayanlar içindir. Kriptografi alanında matematiksel fonksiyonlar çok kullanıldığı için (özellikle asal sayılarla ilgili), bu konulara değinmek istedim.
Modüler Aritmetik
x = y mod(z): y’nin, z’ye bölümünden kalan, x’dir.
a = k * n + r olsun,
r = a mod(k) = a mod(n)
(a+b) mod(n) = [a mod(n) + b mod(n)] mod(n)
Kısa mod alma: x^1, x^2 ... 1 olana kadar yazılır üsse bölünür.
EBOB (GCD): En büyük ortak bölen.
EKOK (LCM): En küçük ortak kat.
Fermat Teoremi
Tanım: a tamsayı, p asal sayı olsun,
a^p = a mod(p)
Tanım: gcd(a,p) = 1 olsun,
a^(p-1) = 1 mod(p)
Öklid Teoremi
Aritmetiğin esas teoremi (Asal çarpanlara Ayrıma)
Öklid: a büyüktür b olsun,
a = b.q1+r1 ve b = q2.r1+r2
r1 = q3.r2+r3 ve r2 = q4.r3+r4 ... r(n-1) = q(n+1).rn+r(n+1)
r(n+1) = gcd(a,b)
* (Bölen = Bölünen, Kalan = Bölen , Kalan=1 olana kadar)
Ters Mod Alma
97.x = 1 mod(127) olsun,
Öklid teoremi: 7 = 2.3+1 | 7+2.(-3) = 1
(Teoremde tersten ilk işleme kadar aynısını yap: 127+97(-1) = 30)
En son denklemdeki bölen (2) yerine üstteki denklem yazılıp dağıtılır. Tek tek hepsinde yapılır.
x = 55 olarak bulunur
Euler Totient
Tanım: Bir sayıdan küçük, o sayı ile asal olan sayıların adedini verir.
n sayısı asal ise, p-1 tanedir.
n = p*q olsun,
p ve q asal ise (p-1)*(q-1)
Eratosthenes Kalburu (The Sieve of Eratosthenes)
Bir sayının asal olup olmadığını tespit eder.
1) Sayının karekökü alınır ve aralığı bulunur.
Sayı, Kök(131) olsun; kök(131) sayısı, 11 ile 12 arasındadır.
2) 11‘den küçük sayılardan herhangi bir sayı (asal) 131‘i bölemiyorsa sayı asaldır.
3) 11‘den küçük asal sayıların katları silinir. Kalan sayılar asal sayılardır.
Çin Kalan Teoremi
Tanım: Bir sayının başka sayının bölümlerinden kalanları bildiğimiz bu sayıyı tespit edebiliriz.
2) Bazı basit kriptografi yöntemleri.
3) Kriptoloji hakkında kavramların kısa açıklamaları.
4) Kriptosistemler.
5) Birbirine karıştırılan kelimeler ve doğru anlamları.
6) Kriptoloji alanında kullanılan matematiksel teoremler ve kısaca açıklamaları. (İstek olursa, detaylı olarak başka konular yazabilirim.)
Not: Örnek olarak gösterdiğim tüm şifreler, Base64 ile kodlanmıştır.
Kriptoloji Nedir ?
Kriptoloji, şifre bilimidir. Askeri kurumlarda, devletler arası iletişimde, özel kurumlar içinde, kişiler arasındaki mesajlarda vb. alanlarda kullanılır.
Kriptoloji Neden Kullanılmalıdır ?
İletilen mesajın üçüncü kişiler tarafından müdahale edilmemesini sağlamak.
Kriptoloji = Kriptografi + Kriptoanaliz
Kriptografi: Şifreleme
Kriptoanaliz: Şifreli dosyayı analiz etme
Bazı basit ve herkes tarafından bilinen şifreleme yöntemleri
2. Dünya Savaşı’nda; Nazi Almanyası, İngilizler’e karşı Enigma cihazını kullanarak tüm mesajları şifrelemişlerdir.
Roma İmparatoru Sezar’ın Sezar Şifrelemesi
Sezar Şifreleme: Harfleri alfabetik sırada x birim kadar öteler. (İleri veya geri)
ROT13: Sezar yönteminin sayılarla ifade edilen şeklidir.
1) Her harfin, sıfırdan başlayarak sırasıyla sayı olarak karşılığı yazılır.
2) Kelimeye karşılık gelen sayılar yazılır ve ötelenecek sayı kadar hepsine eklenir.
3) Her bir sayı, alfabedeki en büyük sayının modu olarak yazılır.
4) En sonunda elde edilen sayıların harf karşılığı yazılır.
Not: x^y ifadesi, bilgisayarda x üssü y olarak kullanılır.
RSA Şifreleme
RSA algoritması, birazdan bahsedeceğim matematik işlemlerine ihtiyaç duyduğumuz bir algoritmadır. Eğer mod alma işlemini bilmiyorsanız bu kısmı atlayıp, konu bittikten sonra bu algoritmaya tekrar dönebilirsiniz.
* Açık anahtarlı şifreleme yöntemidir.
1) p ve q aralarında asal iki tamsayı seçilir.
2) n = p*q işlemi yapılır.
3) f = (p-1)*(q-1)
4) 1 ile f arasında olacak şekilde bir e sayısı seçilir. (e ve f aralarında asal olmalı)
5) d*e = 1 mod(f) değerini sağlayan d değeri bulunur.
6) Şifreli Metin = (açık metin)^e mod(n) ve Açık Metin = (şifreli metin)^d mod(n)
* Açık anahtarlar: n ve e ‘dir.
* Gizli anahtarlar: n ve d ‘dir.
Örnek:
1) p = 2357, q = 2551 asal sayıları seçilir.
2) n = p*q = 2357*2551 = 6012707
3) f = (p-1)*(q-1) = 2356*2550 = 6007800
4) e, 1 ile f arasında ve gcd(e,f | = 1) olacak şekilde; e = 3674911 belirleyelim.
5) e*d = 1 mod(f) olan d değeri bulunur.
6) "Ters mod alma" = "Inverse mod calculator" (İnternet üzerinden yapılabilir) : d = 422191
7) Açık metin = 523467 olsun,
8) Şifreli Metin = (açık metin)^e mod(n) = 3650502
9) Açık Metin = (şifreli metin)^d mod(n) = 523467
Kavramlar
Blok Şifreleme: Şifrelenecek metni belli boyutlarda bloklara ayırıp, ayrı ayrı şifreleyip birleştirme.
Akan Şifreleme (Stream Ciphers) : Seçilen anahtarın her harfini, düz metnin her harfi ile şifreleme. (Sırayla mod(2) ile toplama (XOR))
Gizli Anahtarlı (Simetrik) Şifreleme: Bir adet gizli anahtar kullanılarak şifrelenir.
Açık Anahtarlı (Asimetrik) Şifreleme: Genel anahtar (Public Key) ile şifrelenir. Gizli anahtar (Private Key) ile deşifre edilir. (2 anahtar kullanılır)
Kriptosistemler
Tanım: Bir kriptosistem (P,C,K,E,D) beşlisinden oluşur.
Alfabe (A) : Sonlu sayıda eleman kümesi.
Örnek: A={0,1}
Plaintext (P) (Açık Metin) : Alfabedeki elemanlardan oluşan sonlu sayıdaki eleman *****.
Örnek: Cyber-Warrior
Cipher Text (C) (Şifreli Metin) : Alfabedeki elemanlardan oluşan ama açık metinden farklı bir dizilişe sahip olan sonlu eleman dizisidir.
Örnek: Q3liZXItV2Fycmlvcg==
Key Space (K) (Anahtar Uzayı): Alfabedeki elemanlardan oluşur. Şifreleme için kullanılan anahtardır.
Örnek: CW
Encrytion: P açık metnini, C şifreli metnine çevirir.
Decryption: C şifreli metnini, P açık metnini geri çevirir.
Kriptosistemlerin Sınıflandırılması
3 farklı şekilde sınıflandırma yapılabilir:
1) Açık Metinden Şifreli Metine
a) Yerine Koyma: Bir karakterin şifrelenip aynı yerine koyulması.
b) Yer Değiştirme: Bir karakterin yerini değiştirme ya da şifreleyip yerini değiştirme.
2) Anahtara göre sınıflandırma
a) Simetrik (Gizli, geleneksel)
b) Asimetrik (Açık)
3) Şifreli metini işleme yöntemine göre
a) Blok Şifreleme
b) Dizi İşleme (Akan Şifreleme)
Matematiksel işlemler kısmına geçmeden önce, birbirine karıştırılan birkaç kavramın aslında doğru anlamlarının ne olduğundan bahsetmek istiyorum.
Parola ve Şifre. Çoğu insanın birbiri yerine kullandığı bu kavramlar aslında birbirinden farklı şeylerdir:
Parola: Bir sisteme girerken kullandığımız, harflerden, sayılardan ve yeri geldiğinde özel işaretlerden oluşan, gizli tuttuğumuz sözcüklerdir.
Şifre: Bir verinin, farklı algoritmalar kullanılarak oluşturulan verilerdir (bu algoritmaların bazılar hakkında yazdığım konuları inceleyebilirsiniz). Şifreler genelde bir anlam ifade etmezken, parolalar kendimizce anlamlıdır.
Hashing, Encryption ve Encoding: Bu üç kavram da birbirine karışabildiği için tek tek inceleyelim:
Hashing: Belirli algoritmalar amacıyla verilerin doğruluğunu sağlarlar ve bu algoritmalar ile oluşturulan hasler geri döndürülemez özelliktedir. Örneğin; MD5, SHA1 en çok bilinen hashing algoritmalarıdır.
Encryption (Şifreleme): Anahtar kullanılarak verilerin şifrelenmesi işlemidir. Şifrelenmiş veriler, yine aynı anahtar kullanılarak geri döndürülebilir. Örneğin; RSA, DES, AES en çok bilinen encryption algoritmalarıdır.
Encoding (Kodlama): Verinin, kodlama algoritmaları ile bir formattan başka bir formata dönüştürülmesi işlemidir. Bu sebeple gizlilik sağlamak. Örneğin; Base64, ROT13, Sezar en çok bilinen encoding algoritmalarıdır.
Salting: Türkçesi “Tuzlama” olan bu kavram, şifreleri Brute Force gibi saldırılardan korumaya yarıyor. Salting, açık metnin veya oluşturulan şifrenin sonuna bir veri eklenerek yapılır.
Salting Örnek 1: Q3liZXItV2Fycmlvcg==CW (Şifrenin sonuna eklenerek)
Salting Örnek 2: Q3liZXItV2FycmlvckNX (Açık metnin sonuna eklenip şifrelenerek)
Birbirine karıştırılan bu önemli kavramları da öğrendiğimize göre, matematik kısmına geçebiliriz.
Matematik (Sayılar Teorisi)
Buradan sonrası, temel matematik bilgisine sahip fakat yeterli düzeyde bilgisi olmayanlar içindir. Kriptografi alanında matematiksel fonksiyonlar çok kullanıldığı için (özellikle asal sayılarla ilgili), bu konulara değinmek istedim.
Modüler Aritmetik
x = y mod(z): y’nin, z’ye bölümünden kalan, x’dir.
a = k * n + r olsun,
r = a mod(k) = a mod(n)
(a+b) mod(n) = [a mod(n) + b mod(n)] mod(n)
Kısa mod alma: x^1, x^2 ... 1 olana kadar yazılır üsse bölünür.
EBOB (GCD): En büyük ortak bölen.
EKOK (LCM): En küçük ortak kat.
Fermat Teoremi
Tanım: a tamsayı, p asal sayı olsun,
a^p = a mod(p)
Tanım: gcd(a,p) = 1 olsun,
a^(p-1) = 1 mod(p)
Öklid Teoremi
Aritmetiğin esas teoremi (Asal çarpanlara Ayrıma)
Öklid: a büyüktür b olsun,
a = b.q1+r1 ve b = q2.r1+r2
r1 = q3.r2+r3 ve r2 = q4.r3+r4 ... r(n-1) = q(n+1).rn+r(n+1)
r(n+1) = gcd(a,b)
* (Bölen = Bölünen, Kalan = Bölen , Kalan=1 olana kadar)
Ters Mod Alma
97.x = 1 mod(127) olsun,
Öklid teoremi: 7 = 2.3+1 | 7+2.(-3) = 1
(Teoremde tersten ilk işleme kadar aynısını yap: 127+97(-1) = 30)
En son denklemdeki bölen (2) yerine üstteki denklem yazılıp dağıtılır. Tek tek hepsinde yapılır.
x = 55 olarak bulunur
Euler Totient
Tanım: Bir sayıdan küçük, o sayı ile asal olan sayıların adedini verir.
n sayısı asal ise, p-1 tanedir.
n = p*q olsun,
p ve q asal ise (p-1)*(q-1)
Eratosthenes Kalburu (The Sieve of Eratosthenes)
Bir sayının asal olup olmadığını tespit eder.
1) Sayının karekökü alınır ve aralığı bulunur.
Sayı, Kök(131) olsun; kök(131) sayısı, 11 ile 12 arasındadır.
2) 11‘den küçük sayılardan herhangi bir sayı (asal) 131‘i bölemiyorsa sayı asaldır.
3) 11‘den küçük asal sayıların katları silinir. Kalan sayılar asal sayılardır.
Çin Kalan Teoremi
Tanım: Bir sayının başka sayının bölümlerinden kalanları bildiğimiz bu sayıyı tespit edebiliriz.