Hafta 4

Abdullah Bagyapan, gnu/linux cryptography
Back

Amaç : Kriptoloji kavramının açıklanması. Örnek kullanımların gösterilmesi. Şifreleme algoritması kodlanması.

Yazar : abdullahbagyapan


Kriptoloji Nedir ?

Kriptoloji, bilgiyi şifreleme ve gizleme ile ilgilenen bir bilim dalıdır.

Modern kriptoloji, birden çok disiplinin bir araya gelmesiyle oluşmuştur: Matematik, bilgisayar bilimleri, elektronik...

Dijital bankacılık uygulamaları, e-ticaret, dijital para birimleri, askeri iletişim gibi her alanda kriptolojinin pratik uygulamları vardır.


Kriptoloji Neden Önemlidir ?

Kriptolojinin günümüzde bu kadar önemli olmasının birçok nedeni vardır.


Kriptolojinin Yükselişi

Modern kriptoloji, 1. Dünya Savaşıyla(1914 – 1918) beraber yükselişe geçmiştir.

Rotor makinelerin keşfiyle beraber çok daha kompleks şifreleme algoritmaları geliştirilmiştir.

rotor machine

Enigma

Enigma, diplomatik ve askeri iletişimi korumak için 20. yüzyılın başlarından ortalarına kadar geliştirilen ve kullanılan bir şifreleme cihazıdır. 2. Dünya Savaşı sırasında Nazi Almanyası tarafından yaygın olarak kullanıldı.

Enigma, alfabenin 26 harfini karıştıran elektromekanik bir rotor mekanizmasına sahiptir.

enigma machine

Daha detaylı bilgi için: History of the Enigma


Encoding/Decoding

Encoding, bir bilgiyi veya veriyi belirli bir formata dönüştürme veya kodlama işlemidir. Orijinal verinin kolaylıkla iletilebilecek, saklanabilecek veya işlenebilecek kodlanmış bir forma dönüştürülmesini içerir.

ascii table
string conversion

String conversion: https://string-functions.com/string-binary.aspx


Encryption/Decryption

Encryption, verileri yalnızca anahtar sahiplerinin çözebileceği şekilde dönüştürme işlemidir.

Verinin şifrelenmemiş halini, şifrelenmiş olarak bilinen alternatif bir biçime dönüştürür.

encryption

Caesar Cipher

Caesar şifreleme, en basit ve en çok bilinen şifreleme tekniklerinden biridir. Düz metindeki her harfin, alfabede sabit sayıda kaydırılarak değiştirilmesiyle oluşan bir tür şifreleme methodudur.

caesar cipher
def caesar_cipher(text, shift):
    cipher_text = ""

    for character in text:

        if character.isalpha():
            encrypted_chr = ord(character) + shift  # get shifted character

            if (encrypted_chr > ord("z")):          # overflow check
                encrypted_chr -= 26

            encrypted_chr = chr(encrypted_chr)      # return into character

            cipher_text += encrypted_chr

    return cipher_text

cipher_text = caesar_cipher("PAUSIBER", 3)
print(cipher_text)

Online Python Editor: https://www.online-python.com/


XOR Cipher

XOR, bir mantık kapısıdır.

xor gate

XOR kapısı, karmaşık şifrelemede son derece yaygındır.

Başlıca avantajı, uygulanmasının basit olması ve XOR işleminin hesaplama açısından ucuz olmasıdır.

xor cipher

Stream Cipher, LFSR

Linear-feedback shift register (LFSR), giriş biti önceki durumunun doğrusal bir fonksiyonu olan bir dijital devredir.

En yaygın kullanılan doğrusal fonksiyonu, XOR fonksiyonudur. Bu nedenle, bir LFSR çoğunlukla bazı bitlerinin XOR kapısı tarafından yönlendirilen bir dijital devredir.

lfsr

Rastgelelik ve Sözde Rastgelelik (Pseudorandom)

Rastgelelik, bilgide kesin bir öngörülebilirliğin olmamasıdır. Rastgele adımlar dizisinin çoğu zaman bir sırası yoktur ve anlaşılır bir model veya kombinasyon izlemez.

Sözde rasgele sayı dizisi, tamamen deterministik ve tekrarlanabilir bir süreç tarafından üretilmiş olmasına rağmen istatistiksel olarak rasgele görünen bir dizidir.

İnsanlar için mevcut olan geleneksel rastgelelik kaynakları (zar atmak gibi), bilgisayarlar tarafından kolayca kullanılamayan fiziksel süreçlere dayanır.


Linear Congruential Generator (LCG)

LCG, doğrusal denklemle hesaplanan sözde rastgele sayıların bir dizisini veren bir algoritmadır. Yöntem, en eski ve en iyi bilinen sözde rastgele sayı üreteci algoritmalarından birini temsil eder.

MODULUS = 1033          # M, 0 < M          — the "modulus"
MULTIPLIER = 827        # A, 0 < A < M      — the "multiplier"
INCREMENT = 57          # C, 0 <= C < M     — the "increment"
SEED = 512              # X, 0 <= X < M     — the "seed" or "start value"

# X = (A*X + C) mod M
def lcg():

    global SEED
    
    SEED = (MULTIPLIER * SEED + INCREMENT) % MODULUS

Online Python Editor: https://www.online-python.com/


Bu hafta neler yaptık ?

© PauSiber