← Quantum Store · Rehberler · Dersler · Sözlük · Paketler · Öğrenme yolları · English
İletişim ve kriptografi kursu: ışınlama, BB84 ve post-kuantum şifreleme · Ders 4 / 5 · 12 dk
BB84: dinlemeyi fark eden kuantum anahtar dağıtımı
İki kişi, araya giren her dinleyiciyi fark ederek ortak bir gizli anahtar oluşturabilir. Bennett ve Brassard’ın 1984 protokolünü öğren ve dinleyicinin bıraktığı %25 hatayı simülasyonla gör.
Gizli anahtar problemi
İki kişi ortak bir gizli anahtara sahipse mesajlarını kırılamaz biçimde şifreleyebilir. Zor olan, anahtarı kimseye kaptırmadan paylaşmaktır. Bugün bu iş RSA gibi yöntemlerle yapılıyor; ama Shor algoritmasının gösterdiği gibi bu yöntemlerin güvenliği matematiksel bir varsayıma dayanır.
Kuantum anahtar dağıtımı (QKD) güvenliği fizik yasalarına dayandırır: ölçüm durumu bozar ve kuantum durum kopyalanamaz. Bu yüzden dinleyici iz bırakmadan bilgi alamaz.
Protokol
Alice her bit için rastgele bir taban seçer: Z tabanı (|0⟩, |1⟩) ya da X tabanı (|+⟩, |−⟩, yani H uygulanmış hâller). Bob da her kübiti rastgele seçtiği bir tabanda ölçer. Tabanlar aynıysa Bob, Alice’in bitini kesin olarak okur; farklıysa sonucu yazı-tura gibidir.
Sonra ikisi herkese açık bir kanaldan yalnızca tabanlarını (bitleri değil) karşılaştırır ve tabanların farklı olduğu bitleri atar. Kalan bitlerin bir kısmını karşılaştırarak hata oranını ölçerler. Araya giren Eve, kübitleri rastgele tabanlarda ölçüp yeniden gönderirse, tutulan bitlerde yaklaşık %25 hataya yol açar ve hemen fark edilir.
import random
def bb84(n, eve, seed=7):
rng = random.Random(seed)
kept = errors = 0
for _ in range(n):
bit, alice, bob = rng.randint(0, 1), rng.randint(0, 1), rng.randint(0, 1)
sent_bit, sent_basis = bit, alice
if eve: # Eve rastgele bir tabanda ölçüp yeniden gönderir
eve_basis = rng.randint(0, 1)
if eve_basis != sent_basis:
sent_bit = rng.randint(0, 1)
sent_basis = eve_basis
result = sent_bit if bob == sent_basis else rng.randint(0, 1)
if alice == bob: # yalnızca tabanları aynı olan bitler tutulur
kept += 1
errors += result != bit
return kept, round(errors / kept, 3)
print(bb84(4000, eve=False))
print(bb84(4000, eve=True))
# (1982, 0.0) yaklaşık yarısı tutulur, hata yok
# (1970, 0.248) Eve varken yaklaşık %25 hata
Gerçek dünyada QKD
BB84, Charles Bennett ve Gilles Brassard tarafından 1984’te önerildi; 1991’de Artur Ekert dolanıklığa dayanan E91 protokolünü buldu. 2017’de Çin’in Micius uydusu, 1.200 km uzaklıktaki yer istasyonlarına dolanık foton dağıttı ve Pekin ile Viyana arasında QKD ile şifrelenmiş bir görüntülü görüşme yapıldı.
Yine de QKD’nin sınırları var: özel donanım ve fiber gerektirir, mesafe kayıplarla sınırlıdır ve gerçek cihazların kusurları saldırılara açık olabilir. Bu yüzden internetin büyük kısmını korumak için bir sonraki dersin konusu olan post-kuantum şifreleme tercih ediliyor.
Kendin dene
Girişim örneği aynı tabanda ölçümü gösterir: Alice H ile X tabanında 0 gönderir, Bob da H ile X tabanında ölçer ve kesin 0 okur. Yazı-tura örneği farklı tabanı gösterir: aynı kübit Z tabanında ölçülünce sonuç %50–%50 olur. Eve yanlış tabanı seçtiğinde de tam olarak böyle rastgele bir sonuç alır.
Tarayıcıda dene (kurulum yok)Akılda kalsın
- BB84’te Alice her biti rastgele bir tabanda (Z ya da X) gönderir, Bob rastgele bir tabanda ölçer.
- Tabanlar açıkça karşılaştırılır; yalnızca aynı tabanda ölçülen bitler anahtara girer.
- Ölçüp yeniden gönderen bir dinleyici tutulan bitlerde yaklaşık %25 hata bırakır ve fark edilir.
- QKD’nin güvenliği matematiğe değil, ölçümün durumu bozmasına ve kopyalanamamaya dayanır.
Kendini sına
BB84’te ölçüp yeniden gönderen bir dinleyici, tutulan bitlerde yaklaşık ne kadar hataya yol açar?
- %0
- %50
- %25
Cevabı göster
%25. Eve bitlerin yarısında yanlış tabanı seçer ve bunların yarısında Bob yanlış bit okur: ½ × ½ = ¼.
← Süper yoğun kodlama: tek kübitle iki bit · Post-kuantum şifreleme: kuantum bilgisayara dayanıklı matematik →