12 Mayıs 2013 Pazar

Bilgisayar mühendisliği öğrencileri için kriptografi dersi

Önce kısaca bu yazı yazıldığındaki durumumuzu özetleyeyim. Hiç bir bilgisayar mühendiliği bölümünde kriptografi zorunlu ders olarak okutulmuyor (veya ben bilmiyorum). Az sayıdaki üniversitede ise çeşitli isimler altında seçmeli ders olarak müfredatta yer alıyor. Ben üç yıldır Çanakkale'de bilgisayar mühendisliği öğrencilerine kriptografi'yi seçmeli ders olarak anlatıyorum.

Kriptografi günümüzde iyi bir matematik alt yapısı olan ve bilgisayar mühendisliği bakışına sahip bilim insanları için disiplinler arası bir çalışma alanı konumunda. Bu alanda çalışmak için mutlaka matematik çalışmayı sevmek gerekiyor. Bir çok kriptografik algoritmayı anlayabilmek için bile temel matematiğin üzerinde bilgi seviyesi gerekli oluyor. Bu nedenle dersi takip etmek, kriptografik algoritmaların büyüleyici güzelliğini görmek diğer derslere göre biraz daha zahmetli olabiliyor. Bu dersi alan üçüncü sınıf bilgisayar mühendisliği öğrencileri dersin tüm detaylarını takip edecek kadar matematikle ilgili olmuyorlar. Lisans seviyesinde bir seçmeli derste öğrencilere kriptografinin nasıl bir çalışma alanı olduğunu ve içindeki çarpıcı güzelliği göstermenin bile başarı olacağını düşünüyorum.

Derste kriptografinin güvensiz bir medyayı kullanarak nasıl güvenli haberleşme yapmayı sağlayabildiğinin yolları anlatılıyor. Anlatılan matematiksel kavramların başında kendisinin hesaplanması kolay fakat tersinin bulunması çok zor fonksiyonlar (tek yönlü fonksiyonlar) geliyor. Bu tip fonksiyonlar veri bütünlüğünün kontrol edilmesinde ciddi kullanım alanına sahipler. Bir veriyi bu tip bir fonksiyonla şifreleyip alıcıya göndermek ilk bakışta iyi fikir gibi görünse de bu veriden anlam çıkarmasını beklediğimiz tarafın da aynı zorluğu yaşayacağını düşünürsek şifrelemede neden kullanılamayacaklarını hızlıca anlayabiliyoruz. Burada imdadımıza tek yönlü fonksiyonların ilave bir bilgi kullanılarak kolayca geri döndürülebilen bir hali olan arka kapılı tek yönlü fonksiyonlar yetişiyor. Bu tip fonksiyonlar bu ilave bilgiyi (anahtar) bilen taraf için kolayca geri döndürülebilirken, bilmeyen taraflar için geri döndürülemez fonksiyonlar olarak tanımlanıyorlar.

Arka kapılı tek yönlü fonksiyonlar kriptografide çok önemli bir yere sahipler. Şifrelemede kullanılan anahtar sadece yetkili taraflarda bulunduğu sürece hangi şifreleme yönteminin kullanıldığının bilinmesi bile bir tehlike oluşturmuyor çünkü fonksiyonlar ancak bu anahtar sayesinde geri döndürülebiliyorlar. Şifreleme ve deşifreleme işlemlerinde aynı anahtarın kullanıldığı bu simetrik kriptosistemlerin önemli algoritmaları derste en basitlerinden daha karmaşık olanlarına doğru anlatılarak kriptografideki gelişimin gözlemlenmesi sağlanmaya çalışılıyor. Elbette konu ikinci dünya savaşında Almanya'nın hesaplarını bozan ve hepimizin kaderinin değişmesinde rolü olan Alan Turing'e, onun çalışmalarına ve hazin sonuna geliyor. Bu aşamada öğrenciler tek kullanımlık şerit haricindeki tüm şifreleme yöntemlerinin kırılabilir olduğu gerçeğiyle yüzleşmiş oluyorlar.

Simetrik şifreleme çok başarılı çalışmasına rağmen çok ciddi bir sorunu da beraberinde getiriyor: anahtarın karşı tarafa ulaştırılması. İletişimde bulunulan kanal güvensiz olunca anahtarı deşifrelemeyi yapmasını istediğimiz tarafa ulaştırmak önemli bir problem haline geliyor. 1970'lerin sonuna dek bu sorunun üstesinden gelmenin anahtarı bir başka güvenli iletişim kanalı kullanarak göndermekten başka yöntemi bulunmuyordu. Kriptografide önemli bir kilometre taşı ve radikal bir fikir olan şifrelemede başka, deşifrelemede başka anahtar kullanılması fikriyle bu sorunun üstesinden gelmek hedefleniyor. Açık anahtarlı şifreleme olarak adlandırılan bu yöntem ile önerilen birbiriyle ilişkili bir anahtar çifti üretilmesi ve şifrelemede kullanılacak anahtarın herkesin ulaşabileceği şekilde bulundurulması oluyor. Bu harika fikir sayesinde açık anahtarını bildiğiniz birine elinizdeki düz metni şifreleyip gönderip sadece onun bu metni deşifreleyebileceğine inanmanız mümkün oluyor.

Şifreleme yapan tarafın deşifreleme yapamaması elbette çok iyi bir fikir ama bu nasıl gerçekleşecek sorusu da önemli. Sonuçta yapmak istediğimiz şey birbiriyle ilişkili iki anahtar üretmek ve bunların sadece birini bilen bir tarafın diğerini hesaplayamamasını sağlamak. Burada hesaplayamaması derken elbette anlamlı bir zamanda bu hesabın sonuçlanmasını kastediyoruz. Günlük hayatta kullandığımız büyüklükteki sayılarla bu sorunun üstesinden gelmek mümkün değilken ölçek büyüyünce kolay diye düşündüğümüz bir çok işlemin geri döndürülmesinin çok zor olduğunu görüyoruz.

Bu yöntemlerin en çok bilinenlerinden biri olan RSA, 1977 yılında üç büyük bilim insanı tarafından büyük sayıların asal çarpanlarına ayrılmasının verimli bir zamanda yapılamayacağı varsayımından yola çıkılarak oluşturuluyor. Bu yazıda matematiksel alt yapısına değinmenin imkanı yok ama p ve q gibi iki büyük asal sayıyı çarpmak fevkalade kolayken onların çarpımından oluşan (=pxq) sayısını asal çarpanlarına ayırmak geri döndürülmesi çok fazla işlemci zamanı alacak bir işlem olarak karşımıza çıkıyor. Asal sayılar matematikçilerin yüzyıllardır çalıştığı alanlardan biri olmasına rağmen bir asal sayı formülü bulunabilmiş değil. Hatta bu konuda bir ümit de yok benim bildiğim. Büyük sayıların asal çarpanlara ayrılması problemini kullanan Rabin Kriptosistemi gibi başka kriptosistemler de mevcut. Derste bu noktaya gelindiğinde öğrencilerin çarpma gibi basit bir işlemin sayılar yeterince büyük olduğunda geri döndürülemez bir işlem olduğunu görüp büyülenmeleri hedefleniyor ama bu nadiren olan bir şey genellikle.

Açık anahtarlı kriptografide kullanılan çözülmesi zor tek problem elbette asal çarpanlara ayırma değil. Örneğin Merkle-Hellman kriptosistemi alt küme toplamı problemine dayanıyor ve alt küme toplamı problemi de ancak kümenin eleman sayısı çok fazla olduğunda bir problem olarak karşımıza çıkıyor.

Eliptik eğriler de kriptografik olarak önemi olan konular arasında olduğundan onlardan bahsetmeden geçmek mümkün değil. Öğrenciler eliptik eğriler hakkında neredeyse hiç bir şey bilmiyor olmalarına rağmen eliptik eğri kriptografisinin kavramlarını kolayca anlamaları mümkün oluyor.

Açık anahtarlı kriptografi sadece simetrik şifrelemede kullanılan anahtarın taraflar arasında değişimini sağlamakla kalmıyor elbette. Simetrik şifreleme kullanılırken mevcut olmayan elektronik imza kavramı da açık anahtarlı şifreleme ile hayatımıza giriyor. Elektronik imza ile ıslak imzada bulunan inkar edilemezlik, taklit edilemezlik, veri bütünlüğünün kontrolü [2] gibi kavramlar elektronik belgeler için de kullanılabilir hale geliyor. Dersin bu aşamasına gelindiğinde bütün öğrencilerden eposta adresleri için oluşturdukları elektronik imzaları sunuculara yerleştirmeleri ve bu imzaların parmak izlerini sınıftaki arkadaşları ile paylaşmaları isteniyor. Bu anahtar imzalama partisi sayesinde elektronik imzalar güvenli bir şekilde paylaşılmış oluyor.

Açık anahtarlı şifreleme denilince Diffie-Hellman anahtar değişim protokolünün şaşırtıcı algoritması ile herkesin erişebildiği bir medya üzerinden sadece gönderenin ve alanın bildiği bir sırrın oluşturulmasını da anlatmadan geçmek mümkün değil [1]. Renklerle bile kolayca anlatılabilen bu algoritmanın akıl dolu bambaşka bir güzelliği mevcut olsa da bundan etkilenen çok fazla olmuyor.

Simetrik ve açık anahtarlı kriptografinin çeşitli algoritmalarını görmüş olan öğrenciler artık kendilerini şaşırtacak bir şey kalmadığını düşünürken kriptografide sorunlar ve çözümler tükenmiyor. Dönem başından itibaren iletişim kanalının güvensiz olduğu ve bu kanalı dinleyen üçüncü taraflar olabileceği anlatılırken bu iletişimi dinleyen pasif bir dinleyici olup olmadığı nasıl anlaşılır sorusu gündeme geliyor artık. Veri iletişimini pasif olarak dinleyen, müdahalede bulunmayan birinin fark edilmesi klasik kriptografik yöntemlerle mümkün değilken kuantum kriptografi bu soruna da bir çözüm getiriyor. Lise ve üniversite eğitim hayatında kuantum mekaniği ile ilgili hiç bir şey görmemiş bilgisayar mühendisliği öğrencilerine Heisenberg'in belirsizlik teoremini anlatacak kadar teorik bilgi verdikten sonra BB84 anahtar değişimi algoritmasının gerçek üstü gibi görünen etkileyici algoritması anlatılıyor.

Yaklaşık 30 yıllık bir geçmişi olan BB84 gözlem yapanın gözlediğine müdahale ettiği gerçeğine dayanıyor. Sadece kriptografi için değil sosyal olarak da çok geniş etkileri olan Heisenberg'i bile hayatında hiç duymamış olan öğrencilerin BB84'ü anlayıp etkilenmeleri elbette hiç kolay olmuyor.

Artık görülecek her garipliği gördük diyen öğrencilere son olarak deterministik olmayan kriptosistemlerin de varlığını göstererek kriptografinin büyük resmini görmelerine yardımcı olmayı hedefliyoruz. Deterministik kriptosistemler aynı anahtarı kullandıkları sürece bir düz metni her seferinde aynı şifrelenmiş metne dönüştürürken probabilistik kriptosistemler aynı anahtarı kullanmalarına rağmen her seferinde farklı şifrelenmiş metinler üretmeleriyle bambaşka bir güzelliğe sahipler. Anahtar üretimi sırasında bütün kriptosistemler rasgelelik içerseler de probabilistik açık anahtarlı kriptosistemlerin şifreleme işlemi sırasında da rasgelelik içermesine rağmen geri döndürülebilir olmaları ilk bakışta şaşırtıcı geliyor ama Blum-Goldwasser, Goldwasser-Micali ve Okamoto-Uchiyama gibi algoritmaların detaylarıyla konunun anlaşılması hedefleniyor.

Kriptografinin bu geniş yelpazesi ve gerektirdiği yoğun matematik göz önüne alındığında bir dönemlik bir ders ile öğrencilere kazandırılabilecek şeylerin oldukça sınırlı olduğunu söyleyebilirim. Ben bu dersi düzenli takip eden bir öğrencinin veri şifreleme, deşifreleme, imzalama gibi kavramlar hakkında bilgi sahibi olmasını ve ileride bu konular hakkında araştırma yapmak istediğinde hedefine kolayca ulaşabilmesini hedefliyorum. Hiç kriptografi ile ilgili çalışmayacak bir bilgisayar mühendisinin bile veri iletişimi, saklanması gibi konularda nelerin yapılabilir, nelerin yapılamaz olduğu konusunda bir vizyonunun olması gerektiğini düşünüyorum. Neredeyse bütün web trafiğinin https üzerinden aktığı düşünülürse bu protokolün nasıl çalıştığını [3] bilmeyen bir bilgisayar mühendisi olmaması gerektiğini düşünüyorum.

Giderek daha yaygın kullanım alanları ortaya çıkan blokzincir kavramı ve uygulamaları da anlatılarak ders dönemi sonlandırılmış oluyor.

Son olarak; yazıda İngilizce wikipedia'ya bir çok bağlantı var. Bu maddelerin büyük bölümünün Türkçe wiki'de ya hiç karşılığı yok ya da çok kısa maddeler olarak bulunuyorlar. Her dönem kriptografi dersini alan öğrencileri bu ve benzeri maddeleri yazmaları/genişletmeleri konusunda teşvik ediyorum. Umudum odur ki bir kaç yıl sonra kriptografinin temel kavramlarının tamamı Türkçe wikipedia'da da mümkün olduğunca detaylı bir şekilde okunabilecek hale gelecektir.

[1] https://www.nyucel.com/2019/07/guvensiz-kanaldan-anahtar-degisimi.html
[2] https://www.nyucel.com/2017/02/sha1in-krlmas-ne-anlama-geliyor.html   

[3] https://www.nyucel.com/2017/05/https-nasl-calsyor.html

3 yorum:

  1. Şuan seçmeli olarak bende bu dersi alıyorum. Baya yararlı oldu açıkçası kendi adıma. Zorunlu ders olabilir. Bir çok kişiye yararı olabileceğine inanıyorum.

    YanıtlaSil
  2. Hocam siz harika bir insansınız. Kapsamı bu derece geniş bir konuyu birkaç yüz kelimeyle özetleyebilmeniz takdire şayan. Bunun ötesinde, bir eğitmen olarak da kalitenizi ortaya koyuyor. Özetin özetini yapabilmek sadece sizin bilgi ve tecrübenizde bir insanın yapabileceği birşey.

    Bu özetin özeti yazı için çok teşekkürler.

    YanıtlaSil
  3. Merhaba hocam, Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği' nde de seçmeli ders olarak bahsettiğiniz konular işleniyor. Söylediklerinize tamamen katılıyorum

    YanıtlaSil

izlediklerimden öğrendiğim bir şeyler var

İzlediğim ilk büyük konser 1990'ların başında Ankara'da Zülfü Livaneli konseriydi. Henüz Sovyetler Birliğinin olduğu zamanlardan bah...