Kriptoloji, kriptografi ve kriptanaliz

Son projeyi yazarken ihtiyaç duyacağınız teorik bilgilere geçelim. Kriptografi ve onu oluşturan parçalar hakkında daha fazla bilgi edelim. Aynı zamanda, final projesini yazarken kullanacağınız şifre hakkında daha fazla şey öğreneceğiz.

1. Kriptoloji ve bileşenleri

Kriptoloji , aşağıdakileri içeren bir bilgi alanıdır:

  • Kriptografi (şifre bilimi).

    Kriptografi, yetkisiz erişime karşı korumak için bilgileri şifrelemekle ilgilidir. Bu bilgi metin, dijital görüntü, ses sinyali vb. olabilir. Şifreleme işlemi, şifreli metin veya kod metni olarak adlandırılan bilgilerin (verilerin) şifrelenmiş bir sürümünü üretir.

  • Kriptanaliz (bu şifreleri kırma yöntemleri).

    Kriptanaliz, şifreleri kırma yöntemlerini ve bu yöntemlerin nasıl uygulanabileceğini inceler. Başka bir deyişle, kriptanaliz, şifrelenmiş bilgiyi düz metne dönüştürmenin yollarını inceleyerek ters görevi yerine getirir.

2. Şifreleme anahtarı

Anahtar, bilgileri şifrelemek ve şifresini çözmek için kullanılan bir veri seçimidir. Bilgilerin şifresini başarılı bir şekilde çözme yeteneği, hangi anahtarın kullanıldığına bağlıdır. Herhangi bir nedenle bir anahtar kaybolursa, verilerin şifresini çözmek imkansız olacaktır.

Kriptografik anahtarların boyutu bit cinsinden ölçülür. Bu da, bir kriptografik anahtarın bir uzunluğa sahip olduğu anlamına gelir . 128 bit uzunluğunda iyi bir şifreleme gücü sağlanır.

Kriptografik anahtar türleri:

  1. Simetrik tuşlar (gizli tuşlar). Şaşırtıcı olmayan bir şekilde, bu tür anahtarlar, simetrik anahtar algoritmaları olarak bilinenlerde kullanılır. Ana amaçları ileri veya geri kriptografik dönüşümler (şifreleme/şifre çözme, mesaj kimlik doğrulama kodunun doğrulanması) gerçekleştirmektir.

  2. Asimetrik tuşlar. Asimetrik anahtar şifreleme algoritmalarında kullanılırlar (örneğin, bir elektronik dijital imzayı doğrularken).

Simetrik anahtar şifreleme algoritması ile çalışacağımız için burada fazla detaya girmeyeceğiz.

3. Yerine koyma alfabesi

Bir ikame alfabesi, giriş karakterlerini kodlamak için kullanılan eksiksiz bir karakter kümesidir.

4. Kriptanaliz Yaklaşımları

Pek çok farklı kriptanaliz yaklaşımı ve yöntemi vardır, yani şifreleri kırmanın yolları.

Bunların en basitini anlatacağız:

  1. Kaba kuvvet (veya kaba kuvvet araması), biz doğru olanı bulana kadar olası tüm anahtarları deniyor. Bu yöntemin avantajı basitliğidir. Dezavantajı, çok sayıda olası anahtar içeren şifreler için uygun olmamasıdır.

  2. İstatistiksel verilere dayalı kriptanaliz — bu yaklaşımda, şifreli metinde farklı karakterlerin oluşumuna ilişkin istatistikler toplarız ve ardından düz metinde farklı karakterlerin ortaya çıkma sıklığına ilişkin istatistiklere dayalı olarak şifreyi çözeriz.

    Örneğin: P harfinin İngilizce metinlerdeki sıklığının %1,9 olduğunu biliyoruz. Şifreli metni incelerken, aynı sıklıkta meydana gelen bir sembol ararız ve bunun P harfi olduğu sonucuna varırız.

    Bu yaklaşımın dezavantajı, metnin belirli diline, yazarına ve stiline bağlı olmasıdır.

5. Sezar şifresi

Bu, en basit ve en iyi bilinen şifreleme yöntemlerinden biridir. Adı, elbette, bu yöntemi generallerle gizlice yazışmak için kullanan İmparator Gaius Julius Caesar'dan geliyor.

Bir Sezar şifresi, düz metindeki her karakterin, alfabede solunda veya sağında sabit sayıda konum olan bir karakterle değiştirildiği bir ikame şifresidir.

Diyelim ki kaydırmayı 3'e ayarladık. Bu durumda, A'nın yerine D gelecek, B E olacak ve bu böyle devam edecek.

Bu, nihai projeyi tamamlamak için ihtiyaç duyacağınız minimum teori miktarıdır. Görev açıklamasına geçelim!

Java Syntax modülü için son proje. Bir kriptanalizör yazalım

Senin görevin Sezar şifreleriyle çalışan bir program yazmak.

Kriptografik alfabeniz İngiliz alfabesinin tüm harflerinden ve noktalama işaretlerinden (. , ”” : - ! ? BOŞLUK) oluşsun. Değiştirme alfabemizin bir parçası olmayan karakterlerle karşılaşırsanız, onları atlayın.

Zorunlu gereklilikler

Programın 2 modu olmalıdır:

  1. Şifreleme/şifre çözme. Program, belirli bir şifreleme anahtarı kullanarak metni şifrelemeli ve şifresini çözmelidir.

    Program, kaynak metni içeren bir metin dosyasına giden yolu almalı ve karşılık gelen şifreli metni içeren bir dosya oluşturmalıdır.

  2. Kaba kuvvet saldırısı ile kriptoanaliz

    Bu modda, programın bir giriş metin dosyasında bulunan şifreli metni kırması gerekir.

    Kullanıcı kaba kuvveti seçerse, programın olası anahtarları bağımsız olarak sıralaması, doğru anahtarı seçmesi ve metnin şifresini çözmesi gerekir.

    Doğru anahtarı başarılı bir şekilde belirlemek için programın hangi kriterleri kullanması gerektiğini düşünün. Kelimeler arasındaki boşluklara veya noktalama işaretlerinin doğru kullanımına dikkat etmeniz gerekebilir.

Ek (isteğe bağlı) gereksinimler

1. İstatistiksel analiz ile kriptanaliz

Kullanıcı iki kriptanaliz yönteminden birini seçebilmelidir. Kullanıcı istatistiksel analiz modunu seçerse, kullanıcıdan düz metin biçiminde, tercihen aynı yazar tarafından ve aynı stilde ek bir metin dosyası yüklemesini isteyin. İkinci dosyanın içeriğine bağlı olarak, program karakterlerin oluşumuna ilişkin istatistikleri derlemeli ve ardından bu istatistikleri şifreli metnin kriptanalizini gerçekleştirmek için kullanmaya çalışmalıdır.

2. Kullanıcı arabirimi

Kendi takdirinize bağlı olarak kullanıcıyla etkileşim için iletişim kutuları oluşturun. İstenirse Swing ve JavaFX grafik çerçevelerini kullanabilirsiniz.

Bitmiş çözümünüzü genel bir Git deposuna yükleyin.

Grup içinden geçtiğinde proje kontrol edilecektir.