# Paillier şifreleme sistemi
Paillier şifrelemesi , 1999'da Pascal Paillier tarafından geliştirilen olasılıksal açık anahtarlı şifreleme yöntemidir. n'inci kök sınıflarını hesaplamanın zorluğunu kullanan Paillier şifreleme sistemi, kararsal bileşik kök sınıfı varsayımı (decisional composite residuosity assumption) üzerine kurulmuştur. 
Sistem, toplama işlemine göre homomorfik (homomorphic) özellik gösterir; yani sadece açık anahtarı, m_1 ve m_2’nin şifrelemesini kullanarak m_1+m_2’nin şifrelenmiş hâli hesaplanabilir.


## Algoritma.
Sistemin çalışma şekli aşağıda anlatılmıştır:


### Anahtar Üretimi.
 - ”p” ve “q”, rastgele seçilen, birbirinden bağımsız ve EBOB (pq, (p-1)(q-1))=1 özelliğini sağlayan iki büyük asal sayı olsun. İki asal sayı da eşit uzunlukta seçilirse, yani güvenlik parametresi s için p, q ∈1 || {0,1}^s-1 ise bu koşul doğrudan sağlanır.
 - n=pq ve λ=EKOK(p-1,q-1) olarak hesaplanır.
 - g∈ℤ^ _n^2 olmak üzere rastgele bir g tam sayısı seçilir. Yani g sayısı, 1 ile (n² - 1) arasında rastgele bir değer almalı ve EBOB(g, n²) = 1 özelliğini sağlamalıdır.
  - L fonksiyonu L(u) = u-1/n şeklinde tanımlanmak üzere  μ= (L(g^λn^2))^-1 n'nın hesaplanabilirliği kontrol edilerek, n'nin g'nin mertebesini böldüğünden emin olunur.
 a/b gösteriminin a ile b’nin çarpmaya gore modüler tersinin çarpımına değil, a’nın b’ye bölümüne; yani v ≥0 olmak üzere a ≥vb eşitsizliğini sağlayan en büyük tam sayı v’ye eşit olduğuna dikkat ediniz.
  - (n, g) - Açık Anahtar (Şifreleme Anahtarı).
  - (λ, μ). - Gizli Anahtar (Şifre Çözme Anahtarı)
Eğer eşit uzunlukta p,q kullanılırsa, yukarıda anlatılan anahtar üretim işlemi, φ(n) = (p-1)(q-1) olmak üzere, g = n+1, λ= φ(n), ve μ= φ(n)^-1 n, şeklinde daha basit olarak yapılabilir. .


### Şifreleme.
  - m, m∈ℤ_n koşulunu sağlayan, şifrelenecek mesaj olsun.
  - r∈ℤ^ _n koşulunu sağlayan rastgele bir r seçilir. Yani r sayısı, 1 ile (n - 1) arasında rastgele bir değer almalı ve EBOB(r, n²) = 1 özelliğini sağlamalıdır.
 - Şifreli metin c=g^m ·r^n n^2 şeklinde hesaplanır.


### Şifre Çözme.
 - Şifreli metin c∈ℤ^ _n^2 
 - Mesaj m = L(c^λ n^2) ·μn eşitliği kullanılarak hesaplanır.
Özgün makalede belirtildiği gibi şifre çözme işlemi, temel olarak, mod n^2’de yapılan bir üs alma işleminden ibarettir.


### Homomorfik Özellikler.
Paillier şifrelemesinin homomorfik özelliği oldukça önemlidir. Şifreleme fonksiyonu toplama işlemine göre homomorfik olduğu için, aşağıdaki eşitlikler geçerlidir:
  - Şifrelenmemiş metinlerin homomorfik olarak toplanması
 D(E(m_1, r_1)·E(m_2, r_2)n^2) = m_1 + m_2 n. 
 D(E(m_1, r_1)·g^m_2 n^2) = m_1 + m_2 n. 
  - Şifrelenmemiş metinlerin homomorfik olarak çarpılması
 D(E(m_1, r_1)^m_2n^2) = m_1 m_2 n, 
 D(E(m_2, r_2)^m_1n^2) = m_1 m_2 n. 
 Daha genel olarak belirtmek gerekirse:
 D(E(m_1, r_1)^kn^2) = k m_1 n. 
Özellikle belirtmek gerekirse, Paillier şifrelenmiş hali verilen iki mesajın çarpımının şifrelenmiş hali, gizli anahtar olmadan hesaplanamaz.


### Temel Bilgiler.
Paillier şifrelemesi ile, bazı ayrık logaritmaların (Ayrık logaritma) kolay bir biçimde hesaplanabileceği gösterilebilir.
Örneğin, binom açılımı kullanarak,
 (1+x)^n=∑_k=0^n n kx^k = 1+nx+n 2x^2 + higher powers of x
Yukarıdaki eşitlikten
 (1+n)^x ≡1+nxn^2
elde edilir.
Buradan, eğer
 y = (1+n)^x n^2
ise
 x ≡y-1/n n
yazılabilir.
Yani;
 L fonksiyonu L(u) = u-1/n (tam sayı bölme işleminin bölümü) şeklinde tanımlanmak üzere ve x ∈ℤ_n iken
 L((1+n)^x n^2) ≡x n,
yazılabilir.


### Anlamsal Güvenlik.
Yukarıda belirtilen orijinal kriptosistem yukarıda gösterildiği gibi seçilmiş açık metin saldırılarına karşı anlamsal güvenlik sağlar (Seçilmiş açık metin saldırısı).