Affine şifreleme

**Affine şifreleme** veya **Doğrusal şifreleme**, bir tür monoalfabetik ikame şifresi olup, bir alfabedeki her harf sayısal eşdeğeriyle eşleştirilir, basit bir matematiksel fonksiyon kullanılarak şifrelenir ve tekrar bir harfe dönüştürülür. Kullanılan formül, her harfin başka bir harfe şifrelendiği ve tekrar geri döndüğü anlamına gelir, yani şifre esasen hangi harfin hangisine gideceğini düzenleyen bir kurala sahip standart bir ikame şifresidir. Bu nedenle, tüm ikame şifrelerinin zayıflıklarına sahiptir. Her harf  fonksiyonu ile şifrelenir, burada  kaydırmanın büyüklüğüdür.

## Tanım
Burada,  boyutundaki bir alfabenin harfleri ilk olarak  aralığındaki tam sayılara eşlenir. Daha sonra modüler aritmetik kullanarak her bir düz metin, harfinin karşılık geldiği tam sayıyı bir şifreli metin harfine karşılık gelen başka bir tamsayıya dönüştürür.
Tek bir harf için şifreleme işlevi şöyledir;
:E(x)=(ax+b)\bmod{m}
burada modül , alfabenin boyutu ve  ile  ise şifrenin anahtarlarıdır.  değeri,  ve  aralarında asal olacak şekilde seçilmelidir. Şifre çözme fonksiyonu şöyledir;
:D(x)=a^{-1}(x-b)\bmod{m}
burada ,  modulo 'nın modüler çarpımsal tersidir. Yani, şu denklemi karşılar;
:1 = a a^{-1}\bmod{m}
'nın çarpımsal tersi yalnızca  ve 'nin eş olması durumunda mevcuttur. Dolayısıyla  kısıtlaması olmadan şifre çözme mümkün olmayabilir.
Şifre çözme fonksiyonunun şifreleme fonksiyonunun tersi olduğu aşağıdaki gibi gösterilebilir;
:
\begin{align}
D(E(x)) &= a^{-1}(E(x)-b)\bmod{m}\\
 &= a^{-1}(((ax+b)\bmod{m})-b)\bmod{m} \\
 &= a^{-1}(ax+b-b)\bmod{m} \\
 &= a^{-1}ax \bmod{m}\\
 &= x\bmod{m}
\end{align}

## Zayıf yönler
Afin şifresi, özünde bir monoalfabetik ikame şifresi olduğundan, bu şifreler sınıfının zayıflıklarını miras alır. Sezar şifrelemesi  ile bir Afin şifresidir, çünkü şifreleme fonksiyonu basitçe doğrusal bir kaydırmaya indirgenir. Atbash şifresi ise  kullanır.

İngilizce mesajların şifrelenmesi, özel durumu göz önüne alındığında (yani ), 26 önemsiz Sezar şifresini saymazsak, toplam 286 önemsiz olmayan afin şifre vardır. Bu sayı, 26'dan küçük olan 26 ile aralarında asal olan 12 sayı olduğu gerçeğinden gelir (bunlar 'nın olası değerleridir). Her  değeri, 26 farklı toplama kaymasına sahip olabilir ( değeri); bu nedenle 12 × 26 veya 312 olası anahtar vardır. Bu çeşitlilik eksikliği, Kerckhoffs İlkesi ışığında düşünüldüğünde sistemi oldukça güvensiz hale getirir.

Şifrenin birincil zayıflığı, kriptanalistin iki şifreli metin karakterinin düz metnini (frekans analizi, kaba-kuvvet (brute force), tahmin veya başka bir yolla) keşfedebilmesi durumunda anahtarın bir eşzamanlı denklem çözülerek elde edilebileceği gerçeğinden kaynaklanmaktadır.  ve 'nin nispeten asal olduğunu bildiğimizden, bu otomatik bir sistemde birçok "yanlış" anahtarı hızla elemek için kullanılabilir.

Afin şifrelerde kullanılan aynı dönüşüm türü, bir sözde rastgele sayı üreteci türü olan doğrusal kongrüansiyel üreteçlerde de kullanılır. Bu üreteç, afin şifrenin güvenli olmamasıyla aynı sebepten dolayı kriptografik olarak güvenli sözde rastgele sayı üreteci değildir.

## Örnek
Şifreleme ve şifre çözmeyi gösteren bu örnekte İngiliz alfabesi temel alınarak, alfabe A'dan Z'ye kadar olan harfler olacak ve aşağıdaki tabloda bulunan karşılık gelen değerlere sahip olacaktır.

### Şifreleme
Bu şifreleme örneğinde, şifrelenecek düz metin, her harfin sayısal değerleri için yukarıda belirtilen tablo kullanılarak,  5,  8 ve kullanılan alfabede 26 karakter olduğu için  26 olarak alınarak "AFFINE CIPHER" şeklindedir. Sadece  değerinin 26 ile eş olması gerektiğinden bir kısıtlaması vardır. 'nın alabileceği olası değerler 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 ve 25'tir.  için değer,  1'e eşit olmadığı sürece keyfi olabilir, çünkü bu şifrenin kaymasıdır. Böylece, bu örnek için şifreleme fonksiyonu  olacaktır. Mesajı şifrelemenin ilk adımı her harfin sayısal değerlerini yazmaktır.

Şimdi, 'in her bir değerini alın ve denklemin ilk kısmını,  çözün. Her karakter için  değerini bulduktan sonra,  sonucunu 26'ya böldüğünüzde kalanı alın. Aşağıdaki tablo şifreleme işleminin ilk dört adımını göstermektedir.

Mesajı şifrelemenin son adımı, karşılık gelen harfler için tablodaki her bir sayısal değeri aramaktır. Bu örnekte, şifrelenmiş metin IHHWVCSWFRCP olacaktır. Aşağıdaki tablo Affine şifrelemesinde bir mesajın şifrelenmesi için tamamlanmış tabloyu göstermektedir.

### Şifre çözme
Bu şifre çözme örneğinde, şifresi çözülecek olan şifreli metin, şifreleme örneğindeki şifreli metindir. İlgili şifre çözme fonksiyonu 'dır, burada  21 ve  8 olarak hesaplanır. Başlamak için, aşağıdaki tabloda gösterildiği gibi, şifre metnindeki her harfin sayısal karşılıkları yazılır.

Şimdi, bir sonraki adım 'i hesaplamak ve ardından bu sonuç 26'ya bölündüğünde kalanı almaktır. Aşağıdaki tablo her iki hesaplamanın sonuçlarını göstermektedir.

Şifreli metnin şifresini çözmenin son adımı, sayısal değerleri tekrar harflere dönüştürmek için tabloyu kullanmaktır. Bu şifre çözme işlemindeki düz metin AFFINECIPHER'dır. Son adımın tamamlandığı tablo aşağıdadır.

### Kodlanmış alfabenin tümü
Şifrelemeyi ve şifre çözmeyi daha hızlı hale getirmek için, açık metin ve şifreli metnin harfleri arasında bire bir harita oluşturmak üzere tüm alfabe şifrelenebilir. Bu örnekte, bire bir harita aşağıdaki gibi olacaktır:

### Programlama örnekleri
Aşağıdaki Python kodu, afin şifreleme ile metin şifrelemek için kullanılabilir:


```python
# Prints a transposition table for an affine cipher.
def affine(a: int, b: int, s: str):
    import string

    D = dict(enumerate(string.ascii_lowercase, start=0))
    E = {v: k for k,v in D.items()}
    size = len(string.ascii_lowercase)
    ret = ""
    print(size)
    for c in s:
        N = E[c]
        val = a * N + b
        val = val % size
        print(f"{c}({N}) -> {D[val]}({val})")
        ret += D[val]
    return ret

affine(7, 3, 'foobar')
```


## Ayrıca bakınız
* Afin fonksiyonlar
* Atbash kodu
* Sezar şifrelemesi
* ROT13
* Kriptografi konuları

## Notlar

## Kaynakça

## Dış bağlantılar
*