# Kod (kriptografi)
Kriptolojide kod, anlam düzeyinde çalışan bir mesajı şifrelemek için kullanılan bir yöntemdir; yani, kelimeler veya ifadeler başka bir şeye dönüştürülür. Bir kod "change" kelimesini "CVGDK" ya da "cocktail lounge" kelimesine dönüştürebilir. ABD Ulusal Güvenlik Ajansı bir kodu şöyle tanımlamıştır: "Açık metin öğelerinin esas olarak sözcükler, ifadeler veya cümleler olduğu ve kod eşdeğerlerinin ("kod grupları" olarak adlandırılır) tipik olarak aynı uzunlukta anlamsız kombinasyonlardaki harflerden veya rakamlardan (veya her ikisinden) oluştuğu bir ikame şifre sistemi (kriptosistem)dir." İfadeleri veya kelimeleri şifrelemek ve şifrelerini çözmek için bir "kod kitabı" () gereklidir.
Buna karşın, şifreler mesajları tek tek harfler veya küçük harf grupları, hatta modern şifrelerde tek tek bitler düzeyinde şifreler. Mesajlar önce bir kod, sonra da bir şifre ile dönüştürülebilir. Bu tür çoklu şifreleme veya "süper şifreleme" kriptanalizi daha zor hale getirmeyi amaçlar.
Kodlar ve şifreler arasındaki bir başka karşılaştırma da bir kodun tipik olarak bir harfi veya harf gruplarını matematik kullanmadan doğrudan temsil etmesidir. Bu nedenle sayılar şu üç değeri temsil edecek şekilde yapılandırılır: 1001 = A, 1002 = B, 1003 = C, ... . Bu durumda ortaya çıkan mesaj ABC'yi iletmek için 1001 1002 1003 şeklinde olacaktır. Ancak şifreler, harfleri veya harf gruplarını temsil etmek için matematiksel bir formül kullanır. Örneğin, A = 1, B = 2, C = 3, ... . Böylece ABC mesajı her harfin değerinin 13 ile çarpılmasıyla elde edilir. O halde ABC mesajı 13 26 39 olacaktır.
Kodların kriptanalize yatkınlık ve hantal kod kitabını yönetmenin zorluğu gibi çeşitli dezavantajları vardır, bu nedenle şifreler artık modern kriptografide baskın tekniktir.
Bunun aksine, kodlar temsili olduklarından, tek tek kod kitabı öğelerinin matematiksel analizine açık değildirler. Örnekte, 13 26 39 mesajı her bir sayının 13'e bölünmesi ve ardından alfabetik olarak sıralanmasıyla kırılabilir. Bununla birlikte, kod kitabı kriptanalizinin odak noktası, frekans analizi kullanılarak düz metin mesajları içindeki aynı harf sıklığıyla eşleşen bireysel kod öğelerinin karşılaştırmalı sıklığıdır. Yukarıdaki örnekte, 1001, 1002, 1003 kod grubu birden fazla kez ortaya çıkabilir ve bu sıklık ABC'nin düz metin mesajlarında ortaya çıkma sayısıyla eşleşebilir.
(Geçmişte veya teknik olmayan bağlamlarda, "kod" ve "şifre" genellikle herhangi bir şifreleme biçimine atıfta bulunmak için kullanılır).


## Tek ve iki parçalı kodlar.
Kodlar, karşılık gelen düz metinleriyle birlikte listelenen kod gruplarının sözlükleri olan "kod kitapları" (fiziksel veya kavramsal) tarafından tanımlanır. Kodlar başlangıçta kod gruplarını kod tasarlayana veya kodlayıcıya kolaylık sağlamak için 'düz metin sırasına' göre atamıştır. Örneğin, sayısal kod grupları kullanan bir kodda, "a" ile başlayan bir düz metin kelimesi düşük değerli bir gruba sahip olurken, "z" ile başlayan bir kelime yüksek değerli bir gruba sahip olurdu. Aynı kod kitabı, bir düz metin mesajını kodlanmış bir mesaja veya "kod metnine" "kodlamak" ve bir kod metnini tekrar düz metin mesajına "çözmek" için kullanılabilir.
Kod kırıcılar için hayatı daha da zorlaştırmak amacıyla kod kırıcılar, kod grupları ile eşleşen düz metnin sıralaması arasında tahmin edilebilir bir ilişki olmayan kodlar tasarladılar. Pratikte bu, biri kodlama için kod gruplarını bulmak, diğeri de kod çözme için düz metni bulmak üzere kod gruplarına bakmak için iki kod kitabına ihtiyaç duyulduğu anlamına geliyordu. Bu tür "iki parçalı" kodlar geliştirmek için daha fazla çaba ve dağıtmak (ve değiştirildiklerinde güvenli bir şekilde atmak) için iki kat daha fazla çaba gerektiriyordu, ancak kırılmaları daha zordu. Ocak 1917'deki Zimmermann Telgrafı, 10.000'den fazla cümle ve tek tek kelime içeren Alman diplomatik "0075" iki parçalı kod sistemini kullanmıştır.


## Tek kullanımlık kod.
Tek kullanımlık kod (), basit bir mesajı iletmek için yalnızca bir kez kullanılması amaçlanan önceden düzenlenmiş bir kelime, ifade veya semboldür, genellikle bir planı yürütme veya iptal etme ya da başarılı veya başarısız olduğunu onaylama sinyalidir. Tek seferlik kodlar genellikle masum bir konuşma gibi görünen bir konuşmaya dahil edilmek üzere tasarlanır. Düzgün bir şekilde yapıldıklarında tespit edilmeleri neredeyse imkansızdır, ancak zaten şüphe uyandıran birinin iletişimini izleyen eğitimli bir analist "Bertha Teyze doğuma girdi" gibi bir yorumun uğursuz bir anlamı olduğunu fark edebilir. Tek seferlik kodların ünlü örnekleri şunlardır:
 - İncil'de Jonathan, Jonathan'ın babası Kral Saul'dan saklanmakta olan Davud ile bir şifre hazırlar. Okçuluk talimi sırasında Yonatan okları getiren hizmetkâra "oklar bu tarafta" derse Davut'un saraya dönmesi güvenlidir, "oklar senin ötende" derse Davut kaçmak zorundadır. 
 - Henry Wadsworth Longfellow tarafından yazılan "Paul Revere's Ride" şiirindeki "One if by land  two if by sea" dizesi
 - "Niitaka Dağı'na tırmanın" - Japon uçaklarına Pearl Harbor saldırısı başlatmaları için verilen sinyal
 - II. Dünya Savaşı sırasında British Broadcasting Corporation'ın denizaşırı servisi düzenli yayın programının bir parçası olarak sık sık "kişisel mesajlar" yayınına yer verdi. Spikerler tarafından okunan görünüşte saçma mesaj akışı aslında düşman hatlarının gerisinde faaliyet gösteren Special Operations Executive (SOE) ajanlarına yönelik tek seferlik kodlardı. Örnek olarak "Prenses kırmızı ayakkabı giyiyor" veya "Mimi'nin kedisi masanın altında uyuyor" verilebilir. Her kod mesajı iki kez okunuyordu. Bu şekilde, Fransız Direnişi'ne D-day'den önceki gece demiryolu ve diğer ulaşım bağlantılarını sabote etmeye başlamaları talimatı verildi.
 - "Tüm İspanya'da gökyüzü açık", 17 Temmuz 1936'da İspanya'daki milliyetçi askeri isyanı başlatmak için (radyoda yayınlanan) bir sinyaldi.
Bazen mesajlar önceden düzenlenmez ve sadece alıcılar tarafından bilinmesi umulan ortak bilgilere dayanır. Buna bir örnek, Sovyet başbakanı Joseph Stalin ile görüşmek üzere Potsdam Konferansı'nda bulunan ABD Başkanı Harry Truman'a gönderilen ve Truman'ı atom bombasının ilk başarılı testi hakkında bilgilendiren telgraftır. 
 "Bu sabah ameliyat edildi. Teşhis henüz tamamlanmadı ama sonuçlar tatmin edici görünüyor ve şimdiden beklentileri aştı. İlgi çok uzaklara yayıldığı için yerel basın açıklaması gerekli. Dr. Groves memnun. Yarın dönüyor. Sizi bilgilendirmeye devam edeceğim."
"Ayrıca bakınız"; Tek kullanımlık şifre, bu makale ile ilgisi olmayan bir şifreleme algoritması


## Ahmak kodu.
Bir "ahmak kodu" (), onu kullanan taraflarca oluşturulan bir koddur. Bu tür bir iletişim, orduların sahada kullandığı el işaretlerine benzer.
Örnek olarak: 'Gündüz' ve 'gece' kelimelerinin kullanıldığı her cümle 'saldırı' anlamına gelir. Aşağıdaki cümlede belirtilen yer, saldırı yapılacak yeri belirtir.
 - "Düz metin:" Attack X.
 - "Kod metni:" Gece gündüz sokaklarda yürüdük ama bulamadık! Yarın X'e gideceğiz.
Terimin ilk kullanımlarından biri Robert A. Heinlein tarafından yazılan "Friday" (1982) adlı bilimkurgu kitabındaki bir karakter olan George Perrault tarafından yapılmış gibi görünmektedir:
En basit [kod] türüdür ve bu nedenle kırılması imkansızdır. İlk ilanda ilgili kişi ya da kişilere yedi numarayı gerçekleştirmeleri ya da yedi numarayı beklemeleri söyleniyordu ya da yedi olarak belirtilen bir şey hakkında bir şeyler söyleniyordu. Bu ilan da on numaralı kod öğesiyle ilgili olarak aynı şeyi söylüyor. Ancak sayıların anlamı istatistiksel analiz yoluyla çıkarılamaz çünkü yararlı bir istatistiksel evrene ulaşılmadan çok önce kod değiştirilebilir. Bu bir ahmak kodudur... ve kullanıcı kuyuya çok sık inmeme sağduyusuna sahipse bir aptal kodu asla kırılamaz.
Terörizm uzmanı Magnus Ranstorp, Amerika Birleşik Devletleri'ne 11 Eylül saldırılarını gerçekleştiren kişilerin planlarını tartışmak için basit e-posta ve "ahmak kodu" olarak adlandırdığı bir kod kullandıklarını söyledi.


## Kodların kriptanalizi.
Bir monoalfabetik yerine koyma şifresi, çözmek kolay olsa da, basit bir kodu çözmek bile zordur. Şifreli bir mesajın şifresini çözmek biraz yabancı dilde yazılmış bir belgeyi tercüme etmeye benzer; bu görev temelde kod grupları ve bunların temsil ettiği açık metin sözcüklerinden oluşan bir "sözlük" oluşturmaktan ibarettir.
Basit bir kodun zayıflık noktalarından biri, İngilizcedeki "the" veya "a" gibi bazı kelimelerin diğerlerinden daha yaygın olduğu gerçeğidir. Telgraf mesajlarında "STOP" (yani cümle ya da paragraf sonu) kod grubu genellikle çok yaygındır. Bu, anlamları olmasa da cümleler açısından mesajın yapısını tanımlamaya yardımcı olur ve bu kriptanalitik olarak yararlıdır.
Aynı kodla şifrelenmiş birçok kodeks toplayarak ve daha sonra diğer kaynaklardan gelen bilgileri kullanarak bir koda karşı daha fazla ilerleme kaydedilebilir
 - ajanlar
 - gazeteler
 - diplomatik kokteyl partisi sohbeti
 - bir mesajın gönderildiği konum
 - nereye gönderildiği (yani, trafik analizi)
 - mesajın gönderildiği saat, 
 - mesaj gönderilmeden önce ve sonra meydana gelen olaylar
 - şifreli mesajları gönderen kişilerin normal alışkanlıkları
 - vb.
Örneğin, neredeyse sadece belirli bir ordudan gelen mesajlarda bulunan ve başka hiçbir yerde bulunmayan belirli bir kod grubu pekala o ordunun komutanını gösteriyor olabilir. Belirli bir yere yapılan bir saldırıdan önceki mesajlarda görülen bir kod grubu pekala o yeri temsil ediyor olabilir.
Hatılatıcılar, kod gruplarının tanımları için anında bir hediye olabilir. Kod grupları belirlendikçe, bağlamdan ve eğitimli tahminlerden ortaya çıkan daha fazla kod grubu ile kademeli olarak kritik bir kütle oluşturabilirler. Tek parçalı kodlar, iki parçalı kodlara göre bu tür eğitimli tahminlere karşı daha savunmasızdır, çünkü tek parçalı bir kodun "26839" kod numarasının "buldozer" anlamına geldiği belirlenirse, daha düşük kod numarası olan "17598" muhtemelen "a" veya "b" ile başlayan bir düz metin kelimesini temsil edecektir. En azından basit tek parçalı kodlar için.
Örneğin bir düşmana karşı belirli bir zamanda ve yerde bir baskın düzenlemek ve ardından baskından sonra gönderilen kod mesajlarını incelemek suretiyle kodlanmış bir mesaja "ekim" veya bilgi "tohumlama" için çeşitli hileler kullanılabilir. Kodlama hataları bir kodun içine özellikle faydalı bir parmak izidir; insanlar güvenilir bir şekilde hata yaparlar, bazen de feci hatalar. Veri yerleştirmek ve hatalardan faydalanmak şifrelere karşı da işe yarar.
  - Bir kodu kırmanın en bariz ve en azından prensipte en basit yolu kod kitabını rüşvet, hırsızlık veya baskın yoluyla çalmaktır — bazen "pratik kriptografi" ifadesiyle yüceltilen prosedürler — ve bu hem kodlar hem de şifreler için bir zayıflıktır, ancak kod kitapları genellikle şifreli anahtarlardan daha büyüktür ve daha uzun süre kullanılır. İyi bir kodu kırmak bir şifreyi kırmaktan daha zor olsa da, kod kitaplarını yazma ve dağıtma ihtiyacı ciddi sıkıntılar yaratmaktadır.
Yeni bir kod oluşturmak, yeni bir dil inşa etmek ve bunun için bir sözlük yazmak gibidir; bilgisayarlardan önce bu özellikle büyük bir işti. Bir kod ele geçirilirse, tüm görevin baştan yapılması gerekir ve bu da hem kriptograflar hem de kod kullanıcıları için çok fazla iş anlamına gelir. Pratikte, kodlar yaygın olarak kullanıldığında, kod kırıcıları hayal kırıklığına uğratmak ve çalınan veya kopyalanan kod kitaplarının kullanım ömrünü sınırlamak için genellikle periyodik olarak değiştirilirlerdi.
Kodlar oluşturulduktan sonra, kod kitabı dağıtımı lojistik açıdan hantaldır ve kodun ele geçirilme olasılığını artırır. "İkisi ölmüşse üç kişi bir sırrı saklayabilir" () diye bir söz vardır ve biraz abartılı olsa da, bir sır birkaç kişi arasında paylaşılırsa saklanması zorlaşır. Kodlar sadece birkaç dikkatli kişi tarafından kullanılıyorsa makul ölçüde güvenli olduğu düşünülebilir, ancak tüm ordular aynı kod kitabını kullanıyorsa, güvenlik çok daha zor hale gelir.
Buna karşılık, şifrelerin güvenliği genellikle şifre anahtarlarının korunmasına bağlıdır. Şifre anahtarları çalınabilir ve insanlar bunlara ihanet edebilir, ancak değiştirilmeleri ve dağıtılmaları çok daha kolaydır.


## Çoklu şifreleme.
Kriptanalizin zorluğunu artırmak için bir mesajı önce kodladıktan sonra şifrelemek yaygındı. Sayısal bir kodda bu genellikle bir "katkı maddesi" ile yapılırdı - basitçe kod gruplarına modulo 10 ile basamak basamak eklenen uzun bir anahtar sayı. Kod kitaplarının aksine, katkı maddeleri sık sık değiştirilirdi. Ünlü Japon Donanma kodu, JN-25, bu tasarıma sahipti.