Üç Geçişli Protokol Büyüsü

Jan 09 2023
Ya da Alice, Bob'un kilitli kutusunun içindeyken kutusunun kilidini nasıl açar?
Son araştırmalarım sırasında, orijinal olarak Adi Shamir tarafından geliştirilen “Üç geçişli protokol” adlı güzel bir kriptografik protokolle karşılaştım. Bu gönderide, temel biçimini göstereceğim (bu protokol için daha fazla gelişme ve gelişme var, lütfen yukarıdaki Wikipedia bağlantısını kontrol edin).

Son araştırmalarım sırasında , orijinal olarak Adi Shamir tarafından geliştirilen “ Üç geçişli protokol ” adlı güzel bir kriptografik protokolle karşılaştım .

Bu gönderide, temel biçimini göstereceğim (bu protokol için daha fazla gelişme ve gelişme var, lütfen yukarıdaki Wikipedia bağlantısını kontrol edin).

Algoritma uygulaması için burada Google Colaboratory ile Python kullanıyorum .

Bir bit , önceden kriptografik anahtarları değiş tokuş etmeden Bob'a halka açık bir iletişim kanalı aracılığıyla bir sır göndermek ister.
Paylaşılan sır, gizli mesajın kendisi veya paylaşılan bir gizli anahtar veya daha sonraki bir iletişim oturumunda verileri şifrelemek için bir şifreleme mekanizmasında kullanılacak bir parola olabilir.
Burada paylaşılan sırrı, daha sonra gizli bir mesajı şifrelemek ve şifresini çözmek için kullanılan paylaşılan bir parola olarak kullanıyorum.

Şu senaryoyu hayal edin:
Alice ve Bob aynı sınıfta oturan öğrencilerdir. Bu, farklı fakültelerden (birçoğunun birbirini tanımadığı) öğrencilerin bulunduğu bir sınıftır.
Alice, sınıfın diğer tarafında oturan Bob'a gizli bir mesaj iletmek istiyor.
Alice gizli mesajını bir notun üzerine yazar, notu küçük bir kutuya koyar ve asma kilitle kutuyu kilitler.
Kutunun üzerine "Bob'a" yazar ve diğer öğrencilerden kutuyu Bob'a vermelerini ister.
Bob kutuyu aldığında, asma kilidini kutuya ekler, "Alice'e" yazar ve öğrencilerden kutuyu Alice'e geri vermelerini ister.
Alice daha sonra kutuyu alır, asma kilidini kaldırır, kutunun üzerine "Bob'a" yazar ve öğrencilerden kutuyu tekrar uzatmalarını ister.
Bu noktada Bob kutuyu aldığında asma kilidini çıkarır, kutuyu açar ve gizli mesajı okur.

Bunun kimliği doğrulanmamış bir protokol olduğunu unutmayın. Hiçbir gönderen veya yanıtlayan, diğer tarafın gerçekliğine güvenmez.
Örneğimizde kutu yine sınıfta olan Mallory'ye ulaşabilir.
Bu sınıfta insanlar birbirlerini tanımadıkları için Alice'in uzak tarafında oturan ve kutuyu teslim alan Mallory, asma kilidini kutunun üzerine takıp Alice'e geri gönderebilir.
Alice kutuyu kimin aldığını göremiyor ve kutudaki diğer asma kilidin sahibinin kim olduğunu gerçekten bilmiyor. Alice, aslında Mallory ile iletişim kurarken Bob ile iletişim kurduğuna inanıyor.

Sınıf senaryosunda , Bob asma kilidini Alice'inkinin yanındaki kutuya koyar ve Alice, Bob'un asma kilidi kilitliyken kendi asma kilidini kaldırabilir.
Üç geçişli protokolde birinci şifrelemenin üstüne ikinci bir şifreleme (şifreleme = kilitli asma kilit) yerleştiririz .
Sanki Bob, Alice'in kilitli kutusunu kendi kutusuna koyar ve asma kilidi kullanarak kutusunu kilitler.
Bu protokolün çalışması için, ikinci bir (Bob'un) şifrelemesi gerçekleştirildikten sonra ilk (Alice'in) şifrelemesinin kaldırılması mümkün olmalıdır; bu, Alice'in, Bob'un kilitli kutusunun içindeyken kutusunun kilidini açması anlamına gelir.

Serin!

ka : Alice'in şifreleme anahtarı
dka : Alice'in şifre çözme anahtarı
kb : Bob'un şifreleme anahtarı
m : Mesaj
E : Şifreleme
D : Şifre çözme

D(dka, E(kb, E(ka, m))) = E(kb, m)

Bu, siparişten bağımsız bir şifreleme olan değişmeli şifreleme ile mümkündür.

E(ka, E(kb, m)) = E(kb, E(ka, m))

Ve sonra:

D(dka, E(kb, E(ka, m))) = D(dka, E(ka, E(kb, m))) = E(kb, m)

Üç Geçişli protokol , anahtarları kaldırmak için modüler çarpımsal ters kullanır.

Algoritmanın adımlarını yürütelim:

Paylaşılan gizli anahtar: ks
Alice'in anahtarları: ka , ka⁻¹
Bob'un anahtarları: kb , kb⁻¹

  1. Sayıların bit uzunluğuna karar verin (örneğin, 128 bit).
  2. Herkes ortak anahtar olarak p asal sayısı konusunda hemfikirdir.
  3. Her kullanıcı, p-1'in eş asal olan rastgele bir k sayısını seçer.

4. Her kullanıcı , k'lerinin modüler çarpımsal tersi olan k⁻¹'yi hesaplar.

k⁻¹k ≅ 1(mod p-1)

Alice'in anahtarları: ka, ka⁻¹
Bob'un anahtarları: kb kb⁻¹

5. Alice , Bob ile paylaşılmak üzere paylaşılan bir gizli anahtar ks seçer.

6. Alice, paylaşılan sırrı kullanarak bir mesajı şifreler:

7. Alice, Bob'a şunları gönderir:

8. Bob, Alice'e şunları gönderir:

9. Alice , Bob'a şunları gönderir:

10. Bob aşağıdakileri hesaplar:

11. Bob'un ve Alice'in paylaşılan gizli anahtarlarının aynı olduğunu doğrulayın:

iddia ks' == ks

12. Bob, hesapladığı paylaşılan gizli anahtarı kullanarak Alice'in şifreli mesajının şifresini çözer:

m'= D(ks', c)

13. Orijinal ve alınan mesajların aynı olduğunu doğrulayın:

iddia m' == m

Algoritmanın kodunun colab not defterinde çalıştırılması aşağıdaki çıktıyı üretir (farklı üretilmiş sayılar elde edersiniz):