BB84 protokolü — fiziksel olarak güvenli anahtar dağıtımı
BB84, Charles Bennett ve Gilles Brassard'ın 1984'te tanıttığı kuantum anahtar dağıtımı (QKD) protokolüdür. Alice ve Bob, dolanıklık kullanmadan yalnızca tek kübitler ve iki farklı ölçüm bazı yardımıyla ortak, gerçekten rastgele bir gizli anahtar üretir. Sayfa boyunca iki bazın nasıl bir "kuantum dansı" oluşturduğunu, Bob'un körlemesine yaptığı baz seçiminin neden işe yaradığını ve bir Eve hattı dinlerse anahtarın neden fiziksel olarak bozulduğunu inceliyoruz.
BB84 protokolü nedir? (derinlemesine analiz)
BB84, iki tarafın aralarındaki iletişimi şifrelemek için kullanacakları ortak gizli anahtarı kuantum mekaniği ilkelerinin garantisi altında üretmesini sağlayan bir fiziksel protokoldür. Şifreleme matematiği yapmaz; doğanın iki temel yasasını anahtara dönüştürür: ölçümün durumu geri dönülemez biçimde değiştirmesi ve kuantum durumlarının kopyalanamazlığı.
Neden kırılamaz?
Gözlemcinin etkisi Kuantum mekaniğinde bir durumu ölçmek, o durumu kaçınılmaz olarak değiştirir. Eve hattı dinleyip kübitleri okumaya çalışırsa, yanlış bazda ölçüm yaptığı her seferinde durumu rastgele başka bir duruma yıkar. Alice ile Bob daha sonra hata oranını karşılaştırdığında bu izi istatistiksel olarak görür.
No-Cloning ilkesi Eve, Alice'in gönderdiği bilinmeyen kübiti gizlice çoğaltıp birini saklayıp diğerini Bob'a gönderemez. Bu, kuantum fiziğinin kendi içindeki bir yasaktır (Wootters–Zurek, 1982). Eve'in elinde yalnızca tek kopya vardır; ölçerse bozar, ölçmezse hiçbir şey öğrenemez.
Algoritma değil, fiziksel protokol Klasik şifrelemeler matematiksel zorluğa dayanır (örn. büyük sayıları çarpanlara ayırmak). Süresi gelince Shor algoritması bunları kırabilir. BB84'ün güvenliği bir fizik yasasına dayalıdır; gelecekteki en güçlü kuantum bilgisayarın bile yapamayacağı tek şey doğanın yasasını çiğnemektir.
Bazların dansı · Z ve X
BB84'ün tüm "büyüsü" iki farklı ölçüm bazını aynı anahtarda kullanmaktan gelir. Aynı bit ( veya ) iki farklı baza dilenirse iki farklı kuantum durumuna karşılık gelir; ve bu iki durum birbirinin karşılıklı tarafsız (mutually unbiased) tabanıdır.
Doğrusal baz · Z ekseni
Hesaplama tabanı ve durumları. Bilgisayardaki klasik bitlerin doğal kuantum karşılığı; bir kübiti hiç işlem yapmadan ölçtüğümüzde aldığımız sonuç bu bazdadır. BB84'te Z bazı diye geçer.
Diyagonal baz · X ekseni
Hadamard çevirisi ve durumları. Z bazını kapısıyla döndürdüğümüzde elde ettiğimiz X bazı.
İki bazın özelliği
Karşılıklı tarafsızlık Bir kübit Z bazında ya da olarak hazırlanmışsa, X bazında ölçüldüğünde sonuç tamamen rastgeledir: ve olasılıkları tam . Tersi de geçerlidir. Bu özellik iki baz arasındaki bilgi sızıntısını kapatır.
Bob'un körlemesine seçimi Bob, Alice'in hangi bazı kullandığını bilmeden her kübit için kendi başına bir baz seçer. Ortalama olarak yarı yarıya doğru tahmin eder. Yanlış tahmin ettiklerini zaten daha sonra atacaklardır; doğru tahmin ettiklerinde ise sonuç ideal koşulda Alice'in gönderdiği bitle aynıdır.
Algoritmanın mantığı · dört adım
Tek bir BB84 turu — yani tek bir kübit alışverişi — dört kavramsal adıma ayrılır. Pratikte protokol bu adımları binlerce kez tekrar eder; sonunda elde edilen bitlerin bir kısmı atılır, kalanlar anahtara dönüşür.
Adım 1 · Alice'in hazırlığı
Rastgele bit ve baz Alice iki adet rastgele dizi üretir: kodlamak istediği bitler ( veya ) ve her bit için kullanacağı baz (Z veya X). Z bazında bit'i doğrudan ya da olarak hazırlar; X bazındaysa Hadamard kapısıyla veya hâline getirir.
Adım 2 · Bob'un ölçümü
Körlemesine baz seçimi Bob her kübit için bağımsız ve rastgele kendi bazını seçer (Z veya X). X seçtiyse ölçümden önce Hadamard uygular ki kübit standart Z-baz ölçümüne döndürülsün. Sonucu klasik bir kayda yazar.
Adım 3 · baz eleme
Açık kanaldan baz karşılaştırması Tüm kübitler işlendikten sonra Alice ve Bob klasik bir kanaldan (herkesin duyabileceği) yalnızca kullandıkları bazları paylaşır; ölçüm sonuçlarını paylaşmazlar. Aynı bazı seçtikleri kübitlere ait bitleri tutarlar, farklı baz olanları çöpe atarlar. Ortalama olarak bitlerin yarısı bu adımda kaybolur.
Adım 4 · hata kontrolü
Eve hattı dinledi mi? Kalan bitlerden küçük bir örneklem (örn. ) açıkça karşılaştırılır. Hata oranı sıfıra yakınsa kanal temizdir; kalan bitler artık ortak gizli anahtardır. Hata oranı bir eşiği (tipik olarak civarı) aşarsa tüm anahtar atılır ve süreç baştan başlar — birisi dinliyordur.
-
Alice adet rastgele bit ve adet rastgele baz üretir. Her biti uygun bazda kuantum durumu olarak hazırlar (gerekirse X, gerekirse H).
-
Alice tüm kübitleri tek tek Bob'a fiziksel olarak gönderir (foton, fiber optik, serbest uzay, vs.).
-
Bob her gelen kübit için bağımsız rastgele baz seçer; X seçerse önce H uygular, ardından her durumda standart ölçüm yapar.
-
Klasik kanaldan yalnızca bazları açıklarlar; eşleşen kübitlerin bitleri "ham anahtar"a alınır, farklı bazlılar atılır.
-
Ham anahtardan küçük bir örneklem hata oranı için kullanılır; kalanlar gizlilik artırma (privacy amplification) adımından sonra nihai anahtar olur.
Qiskit ile uygulama
Aşağıdaki örnek tek bir BB84 adımını parametrik bir fonksiyon olarak kurar: Alice'in biti, Alice'in bazı ve Bob'un bazı. Tek kübitlik bir devrede Alice hazırlığı, qc.barrier() ayracıyla "Alice → Bob taşıma" anı ve Bob'un ölçümü tek tek görülebilir. Senaryoyu alice_bit, alice_basis, bob_basis değişkenleriyle değiştirip farklı kombinasyonlarda deneyebilirsiniz.
import numpy as np
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
def bb84_step(alice_bit, alice_basis, bob_basis):
qc = QuantumCircuit(1, 1)
# 1. Alice kübiti hazırlar
if alice_bit == 1:
qc.x(0)
if alice_basis == "X": # Diyagonal baz seçildiyse Hadamard uygula
qc.h(0)
qc.barrier() # Kübit Bob'a iletilir
# 2. Bob ölçüm yapar
if bob_basis == "X": # Bob diyagonal baz seçtiyse geri döndürür
qc.h(0)
qc.measure(0, 0)
return qc
# Senaryo: Alice "1" bitini X bazında gönderiyor; Bob da X bazında ölçüyor.
alice_bit = 1
alice_basis = "X"
bob_basis = "X"
qc = bb84_step(alice_bit, alice_basis, bob_basis)
# Çalıştırma
simulator = AerSimulator()
job = simulator.run(qc, shots=1)
bob_result = list(job.result().get_counts().keys())[0]
print(f"Alice'in biti: {alice_bit}, bazı: {alice_basis}")
print(f"Bob'un bazı: {bob_basis}, ölçüm sonucu: {bob_result}")
if alice_basis == bob_basis:
print("Bazlar eşleşti — bu bit anahtarın bir parçası olabilir.")
Kod analizi · satır satır
Importlar numpy burada doğrudan kullanılmasa da tipik olarak rastgele bit ve baz dizilerini üretmek için (np.random.randint) gerekir; tek adımlık bu örnekte yer ayırma niyetiyle bırakıldı.
bb84_step(alice_bit, alice_basis, bob_basis) BB84 mantığını üç parametreye sıkıştırır. Tek kübitlik bir devrede Alice'in hazırlık adımı, taşıma ayracı ve Bob'un ölçüm adımı sırayla işlenir. Tüm kombinasyonları (4 bit × 2 baz × 2 baz =) 16 senaryoyu test etmek için bu fonksiyonu döngüye alabilirsiniz.
QuantumCircuit(1, 1) Tek kübit + tek klasik bit. BB84 dolanıklık kullanmaz; her tur tek kübitle çalışır, her atışta bir bit anahtara aday olur. Bu sadelik BB84'ü dolanıklık temelli QKD protokollerinden (örn. E91) ayıran en büyük avantajdır — donanım çok daha ucuza kurulur.
if alice_bit == 1: qc.x(0) Eğer Alice "1" göndermek istiyorsa 'dan 'e geçmek için X kapısı uygular. "0" göndermek istiyorsa hiçbir şey yapmaz; varsayılan başlangıç 'dır.
if alice_basis == "X": qc.h(0) Şimdi baz dönüşümü. Z bazı seçildiyse hazırlık biter; X bazı seçildiyse Hadamard uygulanır ve durum yerine olur. Aynı bit, farklı bazda farklı kuantum durumuna karşılık gelir — BB84'ün tam çekirdeği.
qc.barrier() "Alice kübiti gönderdi, Bob aldı" anının görsel ayracı. Aynı zamanda transpiler'ın hazırlık ile ölçüm kapılarını birbirine karıştırmasını (Hadamard'ları sadeleştirip iptal etmesini) engeller. BB84'te bu önemlidir; kapı sadeleştirme bilginin nasıl kodlandığını bozar.
if bob_basis == "X": qc.h(0) Bob'un ölçümü her zaman standart Z bazındadır (qc.measure öyle çalışır). X bazında ölçüm yapmak istiyorsa, kübiti Hadamard ile geri çevirip standart ölçüme sokar. Bu küçük simetri Hadamard'ın kendi tersine eşit olmasından kaynaklanır: .
qc.measure(0, 0) Tek kübit klasik bite yazılır. Eğer iki taraf aynı bazı seçtiyse Bob'un sonucu Alice'in bitiyle birebir aynıdır (gürültüsüz simülatörde ). Farklı baz seçildiyse sonuç tamamen rastgeledir; bu yüzden zaten daha sonra bu adım çöpe atılacaktır.
shots=1 BB84'te her atış bir mesaj kübiti demektir; istatistik için tekrar etmek mantıksızdır, çünkü her tur farklı bir bit/baz seçimiyle çalışır. Tüm protokolü simüle etmek için bu fonksiyonu bir döngüde kez çağırıp listeleri biriktirmek yeterlidir.
if alice_basis == bob_basis Baz eleme adımının tek satırlık özeti. Ham anahtara yalnızca bazların eşleştiği bitler katılır. Pratikte Alice ve Bob tüm bazları açıkladıktan sonra bu filtreyi uygular; tek atışta yapılması simülasyon kolaylığıdır.
Çalıştırma için qiskit ve qiskit-aer yeterlidir; ayrıntılar ana sayfadaki IDE ve çalıştırma bölümünde. Gerçek QKD donanımında BB84 uygulamak için fotonik bir hat (foton kaynağı + fiber + tek-foton dedektörü) gerekir; akademik simülasyonlar QiskitRuntimeService().backend("ibm_brisbane") gibi süperiletken cihazlarda yapılabilir, ama gerçek "kuantum kanal" deneyimi optik laboratuvardadır.
Devre, Eve ve doğrulama
Aşağıdaki şema "Alice bitini X bazında gönderiyor; Bob da X bazında ölçüyor" senaryosunu uçtan uca temsil eder. Sol uçta Alice'in hazırlığı (X kapısı + Hadamard); ortada kesikli mor çizgi Alice → Bob fiziksel taşımayı simgeler; sağ uçta Bob'un Hadamard ile baz çevirisi ve standart ölçümü görülür.
Aynı baz senaryosunda (alice_basis == bob_basis) Alice'in 1 biti, Bob'un ölçümünde de 1 olarak çıkar. Z–Z eşleşmesi de aynı şekilde iletim yapar. Farklı baz seçilirse sonuç rastgeledir. Hatasız bir kanalda eşleşen tüm bitler birebir aynı; hata oranı .
- aynı baz hata ≈ %0
- farklı baz rastgele · atılır
- Eve · IR hata ≈ %25
BB84 yalnızca akademik bir fikir değildir; Cenevre, Tokyo ve Viyana gibi şehirlerde bankalar arası iletişim için fiber optik üzerinden aktif olarak çalışır. Çin'in Pekin–Şangay backbone hattı yaklaşık 2000 km'ye ulaşır; uzayda Micius uydusu ise BB84'ü interkontinental mesafelerde test etmiştir.
Post-quantum şifreleme algoritmaları (CRYSTALS-Kyber, Falcon, vs.) matematiksel zorluğa dayanır; yeni bir matematik saldırısı ortaya çıkarsa kırılabilir. BB84 ise bir fiziksel protokoldür; gelecekteki en güçlü kuantum bilgisayar bile fizik yasalarını çiğneyemeyeceği için bu anahtar kırılamaz.
Tek-foton dedektörlerinin verimliliği ve fiber optikteki eksponansiyel kayıp BB84'ün pratik mesafesini sınırlar (yer üstünde tipik olarak ~100 km bir baz istasyonu için). Daha uzun mesafeler için "güvenilir röleler" ya da kuantum tekrarlayıcılar (henüz olgunlaşmakta) kullanılır.