# Şifre
Kriptografide, bir şifre () şifreleme veya şifre çözme—bir prosedür olarak izlenebilen bir dizi iyi tanımlanmış adım gerçekleştirmek için bir algoritmadır. Alternatif, daha az yaygın bir terim "şifreleme"dir. Şifrelemek veya kodlamak, bilgiyi şifreye veya koda dönüştürmektir. Yaygın kullanımda "şifre", "kod" ile eş anlamlıdır, çünkü her ikisi de bir mesajı şifreleyen bir dizi adımdır; ancak kriptografide, özellikle klasik kriptografide kavramlar farklıdır.
Kodlar genellikle çıktıdaki farklı uzunluktaki karakter dizilerini değiştirirken, şifreler genellikle girilenle aynı sayıda karakteri değiştirir. Bir kod, bir anlamı diğeriyle eşler. Kelimeler ve ifadeler harf veya sayı olarak kodlanabilir. Kodlar tipik olarak girdiden anahtara doğrudan bir anlama sahiptir. Kodlar öncelikle zaman kazanmak için işlev görür. Şifreler algoritmiktir. Verilen girdinin çözülmesi için şifrenin sürecini takip etmesi gerekir. Şifreler genellikle yazılı bilgileri şifrelemek için kullanılır.
Kodlar, rastgele bir karakter veya sayı dizisini bir kelime veya ifadeye bağlayan büyük bir kod kitabına göre değiştirilerek çalıştırılır. Örneğin, "UQJHSE" "Aşağıdaki koordinatlara ilerleyin" için bir kod olabilir. Bir şifre kullanıldığında orijinal bilgi düz metin, şifrelenmiş hali ise şifreli metin olarak bilinir. Şifreli metin mesajı, düz metin mesajının tüm bilgilerini içerir, ancak şifresini çözmek için uygun mekanizma olmadan bir insan veya bilgisayar tarafından okunabilir bir formatta değildir.
Bir şifrelemenin çalışması genellikle anahtar (ya da geleneksel NSA dilinde "kriptovariable") adı verilen bir yardımcı bilgiye bağlıdır. Şifreleme prosedürü, algoritmanın ayrıntılı çalışmasını değiştiren anahtara bağlı olarak değişir. Bir mesajı şifrelemek için bir şifre kullanmadan önce bir anahtar seçilmelidir. Anahtarın bilgisi olmadan, elde edilen şifreli metnin şifresini çözerek okunabilir düz metne dönüştürmek imkansız olmasa bile son derece zor olmalıdır.
Modern şifrelerin çoğu çeşitli şekillerde kategorize edilebilir:
  - Genellikle sabit boyuttaki sembol blokları (blok şifrelemeler) veya sürekli bir sembol akışı (akış şifrelemeleri) üzerinde çalışıp çalışmadıklarına göre.
  - Hem şifreleme hem de şifre çözme için aynı anahtarın kullanılıp kullanılmadığına (Simetrik anahtar algoritmaları) veya her biri için farklı bir anahtarın kullanılıp kullanılmadığına (asimetrik anahtar algoritmaları) göre. Algoritma simetrik ise, anahtar alıcı ve gönderici tarafından bilinmeli ve başka hiç kimse tarafından bilinmemelidir. Algoritma asimetrik ise, şifreleme anahtarı deşifreleme anahtarından farklıdır, ancak onunla yakından ilişkilidir. Anahtarlardan biri diğerinden çıkarılamıyorsa, asimetrik anahtar algoritması açık/özel anahtar özelliğine sahiptir ve anahtarlardan biri gizlilik kaybı olmadan açık hale getirilebilir.


## Etimoloji.
Kökeni Arapça sıfır صفر (sifr) kelimesine dayanan "şifre (cipher)" kelimesi, Orta Çağ'da Arap rakam sisteminin bir parçası olarak Avrupa'ya yayılmıştır. Roma rakam sistemi sıfır kavramından yoksundu ve bu durum matematikteki ilerlemeleri sınırlıyordu. Bu geçiş sırasında kelime Orta Çağ Latincesine "cifra", Orta Çağ Fransızcasına ise "cifre" olarak geçmiştir. Bu da sonunda İngilizce "cipher" (azınlık yazımıyla "cypher") kelimesine yol açmıştır. Terimin kodlama anlamına nasıl geldiğine dair bir teori, sıfır kavramının Avrupalılar için kafa karıştırıcı olduğu ve bu nedenle terimin kolayca anlaşılamayan bir mesaj veya iletişime atıfta bulunmaya başladığıdır.
"Şifre" ("cipher") terimi daha sonra herhangi bir Arap rakamına veya bunları kullanarak yapılan hesaplamalara atıfta bulunmak için de kullanılmıştır, bu nedenle metni Arap rakamları şeklinde kodlamak, metni kelimenin tam anlamıyla "şifrelere" ("ciphers") dönüştürmektir.


## Karşı kodlar.
Gündelik bağlamlarda "kod" ve "şifre" genellikle birbirinin yerine kullanılabilir; ancak kelimelerin teknik kullanımları farklı kavramlara atıfta bulunur. Kodlar anlam içerir; kelimeler ve ifadeler sayılara veya sembollere atanarak daha kısa bir mesaj oluşturulur.
Bunun bir örneği, telgraf alışverişi kullanılarak ticari sözleşmelerin yapılmasından kaynaklanan uzun telgraf mesajlarını kısaltmak için kullanılan ticari telgraf kodudur.
Bir başka örnek de, tıpkı yazılı Japoncanın heceleri temsil eden yerel Japonca karakterleri tamamlamak için Kanji (Japoncada Çince karakterler anlamına gelir) karakterlerini kullanmasına benzer şekilde, kullanıcının tüm bir kelimeyi bir sembol veya karakterle değiştirmesine olanak tanıyan tüm kelime şifreleridir. Kanji ile İngilizce dilini kullanan bir örnek, "The quick brown fox jumps over the lazy dog" ifadesini "The quick brown 狐 jumps 上 the lazy 犬" ile değiştirmek olabilir. Stenograflar bazen tüm kelimeleri kısaltmak için belirli semboller kullanırlar.
Öte yandan şifreler daha düşük bir seviyede çalışır: tek tek harfler, küçük harf grupları veya modern şemalarda tek tek bitler ve bit blokları seviyesi. Bazı sistemler güvenliği artırmak için çoklu şifreleme () kullanarak hem kodları hem de şifreleri tek bir sistemde kullanmıştır. Bazı durumlarda "kodlar" ve "şifreler" terimleri sırasıyla "yerine koyma (ikame)" ve "yerine değiştirme (transpozisyon)" ile eş anlamlı olarak kullanılır.
Tarihsel olarak, kriptografi kodlar ve şifreler olarak ikiye ayrılırken, kodlamanın da şifrelerinkine benzer kendi terminolojisi vardı: "Kodlama", "kod metni", "kod çözme" vb.
Bununla birlikte, kodların kriptanalize yatkınlık ve hantal bir kod kitabını yönetmenin zorluğu gibi çeşitli dezavantajları vardır. Bu nedenle, kodlar modern kriptografide kullanılmaz hale gelmiştir ve şifreler baskın tekniktir.


## Türler.
Çeşitli farklı şifreleme türleri vardır. Daha önce kriptografi tarihinde kullanılan algoritmalar modern yöntemlerden önemli ölçüde farklıdır ve modern şifreler nasıl çalıştıklarına ve bir veya iki anahtar kullanıp kullanmadıklarına göre sınıflandırılabilir.


### Tarihsel.
Sezar şifresi bilinen en eski kriptografik sistemlerden biridir. Julius Caesar, yaklaşık MÖ 50 yılında Marcus Tullius Cicero'ya yazmak için alfabedeki harfleri üçer üçer yer değiştiren ve kalan harfleri öne saran bir şifre kullanmıştır.
Geçmişte kullanılan tarihi kalem ve kağıt şifreleri bazen klasik şifreler olarak bilinir. Bunlar basit ikame şifresi (örneğin ROT13) ve yer değiştirme şifrelemesi (örneğin Ray Çit Şifresi) içerir. Örneğin, "GOOD DOG" "PLLX XLP" olarak şifrelenebilir, burada "L" mesajdaki "O" yerine, "P" "G" yerine ve "X" "D" yerine geçer. "GOOD DOG" harflerinin transpozisyonu "DGOGDOO" ile sonuçlanabilir. Bu basit şifreleri ve örnekleri, düz metin-şifreli metin çiftleri olmadan bile kırmak kolaydır.
1640'larda Parlamento komutanı Edward Montagu, Manchester 2. Kontu, İngiliz İç Savaşı sırasında müttefiklerine şifreli mesajlar göndermek için şifreler geliştirdi.
Basit şifrelerin yerini her harf için ikame alfabesini değiştiren polialfabetik ikame şifreleri (Vigenère gibi) almıştır. Örneğin, "GOOD DOG" "PLSX TWF" olarak şifrelenebilir, burada "L", "S" ve "W" "O" yerine geçer. Az miktarda bilinen veya tahmin edilen düz metinle bile, kalem ve kağıt şifreleme için tasarlanmış basit polifabetik yer değiştirme şifreleri ve harf aktarma şifrelerinin kırılması kolaydır. Tek kullanımlık şifre (one-time pad) temelinde güvenli bir kalem ve kağıt şifresi oluşturmak mümkündür, ancak bunların başka dezavantajları da vardır.
Yirminci yüzyılın başlarında, transpozisyon, polifabetik ikame ve bir tür "eklemeli" ikame kullanarak şifreleme ve şifre çözme yapmak için elektro-mekanik makineler icat edilmiştir. Rotorlu makinelerde, birkaç rotor diski polifabetik ikame sağlarken, fiş kartları başka bir ikame sağlıyordu. Anahtarlar, rotor diskleri ve fiş kartı telleri değiştirilerek kolayca değiştirilebiliyordu. Bu şifreleme yöntemleri önceki şemalardan daha karmaşık olmasına ve şifreleme ve şifre çözme için makineler gerektirmesine rağmen, bu şifreleme yöntemlerini kırmak için İngiliz Bombe gibi başka makineler icat edildi.


### Modern.
Modern şifreleme yöntemleri iki kritere göre ayrılabilir: kullanılan anahtarın türüne ve girdi verisinin türüne göre.
Kullanılan anahtar türüne göre şifreler ikiye ayrılır:
  - Simetrik anahtar algoritmaları (Özel anahtar kriptografisi): Şifreleme ve şifre çözme için aynı anahtarın kullanılır ve
  - Asimetrik anahtar algoritmaları (Açık anahtarlı kriptografi): Şifreleme ve şifre çözme için iki farklı anahtar kullanılır.
Bir simetrik anahtar algoritmasında (örneğin DES ve AES), gönderici ve alıcının önceden ayarlanmış ve diğer tüm taraflardan gizli tutulan ortak bir anahtarı olmalıdır; gönderici şifreleme için bu anahtarı kullanır ve alıcı şifre çözme için aynı anahtarı kullanır. AES'in (Gelişmiş Şifreleme Sistemi) tasarımı, DES'in (Veri şifreleme standardı) tasarımındaki kusurların üstesinden gelmeyi amaçladığı için faydalı olmuştur. AES'in tasarımcıları, modern şifreleme kriptanalitik saldırılarının yaygın araçlarının, tasarım yapısı nedeniyle AES'e karşı etkisiz olduğunu iddia etmektedir.
Şifreler, girdi verilerinin türüne göre iki türe ayrılabilir:
  - Sabit büyüklükteki veri bloklarını şifreleyen blok şifreler ve
  - Sürekli veri akışlarını şifreleyen akış şifreleri.


## Anahtar boyutu ve güvenlik açığı.
Saf matematiksel bir saldırıda (yani bir şifrenin kırılmasına yardımcı olacak başka herhangi bir bilginin olmadığı durumlarda) iki faktör her şeyden önemlidir:
  - Mevcut hesaplama gücü, yani problem üzerinde kullanılabilecek hesaplama gücü. Tek bir bilgisayarın ortalama performansının/kapasitesinin dikkate alınması gereken tek faktör olmadığını belirtmek önemlidir. Örneğin bir düşman, bir anahtar için kapsamlı arama hızını (yani "kaba kuvvet" saldırısı) önemli ölçüde artırmak için aynı anda birden fazla bilgisayar kullanabilir.
  - Anahtar boyutu, yani bir mesajı şifrelemek için kullanılan anahtarın boyutu. Anahtar boyutu arttıkça, kapsamlı arama karmaşıklığı da artar ve şifrelemeyi doğrudan kırmanın pratik olmadığı noktaya gelir.
İstenen etki hesaplama zorluğu olduğundan, teoride bir algoritma ve istenen zorluk seviyesi seçilir, böylece anahtar uzunluğuna buna göre karar verilir.
Bu sürecin bir örneği adresinde bulunabilir. 128 bitlik simetrik bir şifrenin, 3072 bitlik anahtarlara sahip bir asimetrik şifrenin ve 256 bitlik bir eliptik eğri şifresinin hepsinin şu anda benzer zorluklara sahip olduğunu önermek için birden fazla rapor kullanmaktadır.
Claude Shannon, bilgi teorisi değerlendirmelerini kullanarak, teorik olarak kırılamayan herhangi bir şifrenin en az açık metin kadar uzun ve yalnızca bir kez kullanılan anahtarlara sahip olması gerektiğini kanıtlamıştır: tek kullanımlık şifre.