Kriptoloji

Kendi Kriptolama Programınızı Yapın – Preon4Encrypter

Kişilerin kendilerine özel ve başka kişilerin erişmelerini istemedikleri veya bilgisayarının başka kişiler tarafından kullanılmak zorunda kalındığı durumlarda erişilmesini istemedikleri özel dosyaları vardır.
Özellikle popüler mesaj ve mail programlarının veya sosyal medya sitelerinin birçok kurum tarafından sıklıkla denetlendiği göz önünde bulundurulur ise kriptolama programları büyük bir ihtiyaç olarak ön plana çıkabiliyor. Birçok kişi ise kişisel bilgilerinin, düşüncelerinin yada mesajlarının öneminin farkında olmadığından sosyal medya hesapları örneğin; Facebook yada Whatsapp üzerinden gönderdiği mesajları anlık olarak denetleyen dedektiflerin olamayacağını düşünür. Ancak kişileri izleyen dedektifler değil, söz konusu kurumların büyük veri (Big Data) sistemleridir. Böylece paylaşılan bir dosyadan yada bir arkadaşa attılan mesajdaki anahtar kelimelerden kişinin kategorilendirilip karakterinin tespit edilmesi üzerine çalışılır. Bu gibi durumlardan kaçınmak için genelde internette hazır bulunan kriptolama programlarından yardım alınma ihtiyacı duyulur Ancak bu karmaşık ve kurulum gerektiren programların bilgisayarlara bir virüs yüklemediğini veya arka kapı (backdoor) içermediği nasıl anlaşılabilir? Ve ayrıca bunların hiçbiri olmasa bile kullanılan kripto, 2 yönlü popüler kripto formatlarından olmak zorunda olacak ve eski bir değişle de söylenildiği gibi “Yeterince uğraşan bir hırsızın açamayacağı bir kilit yoktur.” mottosuyla yola çıkılarak kullanılacak kripto formatını kırmayı iyi bilen biri, görevini başarıyla yerine getirecek ve istediğine ulaşacaktır. Özellikle söz konusu sosyal medya devleri olan şirketler gerekli gördüklerinde, bu konuda zorluk çekmeyeceklerdir.

Kişilerin kendi kripto formatlarını ve programlarını yapmaları ilk aşamada pek mantıklı değilmiş gibi gelebilir. Bu konudaki otoritelerin geliştirdiği popüler 2 yönlü kripto formatları uzun uğraşlar sonu kırılabiliyorken kişinin kendi yapacağı amatör kripto neden kolayca kırılmasın sorusu akıllara gelebilir. Bu programın fazlasıyla işe yarayacak olmasının temel sebebi, kişinin kendi geliştirdiği kripto programının bir başka kişide olmaması, sadece kriptolamış olunan dosyayı veya mesajı bulan biri dünyanın en iyi kripto çözücüsü bile olsa, karşısına çıkan daha önce karşılaşmadığı yeni bir kripto biçimi olacağı için, ne yapacağı hakkında pek bir fikri olmayacaktır. Böylece kişiler basit bir yöntemle dosya veya mesaj boyutunu fazla büyütmeden, kriptoladıkları verileri korumuş olurlar.
Böyle bir programı nasıl geliştirileceği konusunda, aşağıda ekip üyelerimizin, Java programlama dili ile kendi yazmış oldukları ve “Preon4Encrypter” adını verdikleri şifreleme programı üzerinden anlatılacaktır.

Mesaj Şifreleme Fonksiyonları

İlk aşamada kriptolama formatı iki yönlü olacağından dolayı iki adet fonksiyona sahip olunması gerekmektedir. İlk fonksiyon mesajları şifrelemek için, ikinci fonksiyon ise şifrelenmişleri geri dönüştürmek için kullanılacaktır.

Mesaj şifreleme fonksiyonu, şifrelenecek mesajı aldıktan sonra Base64 formatına çevirmektedir. Daha sonra Random bir sayı kadar üst üste Base64 formatına çevirir. On adet rastgele üretilen karakterlerden oluşan mesajlar oluşturulup, bu mesajların da Base64 formatına çevrilmesini sağlar. Bu durumun sebebi, korunmak istenilen mesajı sadece birkaç kez Base64 formatına çevirmenin güvenlik açısından yeterli olmayacağından, Salt etkisi yaratma gereksinimidir. On adet random mesaj oluşumu, bu ihtiyaçtan dolayı devreye girmektedir.

Bir sonraki adımda esas mesajın üst üste kaç kez Base64 e çevrilmesi gerektiğini belirten random sayı tutulur ve bu sayı kadar Base64 formatına çevrilir. Kriptolanmış mesajın başına eklenen formatlanmış sayı kullanılarak geri dönüşümü yapılabilmektedir. Ardından esas mesaj ile üretilen 10 random mesaj karşılaştırılır. Kullanılan fonksiyon bu işlemi farklı bir random index sayısı belirleyerek yapar. Böylece esas mesaj, kriptolanmış mesajın en başı ve en sonu dışında arada herhangi bir yere yerleşebilir.

Üretilen bu index sayısı da Base64 e çevirilip, kriptolanmış mesajın en sonuna eklenir. Unutulmamalıdır ki esas olarak baz alınan mesaj ilk başta ve en sonda olmamalıdır. Sebebi, kriptolanmış mesajın en başı ve en sonu o mesajı nasıl geri dönüştürüleceği bilgisini içermektedir. Bu durumu sadece bu program anlayabilir, herhangi bir kişinin Base64 ile formatlandığını fark edip geri dönüştürme işlemini gerçekleştirmesi sonucunda karşısına anlamsız sayılar çıkması muhtemel sonuçtur.

Kriptoyu geri dönüştürmeye yarayan bu 2 sayı, esas mesaj ve salt etkisi oluşturacak random 10 mesaj, ‘#’ işareti ayraç olarak kullanılacak şekilde uç uca eklenmektedir. Örneğin;

abc123 =>
#MTU1NDk=#czdGZkNjdU9tTw==#azkwNVVhYmhs#amlFbjg4MUFPNTRPVW5G#RE85TjE3QkptUHc=#VjhuOXJ0NHNOVzM0MjZWbA==#WjNBV2NaNldXQlJXNg==#QzFsNzUzMzRINVRI#WTBaNzR3NDMwWjc=#OGVJODRMNFls#WVdKak1USXo=#MXd3c2lUMG0zMzJ2#OTI4MTU=#

İkinci olarak nitelendirmiş olduğumuz fonksiyonumuz, şifrelenmiş mesajın ilk fonksiyonda yapılan süreci tersine çevirerek çözümlemesi görevini üstelenmektedir. Sonuç olarak esas mesaj bulunurken, ‘#’ ayracını baz alınarak mesajı parçalayıp, sonrasında ilk parçayı Base64 formatına göre geri dönüştürüp orijinal mesajın kaç defa üst üste şifrelendiğini hesaplar. En son parçayı geri dönüştürüp esas mesajın tam olarak nerede olduğunu tespit eder ve esas mesajı ilk hali ile sunar.

Dosya Şifreleme ve Geri Dönüştürme Fonksiyonları

Mesaj şifreleme ve geri dönüştürme işlemleri tamamlandıktan sonra, dosyalar üzerine geliştirme yapılması güveliğin bir sonraki aşaması olarak belirlenmiştir. Dosyalar için yazılan fonksiyonlar ikiye ayrılmaktadır. İlki dosya şifrelemek için ikincisi ise dosyayı geri dönüştürmek için kullanılacaktır.

Kullanılan fonksiyon, dosyanın ismini, uzantısını ve adresini alır. Sonrasında fonksiyon, dosyanın baytlarını alır ve dizilimini ters çevirir. Ters çevrilmiş dizilimi Base64 e göre şifreler ve sonucu tekrar ters çevirir. Dosyanın iki defa çevrilmesi güvenliğin sağlamlaştırılması için gerekmektedir. Dosya baytlarının okunup, Base64 formatına çevrilmesi tahmin edilebilirliği arttırdığı için güvenliği zayıflatma sorununa yola açacaktır.
Son olarak dosya geri dönüştürme fonksiyonu aşağıdaki gibidir:

Son fonksiyon dosyanın bayt dizilimini ters çevirip, sonucu Base64 e göre geri dönüştürür. Çıkan sonuç tekrar ters çevrilerek, orijinal dosyanın bayt dizilimine ulaşmış olur. İstenilirse bayt dizilimi dosya olarak kaydedilebilir.

Özet

Süreç özetlenecek olur ise, kripto formatı kişiye ait bir kriptolama programı geliştirmek oldukça kolaydır. Kripto formatının diğer insanlar tarafından bilinmemesi ve kişiye özel olması programın güvenilirliğini arttırır.

Programın arayüz tasarımlı versiyonunu kullanmak isterseniz aşağıdaki link üzerinden ulaşabilirsiniz.

Gereksinimler: Java programlama dili destekli olduğundan dolayı Java kurulumunu gerçekleştirmeniz gerekmektedir.

İndirme Linki: https://github.com/infinitumitlabs/Preon

Kullanım: .jar dosyasını indirip programı çalıştırdıktan sonra Info butonuna basınız.