Ödeme sistemleri ve güvenliği [2] — Kriptoloji

Ömer SAVAŞ
5 min readJan 16, 2024

--

Önsöz: Bu yazı; serinin ikinci yazısıdır. Kriptolojinin geçmişi ve modern şifreleme algoritmalarını anlatmaya çalışır.

Serinin diğer yazıları:
Ödeme sistemleri ve güvenliği [1] — HSM nedir
Ödeme sistemleri ve güvenliği [2] — Kriptoloji
Ödeme sistemleri ve güvenliği [3] — Yazılımlarımızda HSM ‘i kullanma
Ödeme sistemleri ve güvenliği [4] — Key tipleri ve yapıları

Merhaba değerli okuyucu. Bu yazı serinin ikinci yazısı ve kriptoloji hakkında olacak. Algoritma ve anahtar tiplerinden biraz bahsedip HSM türleri üzerindeki implementasyonlarına değineceğim. Eğer vakitiniz olursa Gökhan Şengün abinin buradaki videosunu izleyerek daha detaylı bilgi sahibi olabilirsiniz.

Aslında bu konu blockchain ‘in yaygınlaşması ile birlikte çok yazıldı çizildi. Sanırım Sezar şifrelemesini hepimiz biliyoruz artık. Gaz ve toz bulutlarına kadar gitmeyeceğim tabii ki ama biraz geriden gelerek modern şifreleme türlerine öyle geçmek istiyorum.

Şifrelemeyi temel olarak verileri korumak için kullanırız. Gayet akılcı çok fazla yaklaşım var aslında. Mesela üniversitede bir arkadaşım kendi alfabesini geliştirmişti. Yada özel ışıkta görülebilen mürekkep diye bişey var. Hatta tarihte üzerine limon sürülerek -tek sefere mahsus- görünür olan mektuplardan bahsedilir.

Sezar dedik. Konumuz açık algoritmalar. Yani saldırganlar dataya ve algoritmaya sahip olsalar bile anahtar olmadan veriyi çözememeli. Aslında algoritmanın gizli olması da bir tür koruma yöntemi ama biz onu yalnızca karmaşıklığı artırmak için tercih ediyoruz. Bilinmezlikten kaynaklanan güvenlik, güvenilir değil kabul ediyoruz.

Basitleştiriyorum. Sezar ‘dan gelelim. Bu zat-ı muhterem (Belki de vezirlerden birisi. Fikir babasını muhtemelen tam olarak hiçbir zaman bilemeyeceğiz) taa zamanında demiş ki; ben bir yöntem bulayım yazdığım metinleri okusa da kimse anlayamasın. İçinde bulunduğu şartlara göre dahice. Çok basit bir yöntem kullanmış. Her harfi kaydırarak yazmış. Mesela 3 karakter. “ABCDE” metnini Sezar algoritmasına göre anahtarı 3 kabul ederek şifreler isek “DEFGH” çıktısını alırız.

Resim 1: Sezar algoritması ile anahtarı 3 kabul ederek şifreleme

Bugün moden dünyada şifreleme yöntemlerini anahtar tiplerine göre 2 sınıfta topluyoruz. 1 simetrik şifreleme, 2 asimetrik şifreleme. Sezar şifrelemesi tipik bir simetrik şifreleme algoritmasıdır. Tek bir anahtar var. Şifreleme ve çözme işleminde bu kullanılıyor.

Bugün yine AES ve DES gibi modern algoritmalar ile simetrik şifrelemeyi çok yoğun bir şekilde kullanıyoruz. Yukarıda da biraz bahsettim bunlar matematiksel olarak çok güçlü algoritmalar. Saldırganlar algoritmaya ve şifrelenmiş datalara sahip olsa dahi key ellerinde olmadığı senaryoda -128 bit bir anahtar için- yaklaşık 100 yıl uğraşması gerekiyor.

Evet, anahtar uzunluğunu bit ile ifade ediyoruz. Algoritmanın mahiyetine göre farklı uzunluklarda anahtar kullanılabiliyor. Genellikle de anahatar boyutu büyüdükçe data daha güvenli şifreleniyor. Tabi bunun yanında şifreleme ve çözme maliyeti de yükseliyor. Bu sebeple anahtar uzunlukları optimum seviyede tutulmaya çalışılır.

Bir önceki yazımız ile bu konuyu bağlayacak olursak işte HSM ‘in temel amacı bu ve aşağıda bahsedeceğim algoritmalara parametre olarak verdiğimiz kendi anahtarlarımızı saklamak ve kriptolojik işlemleri güvenli ortam olan HSM ‘in içinde gerçekleştirmek. Zira anahtarlar çok kıymetli. Mesela Sezar ‘ın anahtarı çalınsa savaş bile kaybedebilir. Aynı örnek malesef bugünki devletler için de geçerli.

Simetrik algoritmalar nazaran çok hızlıdır. Ayrıca yazılımsal olarak da basit bir şekilde implemente edilebilir. Ama en temel problemi anahtar dağıtımıdır. Yani algoritmanın doğası gereği anahtarınız veriyi çözecek tarafa da iletilmelidir ve gerçek hayatta bu çoğu zaman mümkün olmaz. Mesela bir bankanın sitesine gireceksiniz; aranızdaki iletişim yalnızca simetrik anahtar ile korunacak diyelim. Bu anahtar size nasıl gelecek? İletişimin ilk başında birlikte belirliyorsunuz diyelim; arada sizi dinleyenler de karar verilen anahtara sahip olacaktır. Yani fail olduk bütün gizli planlarımız deşifre oldu. Operasyon iptal Trinity al bizi. *swh

Daha önce de söyledim. Hayatta her yeni fikir, yüksek gereksinim ve ihtiyaçdan doğar. Diğer bir deyiş ile; her kriz yeni bir fikire gebedir. Simetrik algoritmalar da buraya kadar gelip çakılınca asimetrik algoritmalar doğmuş. Buradaki temel motivasyon anahtar dağıtımı problemini çözmek.

Yapısı gereği asimetrik algoritmalarda 2 det anahtar bulunur. Birisi public yani serbest anahtar, ikincisi private yani gizli anahtar. Public anahtar şifrelemek için kullanılır, private anahtar ise şifre çözmek için. İsimlerinden de anlaşılacağı üzere herkes public anahtara sahip olabilir ve veri şifreleyebilir ancak yalnızca private anahtara sahip olan aristokratlar şifrelenmiş veriyi deşifre edebilirler. Nasıl olur demeyin burada matematiksel olarak güzel bir örnek var adamlar yapmışlar. Binayenaleyh iletişim tek yönlüdür.

Bunun yanında; tüm taraflar kendi farklı private anahtarlarına sahip olsalar ve public anahtarları birbirleri ile paylaşsalar; evet iletişim çift yönlü olur fakat asimetrik algoritmalardaki maliyet yüksekliği sebebiyle çok tercih edilmez.

Bunun yerine genellikle hibrit kullanıma gidilmiştir. Asimetrik algoritma kullanılarak taraflar arasında simetrik algoritma için kullanılacak anahtar güvenli bir şekilde paylaşılır.

HTTPS örneği üzerinden -basitleştirerek- daha da açayım. Mesela ben bir sunucu ile güvenli bir iletişim kurmak istersem önce kafamdan bir anahtar belirliyorum. “12345” olsun. Ardından sunucudan public anahtarını talep ediyorum. Kafamdaki “12345” anahtarını sunucunun public anahtarı ile şifreleyip “ABCDE“ çıktısını elde ediyorum. Bu data sunucudaki private anahtar dışında hiçbir şekilde çözülemez kabul edilir. Yani ben bu datayı sunucuya gönderirken birileri trafiği dinlese bile deşifre edemez. Velhasıl bu datayı sunuya gönderiyorum o da elindeki private anahtar ile datayı çözüyor ve benim 12345 keyini belirlediğimi görüyor. Artık iletişimin geri kalan kısmında maliyeti çok daha makul olan simetrik algoritma ile verileri şifreleyip birbirimize gönderiyoruz. Dehşet verecek kadar akıllıca. Simetrik algoritmaların çalışma prensibini öğrenene kadar en başından beri dinlediğim tüm trafiği bir şekilde çözebilirim gibi geliyordu. Cehalet işte. *swh

Herneyse en bilineni RSA algoritmasıdır. Bu algoritma için private ve public key, aralarında asal iki -büyük boyutlu- sayıdır. Bunun yanında kuantum bilgisayarların bu algoritmayı taciz etmeye başlaması ile birlikte Eliptic Curve gibi algoritmalar da meşhur olmaya başlamıştır. Eliptic curve işlemleri yapmak için bir eğriden yararlanır. -Umarım- bu serinin sonunda kuantum bilgisyarlar ile birlikte RSA nasıl kırılabiliyor bunu anlattığım bir yazı daha yazacağım.

Şifreleme türlerimiz özetle bunlardı. Algoritmalar key uzunluklarını serbest bırakabildikleri gibi -yapıları gereği- yalnızca belli uzunluklardaki keyleri de kabul edebilirler. Ek olarak algoritmalar, key dışında farklı parametrelere yada yardımcılara da ihtiyaç duyabilirler. Mesela mekanizma bunlardan biridir. Mekanizmayı değiştirisek -aynı girdi datamız için- şifrelenmiş çıktı da değişebilir.

Hem genel amaçlı HSM ‘ler hem de ödeme sistemleri HSM ‘ler için iki tip algoritmalar da geçerlidir. Yalnızca ödeme sistemleri HSM ‘lerin kendilerine özel bir key yaklaşımı vardır. Bunu da bir sonraki yazıda konuşalım.

Tekrar sağlıcakla…

Serinin diğer yazıları:
Ödeme sistemleri ve güvenliği [1] — HSM nedir
Ödeme sistemleri ve güvenliği [2] — Kriptoloji
Ödeme sistemleri ve güvenliği [3] — Yazılımlarımızda HSM ‘i kullanma
Ödeme sistemleri ve güvenliği [4] — Key tipleri ve yapıları

Ayrıca bu yazıyı review eden Fatih abi ve Ozan beye teşekkür ediyorum :)

--

--