---
Kriptografi ---
plaintext
(düz-metin)
cleartext (
temiz-metin)
encryption
(şifreleme)
ciphertext
(şifreli-mesaj)
decryption (çözme)
simetrik (veya
gizli-anahtar)
asimetrik (veya
açık-anahtar)
Not : Anahtar temelli algoritmaların iki çeşidi
vardır; simetrik (veya gizli-anahtar) ve asimetrik (veya açık-anahtar)
algoritmaları. Aralarındaki fark, simetrik algoritmalar şifreleme ve çözme
işlemleri için aynı anahtarı kullanırken (veya çözme anahtarı şifreleme
anahtarından kolayca türetilebilir) , asimetrik algoritmalar şifreleme ve çözme
için farklı anahtar kullanırlar ve çözme anahtarı şifreleme anahtarından elde
edilemez.
Not2: Simetrik algoritmalar stream cipher (akan
şifre) ve blok cipher olarak ikiye ayrılabilir. Stream cipher’lar belli bir
anda bir bitlik düz-metni şifreleyebilirken, blok cipher’lar pek çok biti alıp
(tipik olarak modern cipher’larda 64 bit) bunları tek bir birim olarak
şifrelerler. Pek çok simetrik cipher Algoritmalar sayfasında açıklanmıştır.
Kriptografiye Giriş
Önsöz:
İnsanlar kriptografi
hakkında konuştuklarında farklı şeylerden bahsederler. Çocuklar oyuncak
cipherlarla oynar ve gizli dillerle konuşurlar. Ancak, bunların gerçek güvenlik
ve güçlü şifreleme ile çok az ilgisi vardır. Güçlü şifreleme gerçekten değerli
bilgiyi organize suç örgütlerine, çokuluslu şirketle ve büyük hükümetlere karşı
korumak için kullanılabilecek bir şifreleme türüdür. Güçlü şifreleme eskiden
sadece askeri çalışmalarda kullanılırdı; ancak günümüz bilgi toplumunda
gizlilik ve kişiselliğin korunması için önemli araçlardan biri haline
gelmiştir. Bir bilgi toplumu olmaya doğru ilerledikçe milyonlarca bireyin
teknoloji manasında global olarak gözlenmesi/takibi büyük hükümetler için
mümkün olmaya başlamıştır. Kriptografi kişisellik, güven, erişim kontrolü,
elektronik ödeme, toplu (şirket, ulus, vs.) güvenlik ve pekçok alan için ana
araçlardan biri olmuştur.
Aşağıda,
kriptografinin temel terminolojisi ve ana metotları sunulmuştur. Burada sunulan
tüm fikir ve değerlendirmeler spekülatiftir ve ne yazarlar ne de SSH (bu bilgilerin
mümkün olduğu kadar doğru ve güncel olması için tüm girişimlerin yapılmış
olmasına rağmen) bunların yanlışlığı için sorumlu tutulamaz.
Temel
Terminoloji:
Farz edelim ki bir
kişi diğer bir kimseye bir mesaj göndermek istiyor ve başka hiçbir kimsenin
mesajı okumadığından emin olmak istiyor. Ancak, bir başka kimsenin mektubu
açması veya elektronik iletişimi duyması olasılığı vardır. Kriptografik
terminolojide mesaj plaintext (düz-metin) veya cleartext ( temiz-metin) olarak
adlandırılır. Mesajın içeriğini diğer kişilerden saklamak için kodlamaya
encryption (şifreleme) adı verilir. Şifrelenmiş mesaja ciphertext
(şifreli-mesaj) denir. Ciphertext’ten düz-metni elde etme işlemine decryption
(çözme) adı verilir. Şifreleme ve çözme genelde bir anahtar kullanılarak
yapılır ve kodlama metodu öyledir ki çözme işlemi ancak doğru anahtarın
bilinmesiyle gerçekleştirilebilir.
Kriptografi
mesajların gizli tutulması sanatı veya bilimidir. Kriptanaliz cipher’ların
kırılması sanatıdır, örneğin doğru anahtarı bilmeden düz-metnin elde edilmesi.
Kriptografi ile uğraşanlara kriptograf ve kriptanalizin uygulamacılarına
kriptanalist denir.
Kriptografi gizli
mesajlaşma, onaylama, dijital imzalar, elektronik para ve diğer uygulamaların
tüm yönleriyle ilgilidir. Kriptoloji, kriptografik metotların matematiksel
temelleriyle ilgilenen bir matematik dalıdır.
Temel
Kriptografik Algoritmalar:
Şifreleme ve
çözmenin bir metoduna cipher denir. Bazı kriptografik metotlar algoritmanın
gizliliğine dayanır; böyle algoritmaların sadece tarihi önemi vardır ve
gerçek-dünya ihtiyaçları için yeterli değildir. Tüm modern algoritmalar
şifreleme ve çözme işlemlerini kontrol etmek için bir anahtar kullanırlar; bir
mesaj sadece kullanılan anahtar şifreleme anahtarıyla uyuştuğunda çözülebilir.
Anahtar temelli
algoritmaların iki çeşidi vardır; simetrik (veya gizli-anahtar) ve asimetrik
(veya açık-anahtar) algoritmaları. Aralarındaki fark, simetrik algoritmalar
şifreleme ve çözme işlemleri için aynı anahtarı kullanırken (veya çözme
anahtarı şifreleme anahtarından kolayca türetilebilir) , asimetrik algoritmalar
şifreleme ve çözme için farklı anahtar kullanırlar ve çözme anahtarı şifreleme
anahtarından elde edilemez.
Simetrik
algoritmalar stream cipher (akan şifre) ve blok cipher olarak ikiye
ayrılabilir. Stream cipher’lar belli bir anda bir bitlik düz-metni
şifreleyebilirken, blok cipher’lar pek çok biti alıp (tipik olarak modern
cipher’larda 64 bit) bunları tek bir birim olarak şifrelerler. Pek çok simetrik
cipher Algoritmalar sayfasında açıklanmıştır.
Asimetrik
cipher’lar (açık-anahtar algoritmaları veya açık-anahtar kriptografisi olarak
da adlandırılırlar) şifreleme anahtarının halka açık olmasına (bir gazetede
bile yayınlanabilirler) isteyen herkesin bu anahtarı kullanarak şifreleme
yapmasına izin verirken, sadece uygun/istenilen alıcı (çözme anahtarını bilen)
mesajı çözebilir. Şifreleme anahtarı açık-anahtar, ve çözme anahtarı da özel
veya gizli anahtar olarak da adlandırılır. Modern kriptografik algoritmalar
artık kalem-kağıt şifreleyicisi olmaktan çok uzaktır. Güçlü kriptografik
algoritmalar bilgisayarla veya özelleştirilmiş cihazlarda çalıştırılmak üzere
tasarlanmaktadır. Pek çok uygulamada kriptografi, bilgisayar yazılımlarıyla
yapılmaktadır. Genel olarak, simetrik algoritmalar bilgisayarda asimetrik olanlardan
çok daha hızlıdırlar. Uygulamada bunlar sık sık beraber kullanılırlar öyleki
açık-anahtar algoritmalar rasgele üretilmiş bir şifreleme anahtarını şifrelemek
için kullanılır ve rasgele anahtar hakiki mesajı simetrik bir algoritma
kullanarak şifrelemek için kullanılır. Bu bazen, hibrid (melez) şifreleme
olarak adlandırılır. Pek çok iyi kriptografik algoritmaların tanımları büyük
kitapçılar, kütüphaneler, patent büroları veya internetten elde edilebilir. En
çok çalışılan ve muhtemelen en yaygın simetrik cipher DES tir; yeni
geliştirilen AES en yaygın şifreleme algoritması olarak DES in yerini alabilir.
RSA muhtemelen en iyi bilinen asimetrik şifreleme algoritmasıdır. http://serdartorun.tripod.com/kriptokitap.html
sayfasında kriptografi ve ilgili alanlara ilişkin pek çok ders kitabı
bulabilirsiniz.
Dijital
İmzalar:
Bazı açık-anahtar
algoritmaları dijital imzalar üretmek için kullanılabilir. Bir dijital imza,
bazı gizli anahtarlar kullanılarak yaratılmış küçük bir bilgi parçasıdır ve
imzanın gerçekten uygun bir özel anahtar kullanılarak üretildiğini doğrulamak
için kullanılabilecek bir açık-anahtar vardır. İmzayı üretmek için kullanılan
algoritma öyle olmalıdır ki gizli anahtarı bilmeden geçerli sayılabilecek bir
anahtar üretmek mümkün olmasın.
Dijital imzalar
mesajın gerçekten istenilen göndericiden geldiğini doğrulamak için kullanılır
(sadece gönderenin kendi anahtarına karşılık gelen gizli anahtarı bildiğini
kabul ettik). Bunlar ayrıca dokümanları timestamp (zaman-pulu) ile işaretlemek
için de kullanılabilir: güvenilen bir kişi dokümanı imzalar ve kendi anahtarı
ile de zaman-pulunu imzalar, böylece dokümanın belirtilen zamanda var olduğunu
doğrular. Dijital imzalar bir açık-anahtarın belirli bir kişiye ait olduğunu
doğrulamak (veya onaylamak) için de kullanılabilir. Bu işlem, anahtarın ve
bunun sahibi hakkındaki bilginin birleşiminin (kombinasyonunun - combination),
güvenilen bir anahtar ile imzalanması suretiyle yapılır. Üçüncü bir kişinin ( güvenilen
anahtarın sahibi) dijital imzası, açık anahtar ve açık-anahtarın sahibi
hakkındaki bilgiler genelde sertifikalar (certificates) olarak adlandırılır.
Üçüncü kişi (Third Party) anahtarına güvenilmesinin sebebi, bunun başka bir
güvenilir anahtar ile imzalanmış olmasından olabilir. sonuçta bazı anahtarlar
güven hiyerarşisinin kökü (root) olmalıdır (öyleki, buna güvenilmez çünkü bir
başkası tarafından imzalanmıştır, ama bir öncekine inandığınızdan anahtar
güvenilir olabilir). Bir merkezileştirilmiş anahtar altyapısında (centralized
key infrastructure), güven ağında çok az kök vardır (örneğin, hükümet
birimleri; böyle kökler de sertifika otoriteleri olarak adlandırılırlar).
Dağılmış bir altyapıda evrensel olarak kabul edilmiş köklerin olmasına gerek yoktur,
ve her kesimin farklı güvenilir kökleri olabilir. Bu, örneğin PGP deki, güven
ağı (web of trust) kavramıdır. Keyfi bir dokümanın bir dijital imzası tipik
olarak dokümandan alınan bir mesaj özeti (message digest) hesaplaması , ve
imzalayan hakkında bilgi, bir zaman-pulu, vs. ile ilişkilendirilerek yaratılır.
Ortaya çıkan dizi uygun bir algoritma kullanılarak imzalayanın özel anahtarı
kullanılarak şifrelenir. Sonuçta elde edilen şifrelenmiş bitler bloğu imzadır.
Genelde, onu imzalamak için kullanılan açık-anahtar hakkındaki bilgi ile
beraber dağıtılır. Bir imzayı onaylamak için önce anahtarın , anahtara sahip
olduğu düşünülen kişiye ait olup olmadığının belirlenmesi (güven ağı veya önsel
bir bilgi kullanarak) ve sonra da kişinin açık-anahtarı kullanılarak imzanın
çözülmesi gerekir. eğer imzası uygun bir şekilde çözülürse ve bilgi
mesajınkiyle uyuşursa (uygun mesaj özeti vs.) imzanın geçerli olduğu kabul
edilir. Dijital imzaların yapımı ve onayı için gerekli pek çok algoritma
ücretsiz olarak elde edilebilir. En yaygın algoritma RSA dır.
Kriptografik
Hash (Karıştırma ---Parçalara Ayırma) Fonksiyonları:
Kriptografik hash
fonksiyonları (KHF) değişik durumlarda kullanılır, örneğin bir dijital imza
yaparken mesaj metninin hesaplanması için. Bir hash fonksiyonu, olası hash
değerleri arasında olası mesajların dağıtıldığı bir yol kullanılarak bir
mesajın bitlerini sabit-büyüklükteki bir hash değerine sıkıştırır. Bir KHF
bunu, belirli bir hash değerini parçalara ayırabilecek bir mesajın ortaya
çıkması olayını oldukça zorlaştıracak bir yolla yapar. KHF genelde 128 bit veya
daha büyük hash değerleri üretirler. Bu sayı ( ) dünyada değiş-tokuş
edilebilecek tüm mesajların sayısından bile daha büyüktür. 128 bitten daha
büyük sayıya olan gereksinimin temeli doğum günü paradoksuna dayanmaktadır.
Doğum günü paradoksu kabaca şöyledir: Bir hash fonksiyonu verilen bir mesajı
128 bitlik bir hash metnine adreslerse, parçalara ayrılmış mesaj rasgele
seçildiğinde aynı metnin iki kez hesaplanmasını bekleyebiliriz. Bilgisayarlar
için ucuz hafıza çipleri kullanıma sunuldukça 128 bit mesaj metinlerinden daha
genişlerine ihtiyaç duyulmaya başlanmıştır (daha şimdiden 160 bit standart hale
geldi). Pekçok iyi KHF ücretsiz olarak bulunabilmektedir. En ünlü KHF MD
ailesinden MD4 ve MD5 tir. MD4 kırılmış durumda, ve MD5 halen yaygın olarak
kullanılmasına rağmen güvensiz olarak düşünülebilir. SHA-1 ve RipeMD-160 halen
sapasağlam durmaktadırlar.
Kriptografik
Rasgele Sayı Üreteçleri:
Kriptografik
Rasgele Sayı Üreteçleri (KRSÜ) kriptograifk uygulamalar, örneğin anahtarlar
için, rasgele sayılar üretmektedir. Pekçok programlama dili veya uygulamada
bulunan geleneksel RSÜ leri kriptografik uygulamalar için uygun değillerdir
(bunlar kriptanalistlerin saldırılarına direnmek için değil, sadece
istatistiksel rasgelelik için tasarlanmışlardır). Optimal durumda, rasgele
sayılar kestirilemez rasgeleliğin gerçek fiziksel kaynaklarını temel
almaktadırlar. Bu tip kaynaklar yarı-iletken cihazlardaki gürültüyü, bir ses
girişinin (audio input) en küçük öenm bitlerini , veya kullanıcının klavye
tuşlarına vuruşları veya cihazların kesme noktaları arasındaki aralıkları
içerebilir. Fiziksel bir kaynaktan elde edilen gürültü sonra her bitin diğer
her bir bite bağımlı olması için bir KHF ile "süzülür". Rasgelelik içermek
amacıyla genelde (binlerce bitten oluşan) geniş bir havuz kullanılır, ve
havuzdaki her bir bit giriş gürültüsünün (input noise) her bir bitine ve
havuzdaki diğer her bite kriptografik olarak güçlü bir yolla bağımlı yapılır.
Gerçek fiziksel rasgelelik kullanılamadığında, pseudo-random (sahte-rasgele)
sayılar kullanılmalıdır. Aslında bu istenilmeyen durum genel amaçlı
bilgisayarlarda sıklıkla ortaya çıkar.
Önemli olan nokta,
verinin herhangi bir dış gözlemci için kestirilemez olmasıdır; bunu elde etmek
için, rasgele-havuz en az 128 bit gerçek entropi içermelidir. Kriptografik
Pseudo-Rasgele Sayı Üreteçleri tipik olarak, rasgelelik içeren geniş bir havuza
("çekirdek değeri") sahiptir. Havuzdan veri alınarak havuza iade
edilen bitler (havuzun içeriğinin ortaya çıkmasını önlemek için (veriyi
seçimlin olarak) bir KHF üzerinden çalıştırırlar. Daha fazla bite ihtiyaç
olduğunda havuzdaki her bir biti diğer her bite bağımlı yapan uygun bir rasgele
anahtarla (havuzun hiç kullanılmamış tarafından olabilir) havuzun içeriğini şifreleyerek
havuzu karıştırır. Önceki veya gelecekteki kestirimleri daha da zorlaştırmak
için havuz karıştırılmadan önce yeni çevresel gürültüler havuza eklenmelidir.
RSÜ kötü yapılmışlarsa sistemin en zayıf noktaları olacaklardır.
Kriptografik
Algoritmaların Gücü
İyi kriptografik
sistemler öyle tasarlanmalıdırlar ki bunları kırmak mümkün olduğu kadar zor
olsun. Uygulamada kırılamayacak sistemler yapmak olasıdır (ancak genelde bu
ispatlanamaz). Bir sistem tasarımcısı için sistemi kırılabilir bırakmanın hiçbir
özrü yoktur. Güvenliği aşmak için kullanılabilecek her mekanizma açığa
çıkarılmalı, belgelenmeli ve son kullanıcının dikkatine sunulmalıdır. Teoride,
herhangi bir anahtarlı kriptografik metot olası tüm anahtarların denenmesi ile
kırılabilir. Eğer tüm anahtarların denendiği kaba kuvvet (brute force)
kullanımı tek yolsa, gerekli hesaplama gücü anahtarın uzunluğu ile üstel olarak
artar. 32 bitlik bir anahtar ( yani 4,294,967,296 ) adım alır. Bu herhangi bir
ev bilgisayarı ile yapılabilecek bir şeydir. 40 bitlik anahtarlar adım alır- bu
tür bir hesaplama (kullanılan algoritmanın etkinliğine bağlı olarak ) modern
bir ev bilgisayarında bir hafta gibi bir zaman gerektirir. 56 bit anahtarlı bir
sistem (DES gibi) esaslı bir zahmet gerektirir ( çok sayıda ev bilgisayarının
güç paylaşımı ile bunu kırmak birkaç ay alır), ama özel donanımlarla kolayca
kırılabilir. Özel donanımların maliyetleri de doğal olarak yüksektir, ama
organize suç örgütleri, büyük hükümey ve şirketler bunları alabilirler. 64
bitli anahtarlarda şimdiden kırılabilir durumdadırlar. 80 bitli anahtarlar bir
kaç yıl sonra kırılabilecekken ve 128 bitli anahtarlar kaba kuvvet ile
muhtemelen kırılamayacaklardır. Ancak anahtar uzunluğu tek önemli konu
değildir. Pek çok cipher olası tüm anahtarlar denenmeden de kırılabilir.
Genelde, diğer metotların daha da etkili kullanımı ile bile kırılamayacak
cipherlar tasarlamak çok zordur. Kendi cipher’larınızı tasarlamak eğlenceli
olabilir, ancak gerçek uygulamalarda bunu yapmanız tavsiye edilmemektedir.
Çoğunlukla, algoritmanın gizliliğine dayanan algoritmalar güvenli değillerdir.
Özellikle yazılım yoluyla, herhangi bir kimse algoritmayı tersine çevirip
çalıştırabilecek (disassamble) birini kiralayabilir. Açık-anahtarlı
kriptografide kullanılan anahtarların uzunluğu simetrik cipher’larda
kullanılanlardan daha uzundur. Bunun nedeni, kriptanalistler için kullanılan
ekstra yapıdır. Burada problem doğru anahtarın tahmin edilmesi değil, gizli
anahtarın açık-anahtardan türetilmesidir. RSA da bu işlem iki asal çarpanı olan
bir tamsayının üretilmesi (? Factoring) ile yapılmaktadır. RSA
kripto-sisteminin karmaşıklığı hakkında biraz bilgi vermek gerekirse, 256
bitlik bir modulus evde kolayca ve 512 bitlik anahtarlar üniversitedeki
araştırma grupları tarafından birkaç ay içinde kırılabilir. 768 bitlik
anahtarlar muhtemelen uzun vadede güvende sayılmazlar. 1024 ve daha büyük bitli
anahtarlar RSA ya karşı büyük kriptografik ilerlemeler kaydedilmedikçe güvende
sayılırlar.
Kriptanaliz ve
Kriptosistemlere Saldırılar:
Kriptanaliz uygun
anahtarların bilinmeden şifrelenmiş iletişimlerin çözülmesi sanatıdır. En
önemli kriptanaliz tekniklerinden bazıları aşağıda verilmiştir:
Cipher-text
only (Sadece Şifreli Metin) Saldırısı:
Bu saldırı
tipinde, saldırıyı yapan kişi mesajın içeriği hakkında hiç bir şey
bilmemektedir, ve sadece şifreli-metni kullanarak çalışmalıdır. Uygulamada düz
metne (plain text) - pek çok mesaj türü sabit başlık formatlarına olduğundan -
ilişkin tahminler yapmak genelde olasıdır. Sıradan mektuplar ve belgeler bile
kestirilebilir bir şekilde başlamaktadır. Örneğin, pek çok klasik saldırıda
ciphertext’in frekans analizi kullanılmaktadır, ancak modern cipherlara karşı
bu yöntem iyi çalışmamaktadır. Buna rağmen mesajlar bazen istatistiksel bir
yanlılık içermektedirler.
Bilinen Düz-Metin
Saldırısı:
Saldırgan
ciphertext’in bazı kısımlarından düz metni tahmin edebilir veya bölebilir.
Geriye kalan iş bu bilgiyi kullanarak ciphertext bloklarını çözmektir. Bu
işlem, veriyi şifrelemek için kullanılan anahtarın belirlenmesi ile
yapılabilir. En sık kullanılan Bilinen Düz Metin Saldırısı, blok cipher’lara
karşı lineer kriptanaliz saldırısıdır.
Seçilmiş Düz
Metin Saldırısı:
Saldırgan
bilinmeyen anahtar ile şifrelenmiş istediği her metni elde edebilmektedir.
Buradaki iş, şifreleme için kullanılan anahtarı belirlemektir. Bu saldırı için
iyi bir örnek, blok cipherlara karşı (ve bazı durumlarda hash fonksiyonlarına
karşı) uygulanabilen diferensiyel kriptanalizdir. Bazı kriptosistemler,
özellikle RSA, seçilmiş-düz metin saldırılarına karşı açıktır. Bu tip
algoritmalar kullanıldığında, uygulama (veya protokol) öyle tasarlanmalıdır ki
saldırgan istediği düz metni şifrelenmiş olarak elde etmemelidir.
Ortadaki Adam Saldırısı:
Bu saldırı, kriptografik iletişim ve anahtar değişimi
protokolleri ile ilgilidir. Fikir şudur; iki kişi güvenli iletişim için
anahtarlarını değiş-tokuş ederken (örneğin Diffie-hellman kullanarak), bir
düşman kendisini iletişim hattındaki iki kişi arasına yerleştirir. Sonra bu
düşman her iki kişi ile ayrı bir anahtar değiş-tokuşu gerçekleştirir. Her iki
kişi farklı bir anahtar kullanarak işlerini tamamlayacaklardır ki bu anahtarlar
düşman tarafından bilinmektedirler. Bu noktadan sonra saldırgan uygun anahtar
ile herhangi bir iletişimi deşifre edebilecek ve bunları diğer kişiye iletmek için
diğer anahtar ile şifreleyecektir. Her iki tarafta güvenli bir şekilde
konuştuklarını sanacaklardır, ancak gerçekte saldırgan konuşulan herşeyi
duymaktadır.
Ortadaki-adam-saldırısını engellemenin bir yolu dijital
imzaları kullanabilen bir açık anahtar kriptosistemi kullanmaktır. Kurulum için
her iki tarafta karşı tarafın açık anahtarını bilmelidir (ki bu bazen açık
anahtar kriptosisteminin esas avantajını baltalamaktadır). Paylaşılan gizlilik
oluşturulduktan sonra, taraflarkendi dijital imzalarını karşı tarafa
göndermelidir. Ortadaki-Adam bu imzaları taklit etmeye çalışacak, fakat
imzaların sahtesini yapamayacağı için başarısız olacaktır.
Bu çözüm, açık anahtarların güvenli bir biçimde dağıtımı
için bir yolun varlığı halinde yeterlidir. Böyle bir yol X.509 gibi bir
sertifika hiyerarşisidir. Bu, örneğin, IPSec (Internet Protocol Security) ’de
kullanılmaktadır.
Gizili anahtar ile kriptosistemin çıktısı arasındaki
korelasyon kriptanaliz için ana bilgi kaynağıdır. En kolay durumda, gizli
anahtar hakkkındaki bilgi direkt olarak kriptosistemden sızdırılır. Daha
karmaşık durumlar, kriptosistem hakkında gözlenen (ölçülen) bilgi ile tahmin
edilen anahtar bilgisi arasındaki korelasyon üzerinde çalışmayı gerektirir. Bu
sıkça çok ileri düzey saldırı durumlarında kullanılır. Örneğin, blok cipherlara
karşı lineer (ve diferansiyel) saldırılarda kriptanalist bilinen (seçilmiş) düz
metin ve gözlenen şifreli-metin üzerinde çalışır.
1980 lerin sonuna doğru Adi Shamir ve Eli Biham tarafından
tanıtılan direfansiyel kriptanaliz, blok cipherlara (özellikle DES ’e) karşı bu
fikri (korelasyon fikrini) tam anlamıyla uygulayan ilk saldırıdır. Sonraları
Mitsuru Matsui DES ’e karşı daha etkili olan lineer kriptanalizi ileri
sürmüştür. Sonraqdan benzer fikirlere sahip saldırı çeşitleri geliştirilmiştir.
Bu konuya ilişkin belki de en iyi tanıtım EUROCRYPT ve
CRYPTO ’nun 1990 lı yıllar boyuncaki sayılarında verilmiştir.Çalışmaya, Mitsuru
Matsui’nin DES’in lineer kriptanalizi hakkındaki tartışması ile, veya Lars
Knudsen ’in budanmış diferansiyeller fikri ile (örneğin, IDEA kriptanalizi)
başlayabilirsiniz. Ayrıca Eli Biham ve Adi Shamir’in DES’İn kriptanalizi
hakkındaki kitabı bu konu üzerine "klasik" bir çalışma olarak
görülebilir.
Korelasyon fikri kriptografide temeldir ve pek çok
araştırmacı bu tip saldırılar karşısında güvenliği sağlamaya çalışmışlardır.
örneğin, Knoudsen ve Nyberg diferansiyel kriptanalize karşı güvenliği sağlamak
üzerine çalışmışlardır.
Kriptografi
Dersleri –1
Kriptografi
Kriptografi için "bilgiyi gizleme
sanatıdır" diyebiliriz. Kriptografinin amacı gönderen ve alıcı arasında
iletilen bilginin güvenliğini sağlamaktır. Genellikle veriyi saklamak ve
açmak için bazı algoritmalar ya da anahtarlar kullanılır. Böylece veriyi çalan
kişilere karşı bir güvenlik mekanizması sağlanmış olur. Zamanı geldiğince
bunları da anlatacağım ama öncelikle kriptogtafide sıkça kullanılan bazı
terimleri bilmenizde fayda var, bu kelimelerin Türkçe tam karşılıkları
olmadığından orjinal haliyle kullanacağım.
Temel terimler
Encrypt: Bilgiyi tanınmayacak şekilde gizlemek
(plaintext’i ciphertext’e dönüştürmek)
Decrypt: Bilgiyi tekrar orjinal formatına
dönüştürmek (ciphertext’i plaintext’e dönüştürmek)
Cipher: Kriptografide algoritma olarak bilinir.
Key: Bilgiyi saklamaya ya da orjinal haline
dönüştürmeye yarayan, algoritmalarla üretilen, komleks sıradaki alfa-nümerik
karakterler
Plaintext: Cleartext olarak da bilinir, gizlenmemiş ya
da decrypt edilmiş bilgi için kullanılır.
Ciphertext: Gizlenmiş data için kullanılır. Mesela şu
mesaj gibi: EyS6Iz6acuGAKrm1 GEcI4eJJolT68cOb1H/o/PxZ8 nYIs0UupT+0= =7mu0
Cipher
Cipher
için algoritmanın basit halidir diyebiliriz. Yani veriyi şifrelemek için
kullanılan kod şeklinde de düşünebilirsiniz. İlk zamanlarda cipher’leri
kırmak oldukça kolaydı, çünkü veriyi saklamak için kullanılan algoritmalar çok
basitti. Günümüzdeki cipher’lar ise oldukça komplekstir. Şimdi günümüze
kadar olan cipher’lara bir göz atalım:
1-Saklamalı
Cipher’lar
Saklamalı
cipher’lar yüzyıllar boyunca orduya bir emir göndermek, casusa bir bilgi
ulaştırmak vb. gibi amaçlarla bir mesajı gizlemek için kullanıldı. Aşağıdaki
mesaj yıllar önce ingiltere’deki bir hapishanedeki bir mahkuma iletildi ama
mesaj da gizlenmiş bir söz vardı:
Worthie Sir
John: Hope, that is the best comfort of the afflicated, cannot much, I fear me,
help you now. That I would saye to you, is this only: if ever I may be able to
requite that I do owe you, stand not upon asking me: Tis not much I can do: but
what I can do, bee you verie sure I wille. I knowe that, if deathe comes, if
ordinary men fear it, it frights not you, accounting is for a high hounour, to
have such a rewarde of your loyalty. Pray yet that you may be spare this soe
bitter, cup, I fear not that you will grudge any suffereings; onlie if bie
submission you can turn them away, tis the part of a wise man. Tell me, as If
you can, I do for you anythinge that you can wolde have done. The general goes
back on Wednesday. Restinge your servant to command. R.J.
Şimdi yukarıdaki
paragrafta her noktalama işaretinden sonraki 3.harfe bakın. Ne görüyorsunuz:
“panel at east end of chapel slides” (Küçük kilisenin doğu ucundaki panel
açılıyor) . Sonuçta ne mi olmuş? Mesajı çözen mahkum hapishaneden kaçmış.
2-
Yerdeğiştirilmiş Cipher’lar
Aslında bunun
basit versiyonlarını dergi ya da gazetelerin bulmaca eklerinde sıkça
görüyoruz. Buradaki mantık, adından da anlaşılacağı üzere yerdeğiştirmeye
dayanıyor. Harflerin, rakamların ya da karakterlerin yerleri değiştirilir ve
sonuçta ortaya gizlenmiş bir mesaj çıkar. Mesela
A B C D E F G H I
J K L M N O P R S Ş T U V X Y Z
S T U V X Y Z A B
C D E F G H I Ş J K L M N O P R
Yukarıdaki cipher
ile “savaş yarın” mesajını vermek isteseydik “jsnsk psşbg” gibi bir mesaj
iletecektik. Karşı tarafın bu mesajı anlayabilmesi için dekoder’e yani
yukarıdaki yapıya sahip olması gerekiyor. Bu cipher, dünyada en çok bilenen
cipher’dır ve bunu sıkça kullanmasından dolayı Sezar cipher’ı olarak bilinir.
Sezar cipher’ında her harfin yerine, o harften sonraki 3.harf gelir. Yani A
yerine D (ç’den özür diliyoruz) , B yerine E gelir. Yani tablo ile
gösterecek olursak :
Orjinal:
|
a
|
b
|
c
|
d
|
e
|
f
|
g
|
h
|
i
|
j
|
k
|
l
|
m
|
n
|
o
|
p
|
q
|
r
|
s
|
t
|
u
|
v
|
w
|
x
|
y
|
z
|
Gizlenmiş:
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
Bu cipher ile daha kompleks şifrelemeler yapılabilir. Mesela
A yerine 1 sonraki harf, B yerine 2 sonraki harf, C yerine 3 sonraki harf, D
yerine tekrar 1 sonraki harf gelebilir.
Usenet haber gruplarında mesajı gizlemek için kullanılan
ROT-13 de basit bir yapıya sahip yerdeğiştirilmiş cipher kullanılır. ROT-13
denilmesinin nedeni ise anahtarın 13 harf sonra gelmesine istinadendir, yani
her bir karakter 13 defa çevrilir. Buradaki yapı şöyledir:
Orjinal
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
Gizlenmiş
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
ROT-13’den
başka Vernam cipher’ı ya da meşhur ismiyle "one time pad"
de bir çeşit yerdeğiştirilmiş cipher’dır. One time pad, teorik olarak kırılamaz
çünkü anahtar boyutu plaintext boyutuna eşittir. Ancak pratikte
kullanılması pek kolay ve sağlıklı değildir.
ABD’ye göre Üsame
Bin Ladin de kırılması çok zor olan yerdeğiştirilmiş cipher’lar ile kendi
elemanlarına mesajlar iletiyor ve El-Kaide içinde de bu teknik sıkça
kullanılıyor.
ÖRNEK KRİPTOLAR
Örnek 1
Örnek kelime : kursunkalem
Örnek teknik :
Oncelikle bu kelimelerin alfabemizdeki karsiliklari
bulunur...
a=01 ; b=02 ; c=03 ; d=04 ; e=05 ; f=06 ; g=07 ; h=08 ; i=09
; k=10 ; l=11 ; m=12 ; n=13 ; o=14 ; p=15 ; r=16 ; s=17 ; t=18 ; u=19 ; v=20 ;
y=21 ; z=22 ;
k=10 ; u=19 ; r=16 ; s=17 ; u=19 ; n=13 ; k=10 ; a=01 ; l=11
; e=05 ; m=12
Yani : 1019161719131001110512
Önerme : Bu sayisal kombinasyonu ters cevirirsek...
1205110110131917161910
Sonuç : İşte size mükemmel bi sifreleme tekniği...
Örnek 2
Şifrelenmiş Hali : ÖAÜYASÖEPIR
Anahtar : 5 ( Bu anahtar sayesinde Şifre aşağıdaki gibi toplanıp 29 üzerinden modu alınarak karşılığı gelen harf yazılacaktır.)
A B C Ç D E F G Ğ H I İ J K
1 2 3 4 5 6 7 8 9 10 11 12 13 14
L M N O Ö P R S Ş T U Ü V Y Z
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
K= 14 + 5 = 19 mod 29 = 19 = Ö
U= 25 + 5 = 30 mod 29 = 1 = A
R= 21 + 5 = 26 mod 29 = 26 = Ü
Ş= 23 + 5 = 28 mod 29 = 28 = Y
U= 25 + 5 = 30 mod 29 = 1 = A
N= 17 + 5 = 22 mod 29 = 22 = S
K= 14 + 5 = 19 mod 29 = 19 = Ö
A= 1 + 5 = 6 mod 29 = 6 = E
L= 15 + 5 = 20 mod 29 = 20 = P
E= 6 + 5 = 11 mod 29 = 11 = I
M= 16 + 5 = 21 mod 29 = 21 = R
Örnek 3
Şifrelenmiş Hali : ?}½{}>?é_+
Yöntem : Tamamen Bana Ait :) (Varsa Böyle bir Yöntem Söyleyin)
Teknik : Klavye’de Shift ve Alt Tuş Kombinasyonu Sabit Kullanılmıştır. Rakamsal Değerleri ( 1 2 3 ...)gibi Alınarak Şifreleme Gerçekleştirilmiştir.
Harf Karşılıkları : é = A ! = B ’ = C ^=D +=E % = F & =G / = H ( = I )=İ = : J ?= K _=L <=M >=N £ =O #=Ö $=P ½=R {=S [=Ş ]=T }=U \=Ü |=V @=Y "=Z
İlk Şifrelediğim Kelimedir.O Yüzden Mantıklı bir Yöntemmidir Değilmidir Bilmek İsterim.
SelametLe...
Örnek 4
A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z
Türkçe’de Bildiğimiz Ünsüz Harfler:
B C Ç D F G Ğ H J K L M N P R S Ş T V Y Z
09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 (Toplam 21 Tane)
Türkçe’de Bildiğimiz Ünlü Harfler:
A E I İ O Ö U Ü
01 02 03 04 05 06 07 08 (Toplam 8 Tane)
K:18
U:07
R:23
s:24
U:07
N:21
K:18
A:01
L:19
E:02
M:20
Şifrelenmiş Hali: 1807232407211801190220 (Şimdi Bunu MD5’te Dönüştürürsek)
MD5’te Şifrelenmiş Hali : 7676999e64ae694531c4ab6f13b7b719
Örnek 5
Ornek............: kurşunkalem
Sifrelenmis hali: 0111101110001010110100000110001000010100101100110111000
Bunu daha da zorlastirmak icin anahtar sayi kullanilabilir ve bazi islemlerden gecirilerek daha da zor hale getirilebilir. Mesela, ((Binary karsilik + Binary 2)*Binary 2) gibi... Ben yalnizca basit olani, anahtarsiz sifrelemeyi yazdim.
Sifreleme Tablosu:
a:00000
b:00001
c:00010
ç:00011
d:00100
e:00101
f:00110
g:00111
ğ:01000
h:01001
ı:01010
i:01011
j:01100
k:01101
l:01110
m:01111
n:10000
o:10001
ö:10010
p:10011
r:10100
s:10101
ş:10110
t:10111
u:11000
ü:11001
v:11010
y:11011
z:11100
Once harflerin karsiligini yaziyoruz:
k u r ş u n k a l e m
01101 11000 10100 10110 11000 10000 01101 00000 01110 00101 01111
Sonra sira numarasi cift olan harfleri sola kaydiriyoruz, yani, 2.ci, 4.cu, 6.ci, 8.ci ...vs.. ve yukaridaki kurşunkalem kelimesi soyle oluyor (ukşrnuakelm):
u k ş r n u a k e l m
11000 01101 10110 10100 10000 11000 00000 01101 00101 01110 01111
En son bunu ters ceviriyoruz ve soyle oluyor:
m l e k a u n r ş k u
01111 01110 00101 01101 00000 11000 10000 10100 10110 01101 11000
uc islem:
1.kodlama
2.kaydirma
3.ters cevirme
Örnek 6
Vigenére Şifresi
Bu şifreleme yönteminde gönderici tarafından bir anahtar kelime belirlenmekte ve tüm metin sıra ile bu şifrede denk düşen harf ile toplanarak yerlerine yeni bir değer elde edilmektedir. Örneğin, metnimiz "kursunkalem" ve anahtar kelimemiz de "Cyber" olsun. Metnimizdeki ve anahtarımızdaki harflerin sayısal değerlerini yerlerine koyalım ve
taraf tarafa toplayalım mod 29’unu alarak şifrelenmiş metni elde edelim;
A B C Ç D E F G Ğ H I İ J K
01 02 03 04 05 06 07 08 09 10 11 12 13 14
L M N O Ö P R S Ş T U Ü V Y Z
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
K=14 U=25 R=21 S=22 U=25 N=17 K=14 A=01 L=15 E=06 M=16
C=03 Y=28 B=02 E=06 R=21 C=03 Y=28 B=02 E=06 R=21 C=03
+--------------------------------------------------------
mod(29)=> =17 =24 =23 =28 =17 =20 =13 =03 =21 =27 =19
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
N T Ş Y N P J C R V Ö
Bu durumda kripto metnimiz NTŞYNPJCRVÖ olmaktadır. Dewam edeceğim...
Örnek 7
Arkadaşlar tekniğim ascii ve Hex kodlarının birbirine entegre edilmesi mantığı ile çalışmaktadır. ASCII kullanılmasındaki asıl amaç büyük ve küçük harfe duyarlı olması ve diğer karakterleri de içermesidir. Böylece kriptomuz çok daha güvenli olacaktır.
Örneğin;
Şifrelenecek Sözcük: KursunKalem şeklinde olsun(K’ler büyük)
Şifrelenmiş Hali: 756D117651146C115611174B1106E7575977310872101751094B
Şifreleme is şöyle gerçekleşmekte:
Burdan ilk önce harflerin Decimal Değerlerini alıyoruz.
K - u - r - s - u - n - K - a - l - e - m
75-117-114-115-117-110-75 - 97-108-101-109
daha sonrada Hex değerlerini alıyoruz.
K - u - r - s - u - n - K - a - l - e - m
4B-75 -72 -73 - 75-6E -4B - 61-6C -65 - 6D
da sonrada bunları decimal kodların ilk sayısı ile hex kodların son sayısını yan yana getirerek yazıyoruz
yani 75 ve 6D daha sonra 117 ve 65 daha sonra da 114 ve 6C şeklinde ve sonuçta 756D117651146C115611174B1106E7575977310872101751094B değerini elde ediyoruz!
Hepiniz Allaha Emanet Olun!
//EDIT: Arkadaşlar buna ek olarak da şöyle birşey düşünülebilir.Demin bulduğumuz:
K-u-r-s-u-n-K-a-l-e-m
75-117-114-115-117-110-75-97-108-101-109
Decimal değerlerini şifrelemeden önce sayı değerlerini toplayarak tek basamak haline getirebiliriz. örneğin;
75 sayısını 7+5=12, 12 de 9 dan büyük olduğu için 1+2=3 şekline dönüştürüp sonra da şifrelebiliriz.
Buna görede şifremiz şu şekilde olur
K - u - r - s - u - n - K - a - l - e - m
3 - 9 - 6 - 7 - 9 - 2 - 3 - 7 - 9 - 2 - 1
K-u-r-s-u-n-K-a-l-e-m
4B-75-72-73-75-6E-4B-61-6C-65-6D
Yani yeni şifremiz: 36D96566C76194B26E37577397227514B
şeklinde olur! Böylece kriptolanmış halinin tutacağı boyut da azalmış olur! Selametle!
K - u - r - s - u - n - K - a - l - e - m
75-117-114-115-117-110-75 - 97-108-101-109
daha sonrada Hex değerlerini alıyoruz.
K - u - r - s - u - n - K - a - l - e - m
4B-75 -72 -73 - 75-6E -4B - 61-6C -65 - 6D
da sonrada bunları decimal kodların ilk sayısı ile hex kodların son sayısını yan yana getirerek yazıyoruz
yani 75 ve 6D daha sonra 117 ve 65 daha sonra da 114 ve 6C şeklinde ve sonuçta 756D117651146C115611174B1106E7575977310872101751094B değerini elde ediyoruz!
Hepiniz Allaha Emanet Olun!
//EDIT: Arkadaşlar buna ek olarak da şöyle birşey düşünülebilir.Demin bulduğumuz:
K-u-r-s-u-n-K-a-l-e-m
75-117-114-115-117-110-75-97-108-101-109
Decimal değerlerini şifrelemeden önce sayı değerlerini toplayarak tek basamak haline getirebiliriz. örneğin;
75 sayısını 7+5=12, 12 de 9 dan büyük olduğu için 1+2=3 şekline dönüştürüp sonra da şifrelebiliriz.
Buna görede şifremiz şu şekilde olur
K - u - r - s - u - n - K - a - l - e - m
3 - 9 - 6 - 7 - 9 - 2 - 3 - 7 - 9 - 2 - 1
K-u-r-s-u-n-K-a-l-e-m
4B-75-72-73-75-6E-4B-61-6C-65-6D
Yani yeni şifremiz: 36D96566C76194B26E37577397227514B
şeklinde olur! Böylece kriptolanmış halinin tutacağı boyut da azalmış olur! Selametle!
Örnek 8
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
F harfinden sonra 10 gelir ve 19 a kadar devam ettikten sonra 1A,1B,1C,1D,1E,1F gelir ve daha sonra 20 bu şekilde gider. Ama şuanki yapacağımız mantıkla bunu 9 harfe çıkartacağız. Yani 1,2,3,4,5,6,7,8,9 dan sonra A,B,C,D,E,F,G,H,I ve bundan sonra 10 gelecek. Mantığımız yine deminkinin aynı ilk önce Decimal değerleri alınacak.
K - u - r - s - u - n - K - a - l - e - m
75-117-114-115-117-110-75 - 97-108-101-109
daha sonra da hex yerine yeni ürettiğimiz sistemi kullanacağız.Bu sisteme bravex diyelim. Yani;
K - u - r - s - u - n - K - a - l - e - m
3I-63-60-61-63-5F-3I-52-5D-56-5E
şeklindedir.
K-u-r-s-u-n-K-a-l-e-m
75-117-114-115-117-110-75-97-108-101-109
Decimal değerlerini şifrelemeden önce sayı değerlerini toplayarak tek basamak haline getirebiliriz. örneğin;
75 sayısını 7+5=12, 12 de 9 dan büyük olduğu için 1+2=3 şekline dönüştürüp sonra da şifrelebiliriz.
Buna görede şifremiz şu şekilde olur
DECİMAL:
K - u - r - s - u - n - K - a - l - e - m
3 - 9 - 6 - 7 - 9 - 2 - 3 - 7 - 9 - 2 - 1
BRAVEX:
K - u - r - s - u - n - K - a - l - e - m
3I-63-60-61-63-5F-3I-52-5D-56-5E
da sonrada bunları decimal kodların ilk sayısı ile bravex kodların son sayısını yan yana getirerek yazıyoruz.
Kriptomuzun son hali: 35E95665D75293I25F36376196026313I şeklinde olacaktır!
3I-63-60-61-63-5F-3I-52-5D-56-5E
şeklindedir.
K-u-r-s-u-n-K-a-l-e-m
75-117-114-115-117-110-75-97-108-101-109
Decimal değerlerini şifrelemeden önce sayı değerlerini toplayarak tek basamak haline getirebiliriz. örneğin;
75 sayısını 7+5=12, 12 de 9 dan büyük olduğu için 1+2=3 şekline dönüştürüp sonra da şifrelebiliriz.
Buna görede şifremiz şu şekilde olur
DECİMAL:
K - u - r - s - u - n - K - a - l - e - m
3 - 9 - 6 - 7 - 9 - 2 - 3 - 7 - 9 - 2 - 1
BRAVEX:
K - u - r - s - u - n - K - a - l - e - m
3I-63-60-61-63-5F-3I-52-5D-56-5E
da sonrada bunları decimal kodların ilk sayısı ile bravex kodların son sayısını yan yana getirerek yazıyoruz.
Kriptomuzun son hali: 35E95665D75293I25F36376196026313I şeklinde olacaktır!
Örnek 9
Permuntasyon Teniği ile Şifreleme :K U R S U N K A L E M
1 2 3 4 5 6 1 2 3 4 5
KURSUNKALEM ve permutasyonumuz: P(1)= 3, P(2)= 5, P(3)= 1, P(4)= 6, P(5)= 4, P(6)= 2
şeklinde olsun. Bu durumda ilk 6 harf kendi içinde yer değiştirecektir yani 1. harfin yerine 3., 2. harfin yerine 5. vb. Öyleyse şifrelenmiş metnimiz şu şekilde olmaktadõr: RUKNSULMKEE. Permutasyonun tersten uygulanmasõ ile şifre kolaylõkla çözülebilmektedir. kalem kelimesi 5 harfli olduğu için P(4)= 6 permüntasyonu gerçekleşmediği için kendisi yazılmıştır...
A B C Ç D E F G Ğ H I İ J K
01 02 03 04 05 06 07 08 09 10 11 12 13 14
L M N O Ö P R S Ş T U Ü V Y Z
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
RUKNSULMKEE = 2125141722251516140606
Son Şifre Elde edilen Sayının Tersi : 6060416151522271415212
Mahir kardeş bize yorum yapmıyorsun bu herşey yolunda demek anlamına geliyor demi ? :)
Örnek 10
sadece örnekte verilen "kursunkalem" kelimesi için
her harf büyük karekter olarak MD5’e dönüştürülmüştür. Sonuç olarak:
K: a5f3c6a11b03839d46af9fb43c97c188
U: 4c614360da93c0a041b22e537de151eb
R: e1e1d3d40573127e9ee0480caf1283d6
S: 5dbc98dcc983a70728bd082d1a47546e
U: 4c614360da93c0a041b22e537de151eb
N: 8d9c307cb7f3c4a32822a51922d1ceaa
K: a5f3c6a11b03839d46af9fb43c97c188
A: 7fc56270e7a70fa81a5935b72eacbe29
L: d20caec3b48a1eef164cb4ca81ba2587
E: 3a3ea00cfc35332cedf6e5e9a32e94da
M: 69691c7bdcc3ce6d5d8a1361f22d04ac gibi değerler elde ederiz.
Şimdi
her harfe karşılık gelen bu şifrelerin ilk basamak değerlerini (kırmızı renkte olan karekterleri) alalım ve şifremizi oluşturalım.
Şifremiz: a4e548a7d36
Örnek 11
Şifrelenecek Metin + Şifreleme Anahtarı
-----[ Şifreleme fonksiyonu ]----> Şifrelenmiş Veri
Sabit Sayı Tablosu:
1->958
2->250
3->352
3->658
4->658
5->741
6->214
7->349
8->762
9->115
10->983
Şifreleme Anahtarı alınır ve her harfinin ayrı ayrı byte değeri alınır.Bu sayılar ile her birine denk gelen sabit sayı tablomuzdan sırasına göre mod(11) ile sabit sayı ile toplanır.
Bu işlem sonucunda bir sayı elde edilir.Bu sayı mod(50) ile modu alınır ve 25 eklenir.Elimizdeki büyük sayıyı küçültmüş olduk.Bu sayı şifrelenecek metnimizin her harfinin byte değerine teker teker eklenerek bir sayı elde edilir.ayrıca bu işlemin her devrine bir tane yalancı ANSII karakteri eklenir.
Bu karakter şifrelenecek metnimize teker teker eklediğimiz rakamla şifrelenecek metnimizin her harfinin byte değeriyle çarpımının mod(95) ile modu alınır.sonuçta elimizde 0 - 95 arası bi sayı elde ederiz.Bu sayıya 32 sabitimizi ekleyerek
32-127 arası ANSII karakterlerine denk gelen sayılar elde ederiz.Son olarak bunlarda ANSII karakterine dönüştürülür ve döngümüzün her devrine eklenir.Bu yalancı ANSII karakteri sayesinde şifreyi çözerken verileri ayırmamıza yarayacaktır :)
Bir örnekle açıklayalım:
Şifrelenecek Metin:KurşunKalem
Anahtar:Dr.CheckPoint
Şifrelenmiş Veri:
1830R1872H1869 2009>1872H1865*1830R1852z1863/1856p1864\
Sabit Sayı Tablosu:
1->958
2->250
3->352
3->658
4->658
5->741
6->214
7->349
8->762
9->115
10->983
İşlem Analizi:
D = 68
68 + 958 = 1026
r = 114
114 + 250 = 364
. = 46
46 + 352 = 398
C = 67
67 + 658 = 725
h = 104
104 + 741 = 845
e = 101
101 + 214 = 315
c = 99
99 + 349 = 448
k = 107
107 + 762 = 869
P = 80
80 + 115 = 195
o = 111
111 + 983 = 1094
i = 105
105 + 9787012 = 9787117
n = 110
110 + 958 = 1068
t = 116
116 + 250 = 366
25+ mod(50) toplam = 1755
1755 şifreleme sayımız...
K = 75
u = 117
r = 114
ş = 254
u = 117
n = 110
K = 75
a = 97
l = 108
e = 101
m = 109
sonuç:1830R1872H1869 2009>1872H1865*1830R1852z1863/1856p1864\
Selametle...
not:%100 bana aittir! alıntı değildir....
Devamı Gelecek...
{Dr.CheckPoint}
Örnek 12
01 02 03 04 05 06 07 08 09 10 11 12 13 14
L M N O Ö P R S Ş T U Ü V Y Z
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Şifrelenecek metin : KURSUNKALEM
Şifrelenmiş Hali : RJYHCDROSŞŞ
Anahtar : 119
Şifreleme tekniği : 119 yalancı asal sayısının ( iki asal sayının çarpımına yalancı asal sayı denir.) çarpanları ( 7 x 17) sırasıyla harflerin sayı karşılığına bu asallar eklenip 29’a modları alınacak ve meydana gelen sayının karakter karsılığı yazılacak, Formulize edersek:
P(TekSayılıSıra) = [(Harfin rakamsal karşılığ + 07) mod 29 ]=> Harf Karşılığı
P(ÇiftSayılıSıra)= [(Harfin rakamsal karşılığ + 17) mod 29 ]=> Harf Karşılığı
01.K = 14, 14 + 07 =21, 21 mod 29 = 21, 21 = R
02.U = 25, 25 + 17 =42, 42 mod 29 = 13, 13 = J
03.R = 21, 21 + 07 =28 28 mod 29 = 28, 28 = Y
04.S = 22, 22 + 17 =39, 39 mod 29 = 10, 10 = H
05.U = 25, 25 + 07 =32, 32 mod 29 = 03, 03 = C
06.N = 17, 17 + 17 =34, 34 mod 29 = 05, 05 = D
07.K = 14, 14 + 07 =21, 21 mod 29 = 21, 21 = R
08.A = 01, 01 + 17 =18, 18 mod 29 = 18, 18 = O
09.L = 15, 15 + 07 =22, 22 mod 29 = 22, 22 = S
10.E = 06, 06 + 17 =23, 23 mod 29 = 23, 23 = Ş
11.M = 16, 16 + 07 =23, 23 mod 29 = 23, 23 = Ş
Örnek 13
a=01 ; b=02 ; c=03 ;
d=04 ; e=05 ; f=06 ; g=07 ; h=08 ; i=09 ; k=10 ; l=11 ; m=12 ; n=13 ; o=14 ;
p=15 ; r=16 ; s=17 ; t=18 ; u=19 ; v=20 ; y=21 ; z=22 ;
İlk
olarak , Kursunkalem kelimesini Base64 ile encode ediyoruz.
a3Vyc3Vua2FsZW0=
Şimdi Sistemimiz
şu; yukarıdaki tabloda içermeyen tüm harfler, rakamlar ve karakterler
aynı kalmak koşulu ile base64 ile encode ettiğimiz kursunkalemin karşılıklarını
tabloda bulup çeviroyuruz.
a3Vyc3Vua2FsZW0=a = 01
3 = C
V = 20
Y = 21
C = 03
3= c
V= 20
U= 19
a=01
2= b
F= 06
S= 17
Z= 22
W= W
0= 0
Sonuç;
Kursunkalem
01c202103c201901b061722W0=
Örnek 14
Şifrelenmiş Hali:8193899193848168827383
İlk olarak Türk ve İngiliz alfabesini birleştiriyoruz;
A B C Ç D E F G Ğ H I İ J K L M N O Ö P Q R S Ş T U Ü v W X Y Z
Sonrada harfleri tersten A=Z B=Y halinde bir tablo yapıyoruz;
A B C Ç D E F G Ğ H I İ J K L M N O Ö P Q R S Ş T U Ü v W X Y Z
Z Y X W V Ü U T Ş S R Q P Ö O N M L K J İ I H Ğ G F E D Ç C B A
Daha sonra her harfe ikinci tablodan A=99 B=98 olacak şekilde ikinci tabloyu oluşturuyoruz;
a=99 b=98 c=97 ç=96 d=95 e=94 f=93 g=92 ğ=91 h=90 ı=89 i=88 j=87 k=86 l=85 m=84 n=83 o=82 ö=81 p=80 q=79 r=78 s=77 ş=76 t=75 u=74 ü=73 v=72 W=71 x=70 y=69 z=68
ve hepsini uyguluyoruz;
kurşunkalem
öfığfmözoün
8193899193848168827383
aklıma ilk gelen bu eğer programlar her iki rakamı ayırıp ikinci tablodaki harflere eşitleyip ve sonra elde ettiğimizi birinci tabloya uygularsak bu şekilde bir program yapılabilir, kısa süre sonra isterseniz bu şifreleme tekniğinin asp ve visual basic kodlarını yayınlayabilirim (bir de pascal).
Örnek 15
Metin:KurşunKalem
boyut : 1024 bit
Sonuç (veri imzası):
---------imza başlangıcı 1024 bit--------------
321A23302E314E2A2C2A77AE1E1F2992DA223A34
1391102B20D223BE113D1718242610384A5D9E251
F2F33321E3AFA18961917A020A1521D1132113BB
D12112B8039F8222B754E3216E6171E3BAF29193
2261D2A2E351D295D8A121B3C2BDE243C1C3CC
82B141E391B1028241410273C3EF81F3A143C3B1
A1D37185E363A2629
----------------İmza sonu--------------------
yöntem:
yöntemin adını doktorun kapları koyuyorum.elimde 128 tane kap var.imzalıyacağım verinin her karakterinin byte değerini sırasıyla eşleştirip çarpıyorum.ve sırasıyla bunları kaplara dolduruyorum.ama her kaba eşit miktarda veri koyuyprum.ve her kabı (I) kendinden bir önceki kaptan veri ile topluyorum.kaptaki verilere günlük hayatımızda kullandığımız ve her bakkal çırağının günlük işlemi olan şu fonksiyonu uyguluyoruz
f(x)=(önceki veri+(metin byte+(metin byte*işlem sırası)*işlem sırası*555) mod 1000
işte bu basit fonksiyon ile veri taşırıyor ver geri dönemez tek yönlü imza meydana geliyor.işimiz tabiki bunula bitmiyor.elimizdeki artık dolu olan 128 kabın hex değerlerini alıyoruz ver karşımıza 256 byte (1024 bit) lık bi imza çıkıyor.bu imza sayesinde metin verilerimizin doğruluğu rahatlıkla sağlıyabiliyoruz.
Ne kadar güvenli?
Aslında md5 kadar complex bir yapıya sahip olmasada yinede geri döndülemeyeceğine eminim.Ve 2 verinin aynı imzayı verme olasığı tam olarak 2^1024 (iki üzeri bin yirmi dört) gibi dehşet bi rakam.
umarım yeterince açık anlatabilmişimdir.
Eğer üstad beğernir ve doğruluğunu onaylarsa CW için bu tür imzalama (1024 bit) programı yapabilirim.
söylememe gerek yok ama neyse gelenek bozulmasın %100 bana aittir.alıntı değildir!
Selametle...
{Dr.CheckPoint}
Örnek 16
Yeni bi ornek daha yapalim...Cep telefonunda hesap makinesi
olanlar rahatlikla uygulayabilirler ;
Kelime ; kursunkalem...
Teknik ;
1- Kelimemizi bilesenlerine ayiriyoruz...:
kursun + kalem
2- Cep telefonunun hesap makinesini aciyoruz...Ve
bilesenlerine ayirdigimiz kelimelerden once kursunu yaziyoruz , rakamsal degeri
yaklasik olarak su oluyor ( Tuslarin rakamsal degeri telefondan telefona
degisebilir ; ancak onemli olan sekiller , sifreler degil uygulanan
tekniktir... ) ;
k=5 , u=8 , r=7 , s=7 , u=8 , n=6
sonra ikinci bilesenimizi kalemi cep
telefonumuzun hesap makinesinde yazarak rakamsal degerini buluyoruz...:
k=5 , a=2 , l=5 , e=3 , m=6
Sonra bunlari carparak yada bolerek yada toplayarak yada
cikararak sifremizi buluyoruz...Ben carpmayi tercih ediyorum...Sonuc ;
587786 x 52536 = 30879925296
$ifre ; 30879925296
Bu kriptoya gelen cevap :
ornegin:
1 X 100 = 100
2 X 50 = 100
4 X 25 = 100
5 X 20 = 100
gibi.....
Boyle bir sonucdan, ters islem olan iki farkli veriyi elde etme yontemi nasil olur bunu pek anliyamadim.. ( Yani hocam; Turevi yaptik yapmasina, Integrali nasil yapacaz.....?)
Eger gozden kacirdigim bir nokta varsa bildiriniz...
Selam ve Dua ile..
Örnek 17
01 02 03 04 05 06 07 08 09 10 11 12 13 14
L M N O Ö P R S Ş T U Ü V W Y Z
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Şifrelenecek metin : KURSUNKALEM
Şifrelenmiş Hali : NEHĞETNZMUL
Formul : P(sayı) = [(Harfin ikil karşılığının 1’e Tümlenmiş Hali )=> sayı karşılığı]=> Harf Karşılığı
1 = (00001)2 16= (10000)2
2 = (00010)2 17= (10001)2
3 = (00011)2 18= (10010)2
4 = (00100)2 19= (10011)2
5 = (00101)2 20= (10100)2
6 = (00110)2 21= (10101)2
7 = (00111)2 22= (10110)2
8 = (01000)2 23= (10111)2
9 = (01001)2 24= (11000)2
10= (01010)2 25= (11001)2
11= (01011)2 26= (11010)2
12= (01100)2 27= (11011)2
13= (01101)2 28= (11100)2
14= (01110)2 29= (11101)2
15= (01111)2 30= (11110)2
İkilik taban da Karşılığı 1’e Tümlenmiş Hali Tablodaki karşılığı
________________________ _________________________ _________________________
K= 01110 => 10001 => N
U= 11001 => 00110 => E
R= 10101 => 01010 => H
S= 10110 => 01001 => Ğ
U= 11001 => 00110 => E
N= 10001 => 01110 => T
K= 01110 => 10001 => N
A= 00001 => 11110 => Z
L= 01111 => 10000 => M
E= 00110 => 11001 => U
M= 10000 => 01111 => L
Örnek 18
1- Bunlarin alfabedeki sayi degerleri alinir...
a=01 b=02 c=03 d=04 e=05 f=06 g=07 h=08 i=09 j=10 k=11 L=12 m=13
n=14 o=15 p=16 r=17 s=18 t=19 u=20 v=21 y=22 z=23
Kursunkalem = 1120171820141101120313
2- Bu sayilardan ayni olanlar ce$itli renklerle guruplanirlar ;
1120171820141101120313
3- Rakamlar soldan saga dogru ayni olanlar ayni satirda siralanirken ; farkli rakamlar yukaridan assagiya dogru siralanir...Yine rakamlar soldan saga dogru a$$agidaki rakamlarda goz onunde tutularak teker teker okundugunda 2.basamaktaki sayiyi elde etmemiz gerekiyor...Aksi algoritmayi yanlis yapmi$iz demektir...
C:\Documents and
Settings\Administrator\Belgelerim\Resimlerim\cripto.jpg
1207843
Örnek 19
Benim de amatör düzeyde ilgim var kriptolojiye.Basit bi örnek:
kurşun kalem : her harfin ascii kodunu alıyoruz.
k=107
u=117
r=114
ş=254
u=117
n=110
boşluk(space)=32
k=107
a=97
l=108
e=101
m=109
Değerlerin ortalamasını alıyoruz :1373/12=114+5
Her harfin ascii koduna kalan |bölüm-(bölen x kalan)| ekliyoruz.
Kalan 0 ise bölüm-bölen i ekliyoruz.
Şu halde : 114-(12 x 5)=54
107+54=161
117+54=171
114+54=168
254+54=53(255 in katlarında 0 dan devam ediyoruz)
117+54=171
110+54=164
32+54=86
107+54=161
97+54=151
108+54=162
101+54=155
109+54=163
Her rakamı ascii karakterine dönüştürüyoruz :
k=i
u=«
r=¨
ş=5
u=«
n=¤
boşluk(space)=V
k=i
a=—
l=¢
e=›
m=£
kurşun kalem : i«¨5«¤Vi—¢›£
Bu tabi kırılması kolay bir yöntem.Daha fazla kasıp,daha fazla eğlenip,daha sağlam algoritmalar geliştirebiliriz.
Örnek 20
a=01 b=02 c=03 d=04 e=05 f=06 g=07 h=08 i=09 j=10 k=11 l=12
m=13 n=14 o=15 p=16 r=17 s=18 t=19 u=20 v=21 y=22 z=23
k=11 u=20 r=17 s=18 u=20 n=14 k=11 a=1 l=12 e=5 m=13
Önerme :
Anahtar verilerek Harflerin i$aret ettikleri rakamlarin dizinlerinde i$lem yapilacak...
Anahtar :
4
Yöntem :
’’k’’ harfi icin , oncelikle ’’k’’ harfinin alfabemizdeki rakam kar$iligini buluyoruz...Yani 11.§onra Pascal ucgeninden 11 basamagin 4. üncü rakami ’’k’’ icin $ifremiz olacaktir...Yani :
$ifremiz :
k=165 u=1140 r=680 s=816 u=1140 n=364 k=165 a=01 l=220 e=10 m=286
$ifre :
kursunkalem = 165114068081611403641650122010286
Not :
Anahtari siz dilediginiz rakam yapabilirsiniz...
Güzel bi metin peki benim gönderebileceğim kriptoyu çözebilir misiniz?
YanıtlaSil