# Kriptografik ilkeller
Kriptografik ilkeller, bilgisayar güvenlik sistemleri için kriptografik protokoller oluşturmak için sıklıkla kullanılan, iyi kurulmuş, düşük seviyeli kriptografik algoritmalardır.  Bu rutinler, bunlarla sınırlı olmamak üzere, tek yönlü karma işlevleri ve şifreleme işlevlerini içerir .


## Gerekçe.
Tasarımcılar kriptografik sistemler oluştururken en temel yapı taşları olarak kriptografik ilkelleri kullanırlar. Bu nedenle, kriptografik ilkeller, kesin olarak tanımlanmış ve son derece güvenilir bir şekilde çok özel bir görevi yapmak için tasarlanmıştır.
Kriptografik temeller yapı taşları olarak kullanıldığından, çok güvenilir olmaları, yani özelliklerine göre performans göstermeleri gerekir. Örneğin, bir şifreleme rutini yalnızca X sayıda bilgisayar işlemiyle kırılabilir olduğunu iddia ediyorsa ve X'ten önemli ölçüde daha az işlemle bozuluyorsa, bu şifreleme ilkel öğesi başarısız olmuştur. Bir şifreleme ilkelinin başarısız olduğu tespit edilirse, onu kullanan hemen hemen her protokol savunmasız hale gelir. Kriptografik rutinler oluşturmak çok zor olduğundan ve güvenilir olduklarını test etmek uzun zaman aldığından, yeni bir kriptografik sistemin ihtiyaçlarına uygun yeni bir kriptografik ilkel tasarlamak aslında hiçbir zaman mantıklı (ve de güvenli) değildir. Nedenler şunları içerir:
  - Tasarımcı, kriptografik ilkellerle ilgili matematiksel ve pratik hususlarda yetkin olmayabilir.
  - Yeni bir kriptografik ilkel tasarlamak, alandaki uzmanlar için bile "çok" zaman alıcı ve hataya "çok açık."
  - Bu alandaki algoritmaların sadece iyi tasarlanmaları değil, aynı zamanda kriptolog topluluğu tarafından da iyi test edilmesi gerektiği için, bir kriptografik rutin tasarım açısından iyi görünse bile yine de hatalar içerebilir. Böyle bir incelemeye başarılı bir şekilde dayanmak, algoritmanın gerçekten de kullanmak için yeterince güvenli olduğuna dair bir miktar güven (aslında, şimdiye kadarki tek güven) verir  şifreleme ilkelleri için güvenlik kanıtları genellikle mevcut değildir.
Kriptografik ilkeller bazı yönlerden programlama dillerine benzer . Bir bilgisayar programcısı, yeni bir program yazarken nadiren yeni bir programlama dili icat eder; bunun yerine programlamak için önceden kurulmuş programlama dillerinden birini kullanacaklardır .
Kriptografik ilkeller her kripto sisteminin yapı taşlarından biridir, örneğin TLS,SSL, SSH, vb. Kripto sistem tasarımcıları, güvenliklerini kesin olarak kanıtlayacak durumda olmadıkları için kullandıkları ilkelleri güvenli kabul etmek zorundadırlar. Bir protokolde kullanım için mevcut en iyi ilkel seçimi genellikle mevcut en iyi güvenliği sağlar. Bununla birlikte, herhangi bir kripto sisteminde bileşimsel zayıflıklar mümkündür ve bunlardan kaçınmak tasarımcının/tasarımcıların sorumluluğundadır.


## Kriptografik temel öğelerin birleştirilmesi.
Kriptografik ilkeller kendi başlarına oldukça sınırlıdır. Düzgün bir şekilde bir kriptografik sistem olarak kabul edilemezler. Örneğin, çıplak bir şifreleme algoritması, hiçbir kimlik doğrulama mekanizması veya herhangi bir açık mesaj bütünlüğü denetimi sağlamayacaktır. Yalnızca güvenlik protokollerinde birleştirildiğinde birden fazla güvenlik gereksinimi karşılanabilir. Örneğin, yalnızca kodlanmış değil aynı zamanda kurcalamaya karşı korunan (yani gizli ve bütünlük korumalı olan) bir mesajı iletmek için, DES gibi bir kodlama rutini ve SHA-1 gibi bir karma rutinikombinasyon halinde kullanılabilir. Saldırgan şifreleme anahtarını bilmiyorsa, mesajı mesaj özet değer(ler)inin geçerli olacağı şekilde değiştiremez.
Bir güvenlik protokolü oluşturmak için kriptografik ilkelleri birleştirmek başlı başına bir uzmanlık alanıdır. Çoğu istismar edilebilir hata (yani, kripto sistemlerindeki güvensizlikler) ilkellerdeki tasarım hatalarından (her zaman özenle seçildiklerini varsayarak) değil, kullanım yollarından, yani kötü protokol tasarımı ve hatalı veya yeterince dikkatli olmayan uygulamadan kaynaklanır. . Protokollerin matematiksel analizi, bu yazının yazıldığı sırada henüz olgunlaşmamıştır. ["kaynak belirtilmeli"] BAN mantığı gibi otomatik yöntemlerle doğrulanabilecek bazı temel özellikler vardır . Tam doğrulama için yöntemler bile vardır (örn. SPI hesabı) ancak son derece hantaldırlar ve otomatikleştirilemezler. Protokol tasarımı, derin bilgi ve çok pratik gerektiren bir sanattır; o zaman bile hatalar yaygındır. Gerçek bir sistem için açıklayıcı bir örnek, buradaki OpenSSL güvenlik açığı haber sayfasında görülebilir .https://www.openssl.org/news/vulnerabilities.html 


## Yaygın olarak kullanılan ilkel öğeler.
  - Tek yönlü hash fonksiyonu olarak da adlandırılan tek yönlü sıkıştırma işlevi — bir mesaj için azaltılmış bir karma değeri hesaplayın (örneğin, SHA-256 )
  - Simetrik anahtar şifrelemesi — kodlamak için kullanılanla aynı anahtarla kodu çözülebilen bir şifreli metin hesaplayın (örneğin, AES )
  - Açık anahtar şifrelemesi — kodlamak için kullanılan farklı bir anahtarla kodu çözülebilen bir şifreli metni hesaplayın (örneğin, RSA )
  - Dijital imzalar — mesajın yazarını onaylayın
  - Ağları karıştırın — kimden geldiğini anonimleştirmek için birçok kullanıcıdan gelen iletişimleri bir araya toplayın
  - Özel bilgi alma — sunucunun hangi öğenin talep edildiğini bilmeden veritabanı bilgilerini alın
  - Taahhüt şeması —kişinin seçilen bir değeri başkalarına gizli tutarken daha sonra ifşa etme yeteneğiyle taahhüt etmesine izin verir.
  - Kriptografik olarak güvenli sözde rastgele sayı üreteci