"Enter"a basıp içeriğe geçin

Kriptoloji

SOC analistleri güvenliğin savunma tarafındadır. Siber güvenlik doğası gereği birçok disiplini bünyesinde barındırmaktadır. Bu disiplinlerden biri de “Kriptoloji” bilimidir. Kriptoloji, temeli matematiğe dayanan ve siber güvenlik alanında oldukça önemli bir yere sahip olan bir bilim dalıdır. Siber güvenlik sektöründeki her uzman, işi ne olursa olsun kriptoloji bilimiyle karşılaşmaktadır. Örneğin bir siber güvenlik ürünü geliştiren bir yazılımcı, ürün içerisindeki güvenlik işlemlerinde kriptoloji bilimine ait yazılım kütüphanelerini kullanmak zorundadır. Aynı şey SOC analisti için de geçerlidir. SOC analistinin karşılaştığı uyarılar, kriptoloji bilimiyle ilgili ayrıntıları içerebilir. Bu nedenle, SOC analistinden yöneticilere kadar neredeyse tüm siber güvenlik sektörü çalışanlarının temel kriptoloji bilgisine sahip olması gerekiyor.

Kriptolojinin Temel Kavramları

Kriptoloji Nedir?


İletişim altyapılarında veri güvenliğini sağlayan kripto algoritmaları tasarlayan ve bu algoritmaların güvenilirliğini araştıran bilim dalına “Kriptoloji” adı verilmektedir. “Kriptoloji”, genellikle matematikçilerin uzmanlığı olan, şifreleme ve şifre çözmeyi temel alan bir bilimdir. Kriptoloji biliminin matematik, elektrik mühendisliği ve bilgisayar bilimlerinin kesişiminden oluştuğu söylenebilir. Kriptoloji bilimi oldukça geniş bir bilim olup kendi içinde 2’ye ayrılır: “Kriptografi” ve “Kriptanaliz”.

Plaintext Nedir?


“Plaintext / Düz metin” okunabilir ve anlaşılır bir metin veya metin parçasıdır. Düz metin kripto algoritmasına göre değişiklik gösterebilir. Örneğin kripto algoritması giriş olarak “ikili veri” formatını kabul ediyorsa buradaki düz metin ikili veridir. Düz metin ile ifade edilen kripto algoritmasına girecek verinin adıdır. Kriptolojide düz metin, şifrelenmemiş veri anlamına gelir. Örneğin “şifre” kelimesi düz metindir.


Chipertext / Şifreli Metin Nedir?


“ Chipertext / Şifreli metin”, bir kripto algoritmasına girdi olarak açık metin verildikten sonra algoritma sonucunda üretilen değerdir. Kriptolojide şifreli metin, şifrelenmiş veri anlamına gelir. Örneğin, “cipher” düz metnini caesar cipher(anahtar=3) ile şifrelersek, “flskhu” şifreli metnini elde ederiz.

Not: Sezar şifresi eğitimin ilerleyen kısımlarında açıklanacaktır.


Kriptografi Nedir?
“Kriptografi”, iletilen bilginin yetkisiz kişilerce anlaşılamayacak hale getirilmesi için kullanılan tekniklerin bütünüdür. Kriptografi; gizlilik, bütünlük, kimlik doğrulama ve inkar edilemezlik gibi bilgi güvenliğinin temel hedeflerini sağlamaya çalışan matematiksel yöntemleri içerir.

Kriptografinin uzun bir geçmişi vardır. “Kriptografi” bilimi bir mesajın anlamını gizlemek için ortaya çıktı. Bir başka deyişle “Kriptografi”, kripto algoritması ile düz metni şifreli metne dönüştüren bilimdir. Bu bilim dalı ile ilgilenen uzmanlar daha güçlü, daha zor ve güvenli kripto algoritmaları geliştirmeye çalışmaktadır. Şifreleme sürecindeki algoritma ana odak noktalarından biridir. Şifreleme algoritmasının kullandığı yöntem, algoritmanın güvenilirliğini belirleyen faktörlerden biridir.


Kriptanaliz Nedir?
“Kriptanaliz”, şifrelenmiş verilerin şifresini çözmek için kripto algoritmalarının güvenliğini inceleyen ve zayıf yönlerini bulmaya çalışan bir kriptoloji dalıdır. “Kriptanaliz”, şifreli metni düz metne dönüştürmek için kripto algoritmasındaki matematiksel açıkları tespit etmeye çalışır. Yani kriptografik algoritmaları kırmayı hedefliyor.

Bununla birlikte hacker davranışına uygun bir hamle olarak değerlendirilebilir ancak genel olarak bu tür kriptografik algoritmaları kırmaya çalışan saygın akademik araştırmacılardır. Kripto analiz uzmanları aslında kriptografiye ilgi duyanların geliştirdiği kripto algoritmalarını test ederek kripto algoritmasında hangi noktaların saldırıya açık olduğunu bulmaya çalışıyor. Kriptografi bilimiyle ilgilenen uzmanların, kriptanaliz bilimiyle ilgilenen uzmanlara göre tam tersi işlemleri yaptığı söylenebilir. Bu bakımdan bu iki meslek grubu kriptoloji biliminin tamamlayıcı unsurlarıdır. Kripto analiz üzerinde çalışan uzmanlar olmadan kripto algoritmalarının gerçekten güvenli olup olmadığını anlamak mümkün değildir. Bu nedenle bu alanda çalışan araştırmacıların çalışmaları önem taşımaktadır.


Şifreleme Nedir?
Düz metni şifreli metne dönüştürme işlemine “Şifreleme” denir. Şifreleme işleminde matematiksel olarak kullanılan bir algoritma bulunmaktadır.

Şifre Çözme Nedir?
Şifreli metni düz metne dönüştürme işlemine şifre çözme denir. Şifreleme işleminde olduğu gibi bu işlemde de bir algoritma kullanılır.

Anahtar nedir?
“Anahtar”, şifreleme ve şifre çözme algoritmalarına girdi olarak verilen bir değerdir. Bu değer kullanılarak şifreleme ve şifre çözme işlemi uygulanır.

Kodlama/Kod Çözme Nedir?
“Kodlama” kavram olarak çoğu zaman şifrelemeyle karıştırılır. Aslında iki terim çok farklı amaçlar için kullanılmaktadır. Kodlama, verileri belirli bir karakter seti biçimine dönüştürme işlemidir. Şifreleme algoritmalarından farklı olarak anahtar değer kullanılmadan ve güvenlik kaygısı olmadan kullanılan bir dönüştürme algoritmasıdır. Kodlama işleminin tersi de vardır. Örneğin en sık kullanılan kodlama algoritmalarından biri “base64” algoritmasıdır. “Kod çözme”, kodlama algoritmalarının tam tersidir. Kod çözme işlemi ile kodlanan veriler önceki verilere dönüşecektir.


Kavramların Doğru/Yanlış Kullanımları
Kriptoloji kavramları sıklıkla yanlış kullanılmaktadır. Aslında farklı anlamlara gelen kavramlar bir arada kullanılabiliyor ve kavram karmaşası ortaya çıkabiliyor. Aşağıdaki resimde bazı kavramların doğru ve yanlış kullanımı gösterilmektedir.

Kriptografi Türleri

Kriptografi Türleri
Kriptografi geçmişten günümüze sürekli olarak gelişmiştir. Bu gelişim sürecinde çok fazla kripto algoritması ortaya atılmış, bunların bir kısmı kabul edilip uzun yıllar kullanılmış, bir kısmı ise kabul edilemeden araştırma sürecinde kalarak unutulmuştur. Kripto algoritmaları geliştirilirken zamanla alışılmışın dışında yöntemleri ortaya çıkaran bazı teknikler oluşturulmuştur. Bu teknikler daha sonraki kripto algoritmalarında sıklıkla kullanılmaya başlandı. Bu yapısal değişiklikler kripto algoritmalarının sınıflandırılmasına yol açmıştır. Öğreticinin bu bölümünde kriptografi kapsamındaki konular özetlenmektedir.
Kriptografi Türleri
Kriptografi 3 ana başlıkta incelenir:

  • Simetrik Şifreler
  • Asimetrik Şifreler
  • Protokoller

Simetrik Şifreler
Antik çağlardan 1976 yılına kadar oluşturulan tüm kriptografik yöntemler yalnızca simetrik yöntemlere dayanıyordu. Günümüzde veri şifreleme ve bütünlük kontrolü amacıyla simetrik yöntemler sıklıkla kullanılmaktadır. Simetrik şifreleme algoritmaları, şifreleme ve şifre çözme işlemlerinde aynı anahtarı kullanan şifreleme algoritmalarıdır. Örneğin düz metni şifreledikten sonra elde edilen sonucun şifresini tekrar aynı anahtarla çözebilirsiniz. Bu şekilde aynı düz metni elde edersiniz. Bunun için şifreleme ve şifre çözme işlemlerini gerçekleştirecek tarafların anahtar değerini bilmesi yeterlidir. Simetrik şifreleme algoritmalarına örnek olarak DES, 3DES ve AES kripto algoritmaları verilebilir.


Asimetrik Şifreler
Tamamen farklı bir şifreleme sistemi türü 1976’da Whitfield Diffie, Martin Hellman ve Ralph Merkle tarafından tanıtıldı. “Açık anahtarlı kriptografi” veya “asimetrik kriptografi” olarak tanıtılan bu kriptosistem türünde tek anahtar yerine iki farklı anahtar kullanılmaktadır. Bu anahtarlardan biri “gizli anahtar”, diğeri ise “açık anahtar”dır. Asimetrik kripto algoritmaları için şifreleme ve şifre çözme işlemlerinde farklı anahtarlar kullanılır. Şifreleme için “genel anahtar” kullanılırken, şifre çözme için “gizli anahtar” yani diğer bir deyişle “özel anahtar” kullanılır. Asimetrik kripto algoritmasının bir örneği RSA (Rivest-Shamir-Adleman) algoritmasıdır.

Protokoller
Kriptografik protokoller, kriptografik algoritmaların uygulanmasıyla ilgilenir. Birçok yazılımın güvenlik altyapısında simetrik ve asimetrik kripto algoritmaları kullanılmaktadır. Bu algoritmaların uygulandığı protokollere örnek olarak “Aktarım Katmanı Güvenliği (TLS)” protokolü verilebilir. Bu tür kriptografik protokollerde genellikle simetrik ve asimetrik kripto algoritmaları bir arada kullanılır. Buna “Hibrit Şemalar” denir. Her iki algoritma türünün de kullanılmasının nedeni, her birinin güçlü ve zayıf yönlerinin olmasıdır.

Simetrik Algoritmalar


Simetrik Kriptografinin Temelleri
Simetrik kriptografiyi anlamak için bir örnek görelim: Güvenli olmayan bir kanal üzerinden iletişim kurmak isteyen iki kullanıcımız olduğunu varsayalım: “Alice” ve “Bob”. Buradaki güvensiz kanalı internet ortamı olarak düşünelim. Ayrıca kötü niyetli saldırgan olan “Oscar” adında bir kullanıcı bulunmaktadır. Oscar adlı bir saldırgan, Alice veya Bob’un iletişim kurmak için kullandığı yönlendirici cihazını hackledi ve yönlendiriciden geçen tüm trafiği izleyebildi. Alice ve Bob, çalıştıkları şirketin önemli kritik belgelerini bu güvenli olmayan kanal üzerinden iletmek zorundalar ama bunu yapabilmek için nasıl bir şifreleme algoritması olmalı?

Yukarıdaki resimde Alice, Bob’a şifrelenmemiş bir mesaj gönderiyor. Resimdeki “x” düz metni ifade eder. Bu durumda aradaki trafiği izleyen Oscar gönderilen mesajı okuyabilir. Bu güvenli bir yol değil. Böyle bir durumda çözüm olarak simetrik kripto algoritmalarından yararlanılmaktadır.

Yukarıdaki görselde “x” düz metni, “y” ise şifreli metni ifade etmektedir. Alice, Bob’a göndermek istediği mesajı göndermeden önce onu simetrik şifreleme algoritmasını kullanarak şifreler. Şifreleme işleminde Alice ve Bob’un sahip olduğu anahtar kullanılır. Bu anahtar, güvenli kanal üzerinden Alice ve Bob arasında paylaşılır. Güvenli olmayan kanal anahtar paylaşımı için kullanılmadığından Oscar anahtarı elde edemez. Alice, anahtarla şifrelenmiş mesajı güvenli olmayan kanal üzerinden Bob’a gönderdiğinde, şifrelenmiş mesaj da Oscar’a ulaşır. Ancak Oscar’ın elde ettiği şifreli mesajı anlamlı hale getirebilmesi için anahtara ihtiyacı vardır. Oscar’ın şifrelenmiş mesajın şifresini çözmek için uygulayabileceği bazı yöntemler var. Ancak bu kripto algoritması güçlüyse ve anahtarı ele geçirmesini sağlayacak saldırılara izin vermiyorsa Alice ile Bob arasında güvenli bir mesaj aktarımı gerçekleşecektir. Şifreli mesaj Bob tarafına geçtiğinde aynı anahtarla şifreleme algoritmasının tersinin yapılmasına olanak sağlayan şifre çözme algoritması kullanılır. Böylece Bob şifrelenmiş mesajı okunabilir forma dönüştürür. Buradaki gerçek şu ki, şifreleme ve şifre çözme algoritmaları herkes tarafından bilinmektedir. İlk düşünce, şifreleme/şifre çözme algoritmalarının gizli tutulmasının güvenlik açısından daha iyi olacağıdır. Ancak tam tersine gizli algoritmalar kriptoanaliz uzmanları tarafından test edilmediğinden güvensiz kripto algoritmalarıdır. Güçlü bir kripto algoritmasında gizli tutulması gereken tek şey anahtardır. Bu senaryoda yalnızca gizlilik sorunu ele alınır. Ancak Oscar, değiştirilen mesajın Bob’a iletilmesini sağlayacak şekilde mesajı değiştirebilirdi. Dersin ilerleyen kısımlarında mesaj bütünlüğünün kontrol edilmesini sağlayan kriptografik algoritmalardan bahsedeceğiz.

Tarihsel Şifreler


Değiştirme Şifresi
İkame şifresi eski ve basit bir kripto algoritmasıdır. “Substitution Cipher” alfabedeki harflerin başka bir harfle değiştirilmesi mantığıyla çalışan bir algoritmadır. Örneğin düz metnimiz “şifreli” olsun. Düz metindeki her harfin şifrelenmiş eşdeğeri aşağıdaki gibi olsun:

Substitution Table \ Oyuncu Değiştirme Tablosu

Yukarıdaki harf karşılıklarına göre “şifre” düz metninin şifrelenmiş karşılığı “ynausk”tur. Bu simetrik kripto algoritmasındaki anahtar “Değiştirme Tablosu”dur. Şifrelenmiş metni ele geçiren saldırganın, şifrelenmiş metnin şifresini çözebilmesi için tabloyu bilmesi gerekir. Saldırgan bu tabloyu bilmese bile bazı saldırılarla şifrelenmiş metnin şifresini çözmek mümkündür. Bu saldırı yöntemleri eğitimin ilerleyen bölümlerinde anlatılacaktır.


Shift Şifresi (veya Sezar Şifresi)
Caesar Cipher, adını Roma lideri “Julius Caesar”dan alır. Julius Caesar, o dönemde askeri öneme sahip mesajları gizlice iletmek için oldukça basit olan ve alfabenin üzerinde kaydırılarak her harfi değiştiren bir kripto algoritması geliştirdi. Günümüzde güvenilir bir yöntem olmasa da o dönemde etkili bir yöntem olabilir. Sezar’ın düşmanlarının çoğu okuma yazma bilmediğinden, şifreli metnin başka bir dilde yazıldığını düşünüp mesajı anlayamamaları mümkündür. Shift Cipher, ikame şifre türlerinden biridir. Shift cipher, alfabedeki harflerin sıralı olarak kaydırılmasıyla çalışan bir algoritmadır. Bu algoritmada anahtar, alfabenin kaç kez kaydırılacağını gösteren değerdir.

Örneğin, düz metin “şifresini” Sezar şifresi(anahtar=3) ile şifreleyelim:

Yukarıdaki görselde “cipher” kelimesinin harflerine karşılık gelen harfler sırasıyla bulunarak “flskhu” şifreli metni oluşturulmuştur. Şifreli metnin şifresini çözmek için kaydırma işleminin tam tersi yapılır. Bu örnekte “3” anahtarı ile şifre çözme için 3 harf sola kaydırıldığında “şifre” değeri elde edilir ve düz metne başarıyla ulaşılır. Sezar şifresi hakkında detaylı bilgi için aşağıdaki adres kullanılabilir:

Sezar Şifresi: https://en.wikipedia.org/wiki/Caesar_cipher

Caesar cipher ile ilgili şifreleme/şifre çözme işlemlerini online olarak uygulamak için aşağıdaki adres kullanılabilir:

Online Caesar Şifreleme/Şifre Çözme Aracı(CyberChef) : https://gchq.github.io/CyberChef/#recipe=ROT13(true,false,false,3)&input=Y2lwaGVy


Online CyberChef Aracı
Aşağıdaki görseldeki bölümler “CyberChef” aracının parçalarını oluşturmaktadır. CyberChef aracı birçok kripto algoritmasını ve kodlamayı destekleyen bir araçtır.

CyberChef aracındaki bölümler sırasıyla aşağıda açıklanmıştır:

1- Kripto algoritmalarının listesinin bulunduğu bölümdür. Kullanılacak kripto algoritması sürükle bırak yöntemiyle “2” numaralı “Reçete” bölümüne taşınmalıdır.

2- Bu bölümde kripto algoritmasının detayları belirlenmelidir. Örneğin Sezar şifresinin anahtarını ayarlamak için kullanılır.

3- Bu bölüm girişin yazılması gereken bölümdür.

4- Çıktının gösterildiği bölümdür.

CyberChef aracı yukarıda bulunane benzer birçok kripto yazılımı için mevcuttur. Meraklı adayların bu aracı incelemeleri ve üzerinde çalışmaları tavsiye edilir.

Kriptografinin Amaçları

Kriptografi her bilim dalında olduğu gibi bazı amaçlara hizmet eder. Kriptografinin zamanla ortaya çıkan ihtiyaçları karşılamaya yönelik görevleri vardır. Bilgi güvenliği ilkeleri arasında yer alan 4 ilke kriptografi için de geçerlidir:

  • Gizlilik
  • Bütünlük
  • Kimlik doğrulama
  • İnkar edilemezlik

Gizlilik / Confidentiality
İletişim cihazları üzerinden gönderilen veri/bilgilerin yetkisiz kişiler tarafından anlaşılmaması gerekmektedir. Kötü niyetli kişiler, taraflar arasında kalması gereken bilgileri elde etseler bile verilerden anlam çıkaramamalıdır. Saldırgan ağ trafiğini dinlediğinde şifrelenmiş veriler ortaya çıkmalı ve bu veriler kriptografik olarak çözülemez olmalıdır. Şifrelenmiş verilerin bir şekilde şifresi çözülürse, kullanılan kripto algoritmasının güvenilirliği sona erecektir. Bu nedenle kripto algoritması geliştiricilerinin bu durumu göz önünde bulundurarak güçlü kripto algoritmaları tasarlamaları gerekmektedir. Bu, bilgi güvenliği ilkelerinde yer alan “Gizlilik” ilkesidir. Kriptografik algoritmalar tasarlanırken bu prensip doğrultusunda bir kripto algoritması tasarlanması gerekmektedir.


Bütünlük / Integrity
Saldırgan, MiTM (Ortadaki Adam) saldırısına iki iletişim cihazının arasına girerek ve aradaki trafiği ele geçirerek saldırabilir. Bu durumda saldırganın ulaştığı veriler saldırgan tarafından değiştirilerek hedefe gönderilebilir. Teoride ve pratikte mümkün olan bu saldırıyı önlemenin dışında karşı tarafta gönderilen verinin bütünlüğünün bozulmadan doğrulanması gerekmektedir. Bu sayede veri aktarım güvenliği kriptografi ile sağlanmaktadır. Bilgi güvenliği ilkelerinden biri olan “Bütünlük” ilkesi bize böyle bir durumda verinin kriptografik olarak tehlikeye girmediğini doğrulamamız gerektiğini söylüyor. Kriptografide algoritmalar tasarlanırken veri bütünlüğü dikkate alınarak algoritma tasarımı yapılmalıdır.


İnkar edilemezlik / Non-repudiation
Kriptografik algoritmalar oluştururken dikkate alınması gereken bir diğer prensip de “İnkar edilemezlik” prensibidir. Bu ilke, gönderenin bilgiyi gönderdiğini inkar edecek durumda olmamasını sağlamaktan sorumludur. Gönderen tarafın bilgiyi gönderdiğine dair kanıt iletişim algoritmasının kendisinde bulunmalıdır. Bu prensip gereklilikleri algoritmaya dahil edilmediğinde, gerçek kişiler yerine sahte kişilerin kendi adına hareket ettiği/hareket etmediği ortaya çıkmamaktadır. Örneğin bir kurumda içeriden bir tehdit varsa ve şüpheli kötü niyetli faaliyette bulunduğunu inkar ediyorsa, kripto algoritmasının gerçeği ortaya çıkarabilecek teknik altyapıya sahip olması gerekir. Aksi halde operasyonu gerçekleştiren kişinin kimliğinin tespit edilmesi zor olacaktır.


Kimlik doğrulama / Authentication
İletişimi kuracak tarafların birbirlerinin doğru kişi olduğunu doğrulamaları gerekmektedir. Mesajı alan tarafın, gönderenin iletişim kurmak istediği taraf olduğundan emin olmak oldukça zordur. Bu nedenle kriptografinin, teknik ve matematiksel olarak bu iki partinin yerini alan sahte partilerin oluşmasını önlemek için bir doğrulama mekanizması kurması gerekmektedir. Kimlik doğrulama mekanizması en temel güvenlik gereksinimlerinden biridir ve kullanımı oldukça yaygındır. Örneğin sosyal medya uygulamalarına veya bankacılık sistemine giriş yaparken kullanıcı adı ve şifre bilgilerinizle doğru kişi olup olmadığınız doğrulanıyor. Ayrıca daha gelişmiş güvenlik önlemleri de alınabilir. Örneğin “İki Faktörlü Kimlik Doğrulama (2FA)” bu güvenlik özelliklerinden biridir. 2FA ile SMS veya kimlik doğrulama uygulaması kullanılarak bir adım daha doğrulama yapılır ve güvenlik artırılır. Kriptografi için bunu sağlayan “Kimlik Doğrulama” ilkesidir.

Rastgele Sayı Üreteçleri
Kriptografide algoritmanın güvenli olabilmesi için birçok kriter vardır. Bu kriterlerden biri anahtar üretiminin rastgeleliğiyle ilgilidir. Bir kripto algoritmasının kriptografide güçlü olabilmesi için anahtarın yeterince uzun ve rastgele olması önemlidir. Anahtarın rastgele hale getirilmesi için birçok rastgele sayı üreteci yöntemi ortaya çıkmıştır.

Üç tür Rastgele Sayı Üreticisi vardır:

  • Gerçek Rastgele Sayı Üreteçleri (TRNG) – True Random Number Generators
  • Sahte Rastgele Sayı Üreteçleri (PRNG) – Pseudorandom Number Generators
  • Kriptografik Olarak Güvenli Sahte Rastgele Sayı Üreteçleri (CSPRNG) – Cryptographically Secure Pseudorandom Number Generators

Gerçek Rastgele Sayı Üreteçleri (TRNG)
True Random Generator, gerçek fiziksel işlemlere dayalı olarak rastgele sayılar üreten bir yöntemdir. Bu tür rastgele sayı üretmenin bir örneği, yazı tura veya zar atmaktır. Rastgelelik açısından etkili bir yöntem olmasına rağmen uygulanabilirlik ve hız açısından tercih edilen bir yöntem değildir.

Yazı tura atmak için çevrimiçi olarak aşağıdaki adresi kullanabilirsiniz:

Yazı-tura: https://www.random.org/coins/


Sahte Rastgele Sayı Üreteçleri (PRNG)
Pseudorandom Number Generator yöntemi, rastgeleliği sağlamak için bir başlangıç rastgele değerine ihtiyaç duyar. Bu değere “tohum” denir. Bu değer TRNG yönteminden gelebilir. Bu ilk değer üzerinden bazı matematiksel hesaplamalara göre adım adım rastgele sayılar üretir. Aynı matematiksel hesaplamanın yinelemeli olarak uygulanmasıyla her adımda bir sayı üretilir. TRNG yöntemiyle karşılaştırıldığında pratikte uygulanması çok daha kolay ve hızlıdır. Ancak kriptografide kullanım için yeterince güvenli ve öngörülemez değildir. Çünkü ilk değer belirlenirse her adımda hesaplanan değer her seferinde aynı olacağından tamamen rastgele değerlerden bahsetmek mümkün değildir. Örneğin, C programlama dilindeki “Rand()” fonksiyonu, PRNG’nin birçok çeşidinin üretilmesine örnek olarak verilebilir.


Kriptografik Olarak Güvenli Sahte Rastgele Sayı Üreteçleri (CSPRNG)
Kriptografik Olarak Güvenli Sahte Rastgele Sayı Üreticileri (CSPRNG), PRNG’nin öngörülemeyen bir çeşididir. PRNG yönteminde olduğu gibi üretilecek bir sonraki değerin (0 veya 1 bit) matematiksel olarak tahmin edilmesi ve hesaplanması mümkün değildir. PRNG yöntemleri yazılım testlerinde sıklıkla kullanılır, ancak CSPRNG kriptografiye özgü bir yöntemdir. CSPRNG hakkında daha fazla bilgi edinmek isteyenler aşağıdaki adresi ziyaret edebilirler:

CSPRNG: https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator
Linux Komut Satırı Üzerinden Rastgele Değer Üretmek
Linux komut satırını kullanarak rastgele sayısal değerler üretmek mümkündür. Bu bölümde iki farklı yöntem anlatılacaktır:


$RANDOM ile Rastgele Sayı Üretimi
Bu yöntem PRNG’ye bir örnektir. Linux’ta “$RANDOM” ile rastgele sayılar üretmek için komut şu şekilde uygulanabilir:

Komut: sudo echo $RANDOM

Örneğin, komutu çalıştırarak görelim:

Yukarıdaki görselde görüldüğü gibi rastgele sayılar başarıyla oluşturuldu. Bu yöntemde rasgele sayı üretimi “0-32767” değerleri arasındadır.


/dev/random ile Rastgele Sayı Üretimi
Bu yöntem PRNG’ye bir örnektir. Linux’ta “/dev/random” ile sayı üretmek için “od” komutu ve parametreleri kullanılabilir. Örneğin maks. 2 byte ve 3 byte uzunluğunda iki farklı sayısal değer üretelim:

Komut: od -An -N2 -i /dev/random

Yukarıdaki görselde görüldüğü gibi 2 farklı uzunlukta rastgele sayı üretimi başarıyla uygulanmıştır. “-N” parametresi uzunluğu belirtmeye izin verir. CSPRNG tipi rastgele değer üretmenin Linux üzerinde nasıl uygulandığını merak edenler aşağıdaki adresi inceleyebilirler:

CSPRNG Linux: https://medium.com/@phil_k/one-liner-csprng-in-your-Friendly-linux-console-be02b3bc5a1f

Base64 Kodlama/Kod Çözme

Base32 ve Base64 nedir?
“Base32” ve “Base64”, ikili verileri “ASCII”ye dayalı belirli bir karakter seti ile temsil etme yöntemidir. Başka bir deyişle, bir veri temsil yöntemidir.

ASCII (American Standard Code for Information Interchange): ASCII formatı, karakterler arasında ortak bir sayısal değere sahip olan dijital sistemler adına ortaya çıkmış bir tablodur. Bu sayede bir karakterin ikili karşılığı tüm elektronik sistemlerde aynıdır. ASCII tablosunu incelemek için aşağıdaki adres ziyaret edilebilir:

ASCII Tablosu: https://www.asciitable.com/

Saldırganlar, DNS protokolü ile veri hırsızlığı için “Base32” kodlama yöntemini kullanıyor. SOC analistlerinin özellikle DNS istekleriyle ilgili sorgularda “Base32” biçiminde iletilen verileri görmesi genellikle anormal bir duruma işaret eder.

Örnek Base64 Kodlanmış Veriler: YmFzZTY0X2VuY29kaW5n

Örnek Base32 Kodlanmış Veriler: MJQXGZJTGJPWK3TDN5SGS3TH

Not: Base32 ve base64 kodlama yöntemleri aynı mantıktır. Bu başlıkta gösterilen örnekler “base64” kodlaması ile gösterilmektedir. Base32 ve base64 benzer olduğundan base32 eğitime dahil edilmemiştir.


Kullanım Amacı ve Özellikler
“Base32” ve “Base64”, ikili veri türü işleyen sistemlere metin tabanlı veri gönderilmesini sağlayan bir kodlama yöntemidir. Bu kodlama yönteminde tüm veriler veri kaybı olmadan tutulabilmektedir. Hedef sistemde sorun yaratabilecek bazı karakterlerden kaçınmak etkili bir yöntemdir. Örneğin ses veya video formatındaki verilerin metin tabanlı olarak hedef sisteme iletilebilmesini sağlar. Hedef sistemde iletim veya veri işleme sırasında karşılaşılabilecek hataları azaltır. İsimlerinin sonundaki 32 ve 64 sayıları karakter setindeki toplam karakter sayısını belirtir. Örneğin base64 kodlama yöntemindeki karakter seti hem küçük hem de büyük harf ve rakamları içerir. Base32 kodlama yönteminin karakter seti küçük harfler ve bazı rakamlar içermez.

Base64 karakter seti: 26 küçük harf + 26 büyük harf + 10 rakam + “/” işareti + “+” işareti = 64 karakter

Base32 karakter seti: 26 büyük harf + 6 rakam = 32 karakter

Not: Base64 ve Base32 kodlaması hiçbir zaman bir şifreleme veya şifre çözme algoritması değildir. Ayrıca güvenlik amaçlı kullanılması tavsiye edilmez.

Aşağıda “Base64” ve “Base32” kodlama yöntemlerine ilişkin kodlama tabloları verilmiştir:

Base64 kodlama yönteminde kodlanan verideki her karakter “6 bit” (2^6=64) olarak ifade edilir. Base32 kodlama yönteminde “5 bit” (2^5=32) olarak ifade edilir. Bu, aynı uzunluktaki verilerin base32 kodlamasıyla daha uzun çıktı verdiği anlamına gelir.
Base64 Kodlama Mantığı
Aşağıda bir örnekle ayrıntılı olarak açıklanan adım adım base64 kodlaması verilmiştir:
Aşama 1
Öncelikle base64 kodlama algoritmasına verilecek veriler seçilir. Anlaşılır olması açısından bir metin seçilmiştir: “base64”
Adım 2
Bit tabanlı işlemler yapılacağı için “base64” metni ikiliye dönüştürülür:

İkili: 01100010 01100001 01110011 01100101 00110110 00110100

Bu işlem için aşağıdaki adres kullanılabilir:

Çevrimiçi Dönüştürücü: https://www.asciitohex.com/
Aşama 3
İkili formata dönüştürülen veriler sırasıyla 6 bit’e bölünür:

4.ADım

Base64 kodlama tablosunda 6 bit olarak ayrılmış her bir bit dizisi bulunur ve karakterler ardışık olarak sıralanır:

Kodlanmış Veri = YMFzZTY0

Yukarıdaki sıralı işlemler sonucunda kodlanan veriler başarıyla oluşturuldu. Yapılan işlemlerin tam tersinin uygulandığı kodu çözülmüş veriye yani “base64” değerine ulaşılır.

Not: Base64 kodlama yönteminde “padding” karakteri “=” işaretidir. Base64 kodlama işlemine giren girişin uzunluğu “3 byte ve katları” değilse çıktıya padding byte olarak “=” işareti/işaretleri eklenir. Örneğin, “base” metnini çevrimiçi bir base64 kodlayıcı (https://www.base64encode.org/) ile kodlayalım:

Her karakter 1 byte olduğundan giriş olarak 4 byte verdik. Çıktıyı 6 bayta tamamlamak için sonuna iki adet “=” işareti eklenir.


Linux Komut Satırında Base64 Kodlama/Kod Çözme İşlemleri


Linux komut satırı, base64 ile metin/veri kodlamak/kodunu çözmek için kullanılabilir. Bunun için “base64” isimli bir araç kullanılıyor. Örneğin “base” metnini kodlayalım:

Yukarıdaki görselde görüldüğü gibi “base” metni “echo” ve “base64” komutları ile başarıyla kodlanmıştır. Base64 ile kod çözmek için “-d”(decode) parametresi kullanılmalıdır. Örneğin yukarıda kodladığımız veriyi tekrar orijinal durumuna çevirelim:

Yukarıdaki görselde görüldüğü gibi kod çözme işlemi başarıyla uygulanmıştır. Base64 kodlama hakkında detaylı bilgiye aşağıdaki adresten ulaşabilirsiniz:

Base64: https://en.wikipedia.org/wiki/Base64

Hash İşlevleri

Hash ve Hash Fonksiyonları Nelerdir?


Hash fonksiyonları, matematiksel olarak ve bilgisayar bilimlerinde belirli işlemleri gerçekleştiren, bitler üzerinde çalışan özel bir fonksiyon türüdür. Hash işlevleri şifreleme/şifre çözme algoritmaları değildir. Bu nedenle hash fonksiyonunun işlemleri gerçekleştirmek için bir anahtara ihtiyacı yoktur. Hash fonksiyonları hızlı çalışan ve kolay hesaplama özelliklerine sahip fonksiyonlardır. Bu sayede büyük dosyalar üzerinde bile kısa sürede çalışabilmektedir. Hash fonksiyonu, algoritmadaki hesaplamalar sonucunda bir girdi alır ve bir çıktı üretir. Bu çıktıya “Hash” denir. Girişin uzunluğu değişken olabilirken çıkışın uzunluğu sabit uzunlukta olabilir. Hash fonksiyonlarının önemli özelliklerinden biri de her farklı girdi için farklı bir hash üretmesidir. Örneğin, “00110101” bit dizisinin karma değeri ile “00110100” bit dizisinin karma değeri farklıdır. Tek bir bitlik fark bile hash fonksiyonunun ürettiği sonucu etkiler, yani hash değerinin farklı olmasını sağlar. Hash fonksiyonunun güvenilirliği farklı girdiler için farklı hashler üretilmesine bağlıdır. Örneğin aşağıdaki görüntüdeki gibi iki farklı giriş aynı hash’e neden oluyorsa hash fonksiyonu güvenilirliğini kaybeder. İki farklı girdinin aynı hash değerini üretmesi durumuna “collision/çarpışma” adı verilir.

Not: Yukarıdaki görseldeki hash değerleri gerçek bir algoritmaya ait olmayıp, çarpışma örneğini anlatmak amacıyla temsili olarak yazılmıştır.


Kullanım Amaçları Nelerdir?
Hash işlevlerini kullanmanın birçok yolu vardır. Hash fonksiyonları, çok büyük girdileri veya dosyaları bit tabanlı işlemlerden geçirerek, algoritma sonucunda kısa ve benzersiz bir hash elde edilmesini sağlar. Hash fonksiyonu sonucunda üretilen hash, verinin dijital kimliği olarak kullanılabilir. Örneğin, kötü amaçlı yazılımları ayırt etmek için hash değerleri kullanılıyor. Bilinen büyük ölçekli kötü amaçlı yazılım arşivlerindeki kötü amaçlı yazılımın karma değerini sorguladığınızda, kötü amaçlı yazılım hakkında bilgi alabilirsiniz. Örneğin “virustotal.com” üzerinden hash araması yaparak ilgili zararlı yazılımın daha önce yapılmış zararlı yazılım analizlerine hash bilgileriyle ulaşabilirsiniz.

Hash işlevlerini kullanmanın bir başka amacı da bütünlük kontrolüdür. Verinin veya dosyanın iletilmesinde bir sorun oluşmuşsa ve dosyanın/verinin bitlerinde değişiklik olmuşsa, bunu anlamak için hash’ler kullanılır. Bazen saldırganlar gerçek dosyaları özellikle sahte olanlarla değiştirebilir. Bu durumda dosyanın orijinal dosya olup olmadığı doğrulanmalıdır. Dosyanın sağlam olduğunu anlamanın bir yolu karma işlevlerini kullanmaktır. Örneğin internetten indirilen “iso” uzantılı bir dosyamız olduğunu varsayalım: “linuxmint-20.3-cinnamon-64bit.iso”

İndirme Sayfası: https://linuxmint.com/edition.php?id=292 Öncelikle dosyayı indirmemiz gerekiyor. Daha sonra dosyanın hash değerlerini görmek için aşağıdaki bölüme tıklayalım:

Linux mint kurulum dosyalarının hash değerleri aşağıdaki gibidir:

Web sayfasından indirdiğimiz iso dosyasının hash’i yukarıdaki gibidir. “sha256sum” komutu, indirilen dosyanın sha256 tipi karmasını hesaplamak için herhangi bir Linux terminalinde kullanılabilir:

Yukarıdaki görselde görüldüğü gibi sitede verilen hash değerinin aynısına “sha256sum” komutu ile ulaşılmıştır. Hash değerlerinin aynı olması dosyanın değiştirilmediğini ve orijinal dosya olduğunu gösterir.


Siber Güvenlikte Hash Fonksiyonlarının Rolü
Hash fonksiyonları siber güvenlik açısından oldukça önemlidir. Linux ve Windows sistemlerinde kullanıcıların şifre bilgileri sistem üzerinde şifresiz metin olarak tutulmamaktadır. Bu çok güvensiz bir yöntem olacaktır. Şifreler sistemlerde hash şeklinde tutulmaktadır. Hash fonksiyonları diğer kripto algoritmalarından farklıdır. Bu farklılıklardan biri, belki de en önemlilerinden biri hash fonksiyonlarının tek yönlü olmasıdır. Tek yönlü olması, hash fonksiyonuna verilen girdinin hash üzerinden elde edilememesi anlamına gelir.

Hash Fonksiyonuna Bir Örnek: MD5


Hash fonksiyonları benzer mantıkla çalışan genel algoritmalar olsa da aralarında bazı farklılıklar bulunmaktadır. Örneğin her hash fonksiyonunun ürettiği hash’in uzunluğu farklı ve sabit bir değerdir. MD5 hash fonksiyonuna ilişkin örnekler aşağıdaki görselde verilmiştir:

MD5 karma işlevi “128 bitlik” bir karma üretir. Bir girdinin karmasını bulmanın birçok yolu vardır:


Çevrimiçi hizmetleri kullanma
Örneğin, MD5 karmasını oluşturmak istediğiniz girişi aşağıdaki web sayfasına yazabilirsiniz: https://www.miraclesalad.com/webtools/md5.php

Linux komut satırından yararlanma


İstenilen girişin MD5 karması Linux komut satırı aracılığıyla oluşturulabilir. Bunun için “echo” ve “md5sum” komutları bir arada kullanılır:

Resimde görüldüğü gibi “LetsDefend” girişinin MD5 hash’i başarıyla oluşturuldu.

NOT: Linux komut satırında bir dosyanın MD5 karmasını hesaplamak için “md5sum dosya adı” komutunu kullanabilirsiniz.

Diğer hash fonksiyonlarını incelemek isteyenler için aşağıdaki adreste bir liste var:

Hash İşlevlerinin Listesi: https://en.wikipedia.org/wiki/List_of_hash_functions

Dijital imzalar


Dijital İmza Nedir?
Dijital imza, dijital ortamda veriyi kimin gönderdiğini ve imzaladığını doğrulamayı sağlayan bir şifreleme özelliğidir. Kriptografik olarak matematik ve bilgisayar bilimlerine dayanmaktadır. Eğitimde önceki konularda yer alan “İnkar edilemezlik” ilkesinin gerekleri dijital imza ile yerine getirilmektedir. Dijital imza, BT altyapılarındaki güvenlik olaylarında kullanılan bir özelliktir. Aynı zamanda dijital imza ile bütünlük kontrolü de yapılabilmektedir. Günlük hayatta belgeler üzerindeki ıslak imzanın dijital karşılığı dijital imza olarak adlandırılabilir. Aralarında fiziksel ve mantıksal farklılıklar olsa da ikisi de benzer amaçlara hizmet eder.

Windows işletim sisteminde “exe” uzantılı dosyalar dijital imzaya sahiptir. Bu imza sayesinde dosyayı hangi firmanın veya kimin imzaladığını görmek ve doğrulamak mümkün oluyor. Örneğin aşağıdaki görselde Notepad++ kurulum dosyasının “Notepad++” ile imzalandığı görülmektedir. İmzalayanı görmek için ilgili dosyaya sağ tıklayıp “Özellikler” menüsünden “Dijital İmzalar” sekmesine gidin:

Detaylı bilgiyi görmek için “Ayrıntılar” butonu kullanılabilir:

Dijital İmzaların Kriptografik Temelleri
Dijital imzalar kriptografik olarak diğer kripto algoritmalarına benzer şekilde çalışır. Dijital imzalarda kullanılan algoritmalar asimetrik kripto algoritmaları olmalıdır. Bunun nedeni simetrik kripto algoritmalarında şifreleme/şifre çözme için aynı anahtarın kullanılmasıdır. Dijital imzalama algoritmalarında imzalama ve imza doğrulama için 2 farklı anahtar kullanılır: “genel anahtar” ve “özel anahtar”. Özel anahtar, imzalamada kullanılan kişisel bir anahtardır. İmzalama işleminde bu anahtarın kullanılmasının ve gizli tutulmasının nedeni, anahtar sahibi adına imzalanabilecek olmasıdır. Genel anahtar ise, herkese açık olarak paylaşılan ve özel anahtarla imzalanan imzaları doğrulamak için kullanılır. Aşağıdaki görselde görüldüğü gibi gönderici kendi özel anahtarıyla veriyi imzalarken, alan taraf da gönderenin genel anahtarını kullanarak iletilen veriyi doğrulamaktadır.

Image Source: https://www.esigngenie.com/blog/electronic-signatures-vs-digital-signatures/

SSL/TLS Protokolü


SSL/TLS Protokolü nedir?
SSL/TLS protokolü, bilgisayar ağlarında güvenli iki taraflı iletişim için tasarlanmış bir protokoldür. Genel olarak HTTPS protokolünün web uygulamalarında kullanımı yaygın olarak bilinmektedir. Ancak SSL/TLS protokolü e-posta, anlık mesajlaşma ve VoIP uygulamalarında sıklıkla kullanılan bir protokoldür. Taraflar arasındaki iletişimin gizli kalmasını sağlar. SSL/TLS protokolünün 3 ana amacı vardır:

Şifreleme: Verilerin iletişim kuran 2 taraf dışındaki taraflardan gizlenmesine olanak tanır.
Kimlik Doğrulama: Güvenli iletişim sağlamak isteyen her iki tarafın da doğru taraf olduğunun doğrulanmasını sağlar.
Bütünlük: Güvenli iletişim sağlanan 2 taraf arasında giden verilerin değiştirilmemesini sağlar.

SSL/TLS protokolünün temeli kriptografik olarak güçlü kripto algoritmalarıdır. SSL/TLS protokolü versiyonlarının ortaya çıkış yılları şu şekildedir:

“SSL (Secure Sockets Layer)” protokolün güvenli iletişimi sağlayan ilk versiyonunun adıdır. Daha sonra protokolün adı “TLS (Aktarım Katmanı Güvenliği)” olarak değiştirildi. Yukarıdaki tablodan da anlaşılacağı üzere belli bir tarihten önce/sonra isim değişikliği olduğu fark edilmektedir. SSL/TLS protokolünü kullanmak için önerilen sürüm “TLS 1.3″tür. Bu sürüm önerilmesine ve yaygın olarak kullanılmasına rağmen, bazı web tarayıcıları hala “SSL 3.0” sürümünü desteklemektedir. Aşağıdaki resimde web sayfalarının SSL/TLS sürümlerinin Mayıs 2022 itibarıyla kullanım istatistikleri gösterilmektedir.

Data Source: https://en.wikipedia.org/wiki/Transport_Layer_Security

Tarayıcı üzerinden bir web sayfası açıldığında, SSL/TLS bağlantı bilgilerini görmek için adres çubuğunun solundaki asma kilit simgesi kullanılabilir.

Asma kilit simgesine tıklanarak SSL/TLS hakkında detaylı bilgiye ulaşılabilir. Sunucunun SSL/TLS sertifika bilgileri bu bölümde yer almaktadır. Örneğin “letsdefend.io” SSL/TLS bilgisini görelim:

Tarayıcı üzerinden açılan yukarıdaki pencerede SSL/TLS sertifikasının geçerlilik tarihi gibi bilgileri görmek mümkündür. Detaylı bilgiye sahip olmak için “Detaylar” sekmesini de inceleyebilirsiniz:

Yukarıdaki görselde görüldüğü gibi “Ayrıntılar” sekmesinden Signature hash algoritması ve public key gibi pek çok bilgiyi görmek mümkün. Örneğin imza karma algoritması olarak “SHA256” kullanıldı.

SSL/TLS protokolü sertifikaları kullanır. Güvenli iletişimin sağlanması için sertifikalar önemlidir. Tarayıcıda HTTP yerine HTTPS kullanılarak şifreli trafiğin oluşmasını sağlayan aslında SSL/TLS sertifikalarıdır. SSL/TLS sertifikası sunucudaki bir veri dosyasıdır. İstemci, sunucunun kimliğini doğrulamak ve sunucuyla iletişimde kullanılacak ortak anahtarı sunucudan almak için sunucunun sertifikasını kullanır. Tarayıcı, sertifikaları doğrulamak için kendi sertifika yetkilileri listesini kullanır. Bağlanılan sunucunun sertifikası güvenilen bir sertifika yetkilisine ait değilse tarayıcı bunu güvensiz olarak değerlendirip kullanıcıyı uyarır. Örneğin aşağıdaki görselde chrome tarayıcının kullanıcıyı uyaran sayfası gösterilmektedir:

SSL/TLS Prensibi nasıl çalışır?

SSL/TLS protokolü ile şifreli ve gizli veri aktarımına başlamadan önce iletişim kuracak iki tarafın bazı işlemlerin adımlarını takip etmesi gerekmektedir. Tüm bu adımlardan oluşan iletişime “SSL/TLS Handshake” adı verilmektedir. Bu adımlar aşağıdaki gibidir:

  • Kullanıcı sunucuya bir istek gönderir.
  • Sunucu, genel anahtarını kullanıcıya kendi SSL/TLS sertifikasıyla birlikte gönderir.
  • Kullanıcının tarayıcısı gönderilen sertifikanın geçerli olup olmadığını kontrol eder ve doğrular.
  • Kullanıcının tarayıcısı rastgele oluşturulmuş bir simetrik anahtar oluşturur ve bu simetrik anahtarı sunucunun gönderdiği genel anahtarla şifreleyerek sunucuya gönderir.
  • Sunucu, şifrelenmiş simetrik anahtarı özel anahtarla çözer ve simetrik anahtar sunucuya güvenli bir şekilde gönderilir.
  • Bu aşamadan itibaren sunucu, kullanıcının tarayıcısına göndereceği her veriyi bu simetrik anahtarı kullanarak şifreler.
  • Kullanıcı bu simetrik anahtara sahip olduğundan, gelen şifreli veriyi simetrik anahtarla çözer ve sayfayı güvenli bir şekilde görüntüler.
Image Source: https://medium.com/@vanrijn/an-overview-of-the-ssl-handshake-3885c37c3e0f

Şifreleme Saldırıları
Eğitimin bu bölümünde temel kriptografik saldırılar kısaca tartışılacaktır. Kriptografik saldırılar, kripto algoritmasına bağlı olarak anlaşılmasını zorlaştıran teknik ayrıntılarda ustalık gerektirir. Her kripto algoritmasına yönelik kriptografik saldırılar farklılık gösterir. Bu bölümün amacı kriptografik saldırı türlerinin ne olduğunu ve temel olarak ne anlama geldiğini basit örneklerle açıklamaktır.


Kriptanaliz ve Saldırı Türleri
Kriptanaliz, kriptolojinin kapsamına giren bir bilim dalıdır. Bu bilim dalı ile ilgilenenler, kriptografi uzmanları tarafından tasarlanan kripto algoritmalarının güvenilirliğini test etmektedir. Buradaki test rutin testlerden çok farklıdır. Kripto algoritmasına özel saldırı yöntemleri keşfedilerek, algoritmadaki zayıflıktan yararlanılır ve bu şekilde kripto algoritmasının güvenilirliği test edilir. Kriptanaliz temel olarak 3 başlıkta incelenir:

  • Klasik Kriptanaliz
  • Uygulama Saldırıları
  • Sosyal mühendislik

Klasik Kriptanaliz
Klasik kriptanaliz, şifreli metinden düz metni elde etmeye veya şifreli metinden anahtarı elde etmeye çalışır. Bu yöntemle kripto algoritmasının zayıf noktası bulunurken genellikle basit yöntemler kullanılır. Crypto algoritmasının yapısal zayıflıkları kullanılabilir veya brute-force teknikleri ile tüm olasılıklar denenebilir. Genellikle yüksek işlem gücü gerektiren bilgisayarların bu saldırı türü için kullanılmasına gerek yoktur. Tarihi Şifrelere yönelik saldırılar bu gruptadır.


Kaba Kuvvet Saldırıları
Brute-Force saldırılarında saldırgan, ele geçirdiği şifrelenmiş veriler üzerinde olası tüm anahtar olasılıklarını deneyerek doğru anahtar değerini belirlemeye çalışır. Her tuş denemesi sonucunda elde edilen verinin anlamlı olup olmadığını kontrol ederek anahtarı elde edip etmediğini anlayabilir. Bu saldırı türünde pek çok farklı kriter olsa da anahtar uzunluğu ve saldırganın işlem gücü önemlidir. Anahtarın uzunluğu yeterince uzun değilse ve saldırgan bu saldırıyı gerçekleştirecek işlem gücüne sahipse anahtarın kısa sürede ele geçirilmesi mümkün olabilir. Bu tür saldırıların kriptografik olarak önlenmesi için kripto algoritmasının anahtar değerinin uzunluğunun kaba kuvvet teknikleriyle bulunamayacak şekilde olması gerekir. Saldırganın yüksek işlem gücüne sahip olduğu varsayılarak geliştirilen kripto algoritması, onu daha güvenilir bir kripto algoritması haline getirebilir. Basit bir örnek kaba kuvvet saldırısıdır:

Diyelim ki yukarıdaki görseldeki gibi bir giriş paneli var. Bu panele erişim için şifre gereklidir. Diyelim ki şifre 1 karakter uzunluğunda ve sadece rakamlardan oluşuyor. Bu durumda olasılıklar çok küçük olacaktır. Olası tüm şifreler şu şekildedir: “0,1,2,3,4,5,6,7,8,9” Bu 10 olasılık denenerek hangisinin doğru şifre olduğu belirlenebilir. Örneğin doğru şifre “9”dur. 0’dan 9’a kadar tüm değerler denenerek çözülebilir, “0-8” arasındaki değerler için değil “9” değeri için başarılıdır. Bu örnekte başarılı olmanın sonucu sisteme giriş yapabilmektir. Konuyu daha iyi anlatmak için böyle bir örnek verildi ancak şifrelenmiş verilere yapılan kaba kuvvet saldırısının sonucu, anlamsız verilerin anlamlı hale gelmesidir.


Harf Frekans Analizi
Önceki başlıkta Sezar şifresi üzerinde kaba kuvvet saldırısını kullanmış olsaydık anahtar değerlerin olasılık sayısı 26 yani alfabedeki harf sayısı kadar olacaktı. Her harf için farklı bir harf şeklinde Sezar şifresi yerine ikame şifre olarak bir şifreleme yöntemi kullanılırsa, kaba kuvvet saldırısından daha etkili bir saldırı yöntemi kullanılabilir: “Harf Frekans Analizi”. Bu analitik yöntem, kripto algoritmasının zayıf yönlerini kullanarak düz metin elde etmeyi mümkün kılar. Yerine koyma şifresinde her harf sabit bir harfe karşılık gelir. Bu analitik bir zayıflığı ortaya koyuyor. Örneğin İngilizce’de en çok kullanılan harflerden biri istatistiksel olarak “E” harfidir (yaklaşık %13). En çok kullanılan ikinci harf ise “T” harfidir (yaklaşık %9). Saldırganın elindeki şifreli metinde harf analizi yapılırsa her harfin ne kadar olduğu rahatlıkla görülebiliyor. “E” harfine karşılık gelen harf metinde en büyük sayıya sahip olan harf olacaktır. Örnek olarak aşağıdaki düz metin ve şifreli metni inceleyelim:

Düz Metin: Sertifikaya sahip olmak işe alım sürecini etkileyen popüler faktörlerden biridir. Adayların sertifikaları, işe alım sürecinde yetkili olan insan kaynakları uzmanları veya işe alım yöneticileri tarafından dikkate alınır. Sertifikaya sahip olmak veya birden fazla sertifikaya sahip olmak, diğer başvuru sahipleri arasında öne çıkmanız açısından avantajlı olacaktır. Bazı durumlarda, açık pozisyonda ilan edilen gereksinimlere bağlı olarak sertifikaya/sertifikalara sahip olmak zorunlu olabilir.

Şifreli metin: Kdylqj d fhuwlilfdwh lv rqh ri wkh srsxodu idfwruv wkdw diihfw wkh uhfuxlwphqw sörfhvv. Kxpdq uhvrxufhv vshfldolvwv ru wkh klulqj pdqdjhuv zkr duh dxwkrulchg lq wkh uhfuxlwphqw sörfhvv frqvlghu wkh fhuwlilfdwhv ri wkh fdqglgdwhv. Kdylqj d fhuwlilfdwh ru pxowlsoh fhuwlilfdwhv zloo eh dgydqwdjhrxv lq rughu wr vwdqg rxw dprqj rwkhu dssolfdqwv. Lq vrph fdvhv kdylqj fhuwlilfdwh(v) pdb eh pdqgdwrub ghshqglqj rq wkh uhtxluhphqwv srvwhg rq wkh rshq srvlwlrq.

Düz metindeki harf sayısına baktığımızda aşağıdaki gibi bir tablo görüyoruz:

Not: Girişteki karakter sayısını görmek için aşağıdaki araç kullanılabilir.

CharacterCounter: https://github.com/smh67dmrc/CharacterCounter

Şifreli metindeki harf sayısına baktığımızda şöyle bir tablo görüyoruz:

Not: 26 harf dışındaki karakterler (boşluk, parantez ve noktalama işaretleri) dikkate alınmaz.

Her iki tablodaki ilk 3 harfi sırasıyla karşılaştıralım:

Düz metin: e, t, a
Şifreli metin: h, w, d

Görüldüğü üzere yukarıda belirtilen istatistiklerle tutarlı bir sonuçla karşılaşılmıştır. “H” harfi en çok kullanılan harf olan “e” harfidir. En sık kullanılan ikinci harf ise “t” harfine karşılık “w” harfidir. Alfabe üzerinde bir inceleme yapılırsa:

Yukarıdaki görselde görüldüğü gibi incelenen 3 harfin tamamı aynı kaydırma değerine sahiptir: “3”. Böylece yapılan kriptanaliz sonucunda yukarıdaki metnin tamamının “Caesar Cipher(ROT 3)” kullanılarak şifrelendiği belirlendi. Cyberchef aracı ile aşağıdaki bağlantı üzerinden kontrol sağlanabilmektedir:

CyberChef: https://tinyurl.com/bdzjvep5


Uygulama Saldırıları
Uygulama saldırıları, uygulanması teknik bilgi gerektiren gelişmiş bir saldırı türüdür. Örneğin işlemcinin elektrik tüketiminin gizli anahtar kullanılarak ölçülmesine göre gizli anahtarın elde edilmesi böyle bir saldırıdır. Böyle bir saldırıda gücü takip ederek sinyal işleme teknikleriyle gizli anahtarı elde etmek mümkün olabilir. Yani bu tür saldırılara “Yan Kanal Saldırıları” adı verilmektedir.


Sosyal mühendislik
Sosyal Mühendislik, kişinin kendi zafiyetinden kaynaklanan saldırı türlerinin genel adıdır. Kriptoloji dışında bu konu oldukça yaygındır ve birçok yaratıcı tekniğe sahiptir. Daha çok bu başlık altında bahsedilen kriptoloji açısından kullanılmaktadır. Örneğin şifrelenmiş bir metnin elde edilmesi için gerekli olan gizli anahtarın elde edilmesi amacıyla “sosyal mühendislik” yöntemleri kullanılabilir. Rüşvet, şantaj ve klasik casusluk yöntemleri örnek olarak verilebilir. Gizli anahtarı öğrenmek için güç kullanmak da bu yöntemler arasında yer almaktadır. Sık kullanılan yöntemlerden biri de kişiyi telefonla ikna etmektir. Bir senaryo etrafında saldırgan, mantıksal bir nedene dayanarak hedefe ulaşabilir. Örneğin BT departmanından olduğunu söyleyen bir saldırgan, yazılım güncellemeleri için kişiden gizli anahtarını veya doğrudan şifresini isteyebilir. Saldırganın bu saldırıda başarılı olabilmesi için genellikle karşı tarafı ikna etmesi yeterlidir. Her ne kadar teknik olmayan ve basit bir yöntem olsa da bu tarz konuşmalarla pek çok kişi ikna edilebiliyor. Günümüzde hala popülerliğini koruyan yöntemlerden biridir. Böyle bir saldırıdan korunmak için insanlara yatırım yapılmalı ve çalışanların farkındalığı arttırılmalıdır.

kaynak: letsdefend.io

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir