Elgamal Şifreleme Algoritması

Günümüz teknolojileri sürekli değişmekte ve gelişmektedir. Tüm bu teknolojik gelişmeler beraberinde bir çok sorunu da beraberinde getirmekte...

Günümüz teknolojileri sürekli değişmekte ve gelişmektedir. Tüm bu teknolojik gelişmeler beraberinde bir çok sorunu da beraberinde getirmektedir. Internet uygulamaları günümüzde oldukça yaygınlaşmıştır. Bu uygulamaların en büyük sorunu ise güvenliktir. Hızla gelişen teknolojide güvenlik ile ilgili yeni mekanizmalar ve yöntemler geliştirilmeye çalışılmaktadır.Yazılım geliştiriciler, sürekli olarak yeni yöntemler denemek zorunda ve başarılı oldukları taktirde, bunları uygulamalarına yansıtmaktalar. Herkesin istediği, hızlı ve güvenli iletişim, 1970’lerde ilk kez Amerikan Savunma Bakanlığınca kullanılmaya başlanılan mesajlaşma, günümüzdeki yaygın adıyla e-mail oldukça yaygın olarak kullanılmaktadır. Günümüzde şirket içi yazışmalardan, uluslararası bir çok görüşmelere kadar bir çok işlem bu yolla yapılmaktadır. Zira gönderilen mesajın, her iki tarafta da yazılı bir kopyanın olması, dolayısıyla belgelenebilirliği çok önemli bir özelliktir. Bunun yanı sıra ucuz ve diğer hizmetlere göre çok daha hızlı, etkin olması da onu öne çıkaran diğer özellikleridir. Bu kadar üstün özellikleri ve kullanıldığı çevrelerin çokluğu ile popüler olan bu uygulamalar, doğal olarak kötü niyetli kişilerinde ilgisini fazlasıyla çekmektedir. Onlara karşı alınabilecek ilk önlem, sağlam bir şifreleme yapısı kullanmaktır. Günümüzde bilinen bir çok şifreleme algoritması mevcuttur ancak bunları aynı zamanda bu kötü niyetli kişiler de bilmekteler, yapılması gereken ise bu algoritmalardan yeni algoritmalar veya yeni yöntemler türetmektir. Bu yeni yöntem veya algoritmaları, gelişmiş programlama dilleri ile kodlayarak kullanıcı uyumlu yazılımlar geliştirmek güvenlik problemlerini bir miktar çözecektir.

Bu güvenlik algoritmalarını tasarlarken, kriptografi biliminden yararlanılmaktadır. Kriptografi, çeşitli şifreleme, anahtarlama ve çözme algoritmaları sunmaktadır. Bu çalışmada, veriler şifrelenirken, ElGamal Şifreleme algoritması kullanıldı. Programın çeşitli bölümlerinde gereken kimlik doğrulama işlemi ise özgün bir SHA (Secure Hashing Algoritm) algoritması ile sağlandı.

Öncelikle Kriptoloji literatüründe kullanılan temel kavramaları açıklayalım; Gönderici, bir mesajı gönderen, alıcı ise gönderilen mesajı alması beklenen kişidir. Şifreleme, bir mesajı doğrusal olmayan fonksiyonlar yardımıyla, okunduğunda gerçek anlamının çıkarılması çok zor hatta imkansız bir forma dönüştürme işlemidir. Şifrelenmiş bir metni, şifrelemek için kullanılan fonksiyonların, matematiksel ters fonksiyonları yardımıyla, ilk haline dönüştürme işlemine de ters şifreleme yada çözme adı verilir.

Göndericiden, alıcıya iletilmesi beklenen metni M ile, herhangi bir şifreleme algoritması yardımıyla şifrelenmiş metini Ş ile şifreleme fonksiyonunu da F ile ifade edecek olursak. Şifrelenmiş metnin uzunluğu genellikle, gönderilecek metnin uzunluğundan fazladır. Bu durumda, şifrelenmiş metinler, sıkıştırma algoritmaları yardımı ile uzunluk olarak küçültmeye çalışılır.
F(M)=Ş gösterilebilir. Şifrenin çözümlenmesi işlemi ise , F-1 fonksiyonu (F fonksiyonunun matematiksel tersini göstermektedir),
F-1(Ş)=M

biçiminde ifade edilebilir. Ayrıca F-1 fonksiyonu ters şifreleme fonksiyonu olarak da adlandırılmaktadır.

Genel olarak, her şifreleme ve şifre çözme algoritması birbirinin ters fonksiyonları olmalıdır. Sağlam bir şifreleme yapısında asla doğrusal fonksiyonlar kullanılmamalıdır. Aksi taktirde, algoritmanın kötü niyetli kişilerce çözümlenme zamanı çok kısalmış olur.

Şifreleme bilimi çok uzun yıllar boyunca sadece askeri ve diplomatik haberleşmede kullanılmaktaydı. Bu algoritmaların kullanım alanları arttıkça, standart kurallara dönüştürülmeye başlandı. Bu çalışmada yararlandığımız ElGamal Şifreleme algoritması ise, bir genel-anahtar algoritması olarak 1985’de T. ElGamal tarafından tasarlandı. Günümüze kadar, ElGamal algoritmanın kullanıldığı bir sistem üzerine hiçbir başarılı saldırı bilinmemektedir. 1994’te bağımsız birkaç araştırma grubu, genel-anahtar, sayısal imza algoritmaları tabanlı tüm farklı logaritmaların, genelleştirilmiş “meta” algoritmanın farklı sonuçları olduğu bulgularını sundular. ElGamal’ın içerdiği bu farklı logaritmalar, onun oldukça güvenli olduğunun bir göstergesidir.

Bu tip yöntemler, genel anahtardan, özel anahtarın zor bulunması prensibine dayanır. Bu zorluk, genel-özel anahtar çiftinin uzunluğuna ve ayrıca bu anahtar çiftinin ne olduğunu tahmin için yapılacak hesaplamaların güçlüğüne bağlıdır.

ElGamal şifreleme algoritmasının anahtar uzunluğu 256 bitten, rasgele seçilmiş bir bit boyutuna kadar genişletilebilir. 1024 bitten 2048 bite kadar değer alabilen bir anahtar uzunluğu gelecek 20 yıl için güvenli olarak düşünülmektedir. Bu tahmin günümüz hesaplama yöntemlerine, donanım alt yapısına ve gelecekteki kriptografi ve kripto-analizdeki ilerlemelere bakılarak yapılmaktadır. Özel anahtar için baktığımızda ise 160 bitten 240 bite kadar bir genişleyebilme özelliği bulunmaktadır.

Yapılan analizler gösteriyor ki eşit uzunluklu anahtar değerleri için RSA ve ElGamal şifreleme algoritmaları benzer güvenliğe sahiptir.

2. ELGAMAL ALGORİTMASI
ElGamal Sistemi farklı logaritmik problem üzerine dayandırılmış bir genel anahtarlama kripto sistemidir. Şifreleme ve sayısal imza algoritmalarından oluşur. Şifreleme algoritması temelde Diffie-Hellman anahtar protokolüne benzer.

Sistem parametreleri, bir asal sayı olan p ve modül p‘e göre elemanların sayısını veren g tamsayısından oluşur. Alıcı, bir özel anahtar olan a değerine ve bir genel anahtar olan y değerine sahiptir ve y=ga (mod p)’dir. Varsayalım ki gönderici bir m mesajını alıcıya göndermek istiyor. Gönderici öncelikle p’den küçük olmak şartıyla rasgele bir k sayısı üretir. Daha sonra (3) deki işlemi gerçekleştirerek y1 ve y2 değerlerini hesaplar[5,6].

y1 = gk (mod p) ve y2 = m xor yk ,
Buradaki xor bit seviyesinde yapılan “özel veya” işlemini ifade etmektedir. Bu işlemden sonra gönderici (y1,y2) değer çiftini alıcıya gönderir. Şifrelenmiş mesajı alan alıcı, (4) deki işlemi gerçekleştirir.

m = (y1a mod p) xor y2 (4)

Bu hesaplamadan sonra orijinal metne ulaşmış olunur.

2.1. Uygulamadaki Şifreleme İşlemi
Bu temel şifreleme ve şifre çözme işlemlerinden sonra, bu uygulamada kullanılan adımları inceleyelim.

Şifrelenecek metni aldıktan sonra, ilk olarak metin bloklara ayrılır. Şifreleme işlemi daha sonra bu bloklar üzerine uygulanacak ve blok şifreleme sağlanacaktır. Blok boyutunu belirlemek, yani bloklarda yer alacak eleman sayısını bulmak için aşağıdaki hesaplama yapılır.

Blok=int(log(p)/log(strlen(alph)))

P değeri de anahtarı ifade eder. P değerinin ve alfabedeki karakter sayısının logaritmalarının oranı, metnin kaç elemanlı bloklara ayrılacağını hesaplamaktadır. Alfabe boyutu küçüldükçe veya p değerinin boyutu büyüdükçe blokların boyutu büyümektedir. Bloklara ayırmanın faydası ise, bilindiği gibi iyi bir şifreleme algoritması şifrelenecek bir girdi verisine karşılık, bir şifrelenmiş çıktı verisi ve birde karakter üretir. Örneğin 1 karakter şifrelenirse, şifreleme sonucu 2 karakter üretilir. Bunun anlamı bloklar 1 elemanlı tutulursa, şifreleme sonucunda şifrelenmemiş mesajdaki karakter sayısının iki katı kadar karakterden oluşan bir şifrelenmiş mesaj elde edilir. Ancak bloklara ayrılırsa bu artış bir miktar azalmış olur. Örneğin, 40 karakterlik bir mesaj 5’erli bloklara ayrıldığında şifreleme sonucunda 48 karakterden oluşan bir şifreli mesaj elde edilir. Bloklara ayırma sayesinde bellek tasarrufu sağlanmış olur. Blok boyutunu arttırmanın dezavantajı ise algoritmanın daha basit hale getirilmesidir. Dolayısıyla bu uygulamada blok değerini 1 yapacak şekilde bir p değeri belirlendi.

Bu adımdan sonra karakterler birer birer taranmaya başlanır. İlk karakter alınır. k rasgele değeri belirlenir. Bu değer p değerinden küçük olacak şekilde düzeltilir. Alınan k, p ve g parametrelerine göre y1 değeri hesaplanır. Bulunan y1 değeri, alfabenin uzunluğuna göre modu alınarak küçültülür(6).

y1= y1 (mod strlen(alph)) (6)

cipher1=alph[y1]

Alfabedeki y1 inci eleman cipher1 isimli bir diziye atanır(7). (Burada kullanılan i indisi, girilen metindeki kaçıncı karakterin şifrelendiğini gösteren indistir.) Bu dizi şifrelenmiş karakteri tutmaktadır. İlk alınan karakterin alfabedeki kaçıncı karaktere denk düştüğü bulunur. Buradan bir indis döndürülür. Alınan indis, k, p, ve y değerine göre y2 değeri hesaplanır(3). Yine benzer şekilde y2 değerinin de alfabenin uzunluğuna göre modu alınarak küçültülmesi sağlanır.

2= y2 (mod strlen(alph))

cipher2=alph[y2]

Alfabedeki y2 inci eleman da cipher2 isimli bir diziye atanır. Bu dizide şifrelenmiş karaktere bir anahtar görevi gören ikincil şifreleme anahtarlarını tutmaktadır. Bu işlemler bittikten sonra, cipher1 ve cipher2 dizilerinde tutulan veriler; şifreli metni tutması beklenen cipher isimli dizide birleştirilirler.

cipher=cipher1+cipher2

Tüm karakterlerin taranması tamamlandığında, cipher dizisi şifrelenmiş metni tutmaktadır.

2.2. Uygulamadaki Şifre Çözme İşlemi
Bu algoritma, yetkili kullanıcılar kayıt edilirken kullanılmaktadır. Kullanıcı, programa önceden kayıt edilmemişse uygulamayı kullanamamaktadır. Bu kayıt girişinde kullanıcı, bir şifre girer. Bu şifre doğrudan veri tabanına kaydedilmez. Bu şifre, hash fonksiyonları ile geri dönüşümü olmayan başka bir veri haline dönüştürülerek veri tabanına kaydedilir. Bu yöntemle veri tabanına erişen kötü niyetli kişilerin bu şifreleri ele geçirmeleri zorlaştırılmıştır. Bu uygulamada kullanılan hash fonksiyonu ise şu şekildedir. Girilen şifre, ilk karakteri 0 indisine sahip olacak şekilde her karaktere indis verilerek alınır. Karakterleri sahip oldukları indis değeri 2’nin kuvveti olarak alınarak, karakterlerin ASCII değerleri ile çarpılır. Elde edilen tüm sonuçlar toplanır. Çıkan sayı eğer rasgele alınan bir epsilon değerinden büyükse, sayı ortadan ikiye bölünerek, diğer parçanın üzerine toplanır. Bu işlem, alınan epsilon değerinden küçük oluncaya kadar tekrar edilir.

Örneğin, girilecek şifre, “mustafa” olsun. Şifrenin küçük harflerden oluştuğu görülmektedir. Bilindiği gibi küçük harflerin ve büyük harflerin ASCII kodları farklıdır. Böylece daha sonraki zamanlarda programa giriş yapmak istersek, bu şekilde şifrenin girilmesi gerekmektedir. “Mustafa” bu şekilde yazıldığında anlam olarak aynı olmasına rağmen farklı ASCII kodlara sahip bir hash değeri hesaplanacağından sistem bu şifreyi kabul etmeyecektir. Girilen şifredeki karakterler indislere ayrılır, m karakteri 0 indisine, u 1, s 2, t 3, a 4, f 5, ve a karakteri de 6 indisine sahiptir. Şimdi bu karakterlerin ASCII karşılıklarına bakalım. m:109, u:117, s:115, t:116, a:97 ve f=102 ASCII koduna sahiptir. Şimdi aşağıdaki hesaplama sonucunda,

109*20+117*21+115*22+116*23+97*24+102*25+97*26

12755 değeri ortaya çıkmaktadır. Epsilon değerinin ise 1000 olarak seçildiğini farz edelim. Hesapladığımız değer epsilon değerinden daha büyük olduğu için değer ortadan ayrılarak üzerine toplanacaktır. Sayı sağ-önemli (right-most) olarak ikiye ayrılır. Yani sayıda tek rakam varsa, sağ tarafta, sol tarafa göre 1 adet fazla rakam kalacak şekilde ayırma işlemi gerçekleştirilir. Örneğimize bakarsak, 12755 sayısı, beş adet rakam içermektedir. Dolayısıyla sağ-önemli olarak ikiye ayrılırsa; soldan ilk iki rakam bir sayıyı, sağdan son üç rakam ise diğer bir sayıyı oluşturacaktır. 12 ve 755 sayıları gibi. Sonra bu iki sayı toplanacak. 12+755=767 çıkan sonuç epsilon değerinden küçük olduğu için işlem burada sonlandırılır. Artık şifre veri tabanına yazılırken bu yeni veriden yararlanılmaktadır. Kullanıcı programa giriş yapmaya çalıştığında, o alıştığı gibi şifresini yazacak ve “tamam” düğmesine bastığında, yazılan şifre alınıp yukarıdaki işlemler gerçekleştirilecektir. Program son haline getirdiğinde, veri tabanında o kullanıcıya ait olan şifre değeri okunacak eğer bu iki değer tutuyorsa, kullanıcıya programa erişim hakkı verilecektir.

COMMENTS

Ad

-Path “ou=Servis Hesaplari,1,android,65,Anime / Çizgi,15,App Service Plan,1,Araçlar,54,Arkeoloji,48,ARM Templates,1,Aruba Networks,1,Aruba Virtual Switching Extension,1,Aruba VSX,1,Aruba VSX Yedeklilik,1,Aşağıdaki komutumuz ile sertifka bilgilerimizi Skype sunucumuz ile eşleştiriyoruz.,1,Aylık Öykü Seçkisi,1,Ayrıca bu sekmeden eğer inhand router modeli destekliyorsa erişim portlarını Resim-4’teki gibi belirleyebiliyorsunuz,1,Az CLI,1,Azure App Service,1,Azure CLI,2,Azure Database for PostgreSQL – Flexible Server | Microsoft Learn,1,Azure DevOps,1,Azure Pipelines,1,Azure Repos,1,Azure Resource Manager,1,Azure Web App,1,bağlantılara geçelim:,1,ben genelde default da bırakıyorum.,1,Bicep,1,bicep nedir,1,Bilim,30,Bir sonraki yazıda görüşmek üzere .,1,Bonding ayarları bu kadar şimdi ssh yapıp sunucumuzu kontrol edebiliriz,1,Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz. ,2,bypass,1,CVE-2021-1730,1,Çizgi Roman / Manga,1,Daha sonra gig0/0 portu altına girip porta bir IP adresi verelim. Verilen bu IP Default Gateway olarak bilinir.,1,dc=$ADDomain,1,dc=$TLD“ `,1,Debugger,1,Delphi,2,Dergi / Fanzin,1,Dizi,7,Edebiyat,100,ekranı kilitlenmeden önce boşta geçen süreyi belirlemenizi sağlar.,1,ems,1,Etki alanının sahibinin biz olduğumuzu doğrulamamızı istiyor. Diğer seçeneklere tıklayarak hangi yöntemler ile doğrulama yapabileceğimizi görüyoruz.,1,exchange,2,Exchange Management Shell,1,Exchange server healtchek,1,Exchange Server’da Kullanıcı Mailbox’ını PST Formatında Dışarı Aktarmak,1,Firewall,1,from fn_rbac_R_System(‘disabled’)sys,1,Genel,4,Get-MailboxExportRequest,1,Güvenlik,48,Hack,7,IaC,1,Identity Awareness,1,Infrastructure as Code,1,Ip adreslerini verdik den sonra sunucunun Routing yapabilmesi için “ip_forwarding” ozelliğini aktif etmemiz gerekmektedir.,1,Iphone,16,İnceleme,5,İnsan Hayatı,22,İnternet,33,İnternet Araçları,25,İşte hepsi bu kadar :),1,JSON,1,Karşınıza çıkacak olan ekrandan denemek istediğiniz ürüne ilişkin Setup dosyalarını indirebilirsiniz.,1,Kayıp Rıhtım,1,Kayıp Rıhtım Öneriyor,10,Knight Online,2,Kriptoloji,18,LAPS nedir,1,Linux,33,listenin en altındaki Virtual PC‘yi seçiniz. Son olarak Network de ekleyip,1,Local Administrator Password Solution,1,Local password yönetimi,1,Mailbox,1,Maximum minutes of inactivity until screen locks: Cihaz,1,Microsoft 365 Teams,1,Microsoft 365 Teams Premium,1,Nasıl Yaparım,1,Nasıl Yapılır,76,Nedir,1,Network,452,OllyDbg,1,opensource,1,openstack,1,OpenStack nedir,1,OpenStack Platform Kullanıcı,1,Oyun,9,Ödüller,4,Örnek veriyorum Local AD üzerinde bir kullanıcı oluşturduğunuz ve bunun Office 365 tarafına sync edip,1,PowerShell,3,proje,1,redhat,1,Referanslar,3,Resim – 16,2,Resim-11,1,Resim-12,1,Resim-14,1,Resim-18,1,Resim-3,1,Resim-4,1,Resim-5,3,Resim-6,2,Resim-7,3,Resim-8,1,Resim-9,3,Role ve Proje Oluşturma,1,Router(config)# snmp-server community xxxx RO 11,1,Sanallaştırma tabanlı güvenlik kullanarak lokal güvenlik otoritesini ( Local Security Authority) nasıl izole edildiğini görüyoruz (Resim-4).,1,Sanat,6,Scale up,1,SCCM ile LAPS deployment,1,shutdown -r now,1,Sıra geldi Upgrade İşleminin Yürütülmesine sırasıyla,1,Sinema,70,Sistem,34,SQL,1,Şimdi de sıra geldi Client eklemeye. Client’ı da yine sağ tuş/Node deyip,1,TAGs: Aruba,1,TAGs: Azure,2,TAGS: Check Point,1,TAGs: Exchange 2019 healtcheck,1,TAGs: Exchange Server,1,TAGs: Microsoft Teams,1,TAGs: OpenStack,1,TAGs: proxy,1,TAGs: sccm ile laps dağıtımı,1,Tarih,42,Tcp / Ip,35,Teams AI,1,teams filigran,1,Teams Premium,1,Teams Premium Nedir,1,teams webinar,1,Teams yapay zeka,1,Tüm ayarlarmaları tamamlandıktan sonra update butonu ile birlikte hybrid yapılandırma sürecini başlatıyoruz.,1,TV,1,Visual Studio Code,1,VS Code,1,VSX Avantajları,1,Windows,63,WorldHistory,63,Wwid multipath –ll komutundan aldığınız çıktı,1,www.mshowto.org,2,Yardımcı Programlar,21,Yaşam,16,Yazı,80,Yazılım Geliştiriciler için Azure,1,
ltr
item
Dijital ve Organik: Elgamal Şifreleme Algoritması
Elgamal Şifreleme Algoritması
Dijital ve Organik
https://kesirlisayi.blogspot.com/2018/03/elgamal-sifreleme-algoritmas.html
https://kesirlisayi.blogspot.com/
https://kesirlisayi.blogspot.com/
https://kesirlisayi.blogspot.com/2018/03/elgamal-sifreleme-algoritmas.html
true
6620277292663937790
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content