1. Ana sayfa
  2. Algoritmalar
  3. Bell ve iletişim
  4. BB84 protokolü · Qiskit
Bell ve iletişim · Qiskit

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.

  • Çerçeve: Qiskit
  • 1 kübit / adım
  • 2 ölçüm bazı
  • ~6 dk okuma

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.

Anahtar fikir BB84 doğrudan veri göndermek için kullanılmaz. Yalnızca iki tarafın bir anahtarda hemfikir olmasını sağlar; sonraki klasik iletişim bu anahtarla şifrelenir (örn. one-time pad). Yani BB84 bir anahtar dağıtımı protokolüdür, bir şifre algoritması değil.

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 (00 veya 11) 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ı 0\ket{0} ve 1\ket{1} 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 +=(0+1)/2\ket{+} = (\ket{0} + \ket{1})/\sqrt{2} ve =(01)/2\ket{-} = (\ket{0} - \ket{1})/\sqrt{2} durumları. Z bazını HH kapısıyla 45°45° 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 0\ket{0} ya da 1\ket{1} olarak hazırlanmışsa, X bazında ölçüldüğünde sonuç tamamen rastgeledir: 0\ket{0} ve 1\ket{1} olasılıkları tam %50\%50. 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.

Neden tam iki baz? İki karşılıklı tarafsız baz BB84'ü çalıştırmaya yeter ama tek başına asgari sayıdır. Daha fazla baz kullanan varyantlar (örn. altı durumlu protokol) Eve'in bilgi kazancını daha da düşürür. BB84'ün ikilik tasarımı, sadelik ile güvenliği dengeleyen tarihsel bir tercihtir.

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 (00 veya 11) ve her bit için kullanacağı baz (Z veya X). Z bazında bit'i doğrudan 0\ket{0} ya da 1\ket{1} olarak hazırlar; X bazındaysa Hadamard kapısıyla +\ket{+} veya \ket{-} 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. %10\%10) 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 %11\%11 civarı) aşarsa tüm anahtar atılır ve süreç baştan başlar — birisi dinliyordur.

  1. Alice NN adet rastgele bit ve NN adet rastgele baz üretir. Her biti uygun bazda kuantum durumu olarak hazırlar (gerekirse X, gerekirse H).

  2. Alice tüm kübitleri tek tek Bob'a fiziksel olarak gönderir (foton, fiber optik, serbest uzay, vs.).

  3. 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.

  4. 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.

  5. 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.

Verim sezgisi NN kübit gönderirseniz ortalamada N/2N/2'si baz uyumsuzluğu yüzünden atılır; geri kalanın bir kısmı da hata kontrolüne harcanır. Tipik bir BB84 oturumunda etkin anahtar uzunluğu başlangıç kübit sayısının %40\%40'ı civarındadır. Yine de bu, klasik dünyada hiçbir şekilde elde edilemeyecek bir fiziksel garanti ile gelir.

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.

bb84_step.py Python
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.")
qiskit Aer simülatörü · 1 shot UTF-8 · LF

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 0\ket{0}'dan 1\ket{1}'e geçmek için X kapısı uygular. "0" göndermek istiyorsa hiçbir şey yapmaz; varsayılan başlangıç 0\ket{0}'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 0/1\ket{0}/\ket{1} yerine +/\ket{+}/\ket{-} 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: H2=IH^{2} = I.

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 %100\%100). 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 N=1000N=1000 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.

Hızlı deney bob_basis'i "Z" yapıp aynı senaryoyu birkaç kez çalıştırın. Aynı baz olmadığı için sonuç bazen "0", bazen "1" gelir; ortalama yarı yarıyadır. Bu, "yanlış bazda ölçüm %50\%50 rastgele sonuç" tezinin doğrudan görselidir.

Ç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 11 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.

BB84 · "1" bit · Alice X · Bob X İstemci tarafı SVG · 1 kübit · Z/X baz dansı · barrier ile taşıma sahnesi
q0 c Alice · "1, X" X H Alice → Bob tek kübit · fiziksel kanal Bob · "X" H Ölçüm M → ham anahtar
Davetsiz misafir senaryosu · Eve Eve, Alice ile Bob arasındaki kanala girip her kübiti yakalar, kendi seçtiği bir bazda ölçer ve sonucu yeni bir kübit olarak Bob'a yollarsa (intercept-resend saldırısı), her kübit için %50\%50 olasılıkla yanlış baz seçer. Yanlış bazda ölçüm durumu rastgeleleştirir; Eve ile Bob'un bazları aynı bile olsa Bob'un sonucu Alice'in bitiyle %25\%25 olasılıkla uyuşmaz. Alice ve Bob hata oranı kontrolünde bu yüksek değeri görür ve anahtarı çöpe atar — Eve görünmüş olur.
Doğrulama

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ç %50\%50 rastgeledir. Hatasız bir kanalda eşleşen tüm bitler birebir aynı; hata oranı 00.

  • aynı baz hata ≈ %0
  • farklı baz rastgele · atılır
  • Eve · IR hata ≈ %25
QKD ağları · sahada

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 kriptografi farkı

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.

Mesafe ve foton kaybı

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.