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, Alice ve Bob’un ileride klasik şifrelemede (örneğin tek kullanımlık ped veya simetrik blok şifreler) kullanacakları ortak gizli anahtarı kuantum kanalı üzerinden üretip doğrulamayı tanımlayan bir kuantum anahtar dağıtımı (QKD) protokolüdür. Amaç mesajı doğrudan şifrelemek veya yeni bir matematiksel şifre icat etmek değildir; güvenin kaynağı “zor matematik problemi” değil, ölçümün doğayı ve bilinmeyen kuantum durumunun güvenilir biçimde kopyalanamamasıdır.
Bu iki ayak — yanlış bazda ölçümün bıraktığı iz ile tek kopya üzerinden Eve’in sıkışması — ayrıntılı olarak Neden kırılamaz? bölümünde işlenir. Dolanıklık kullanmadan yalnızca tek kübitler ve iki ölçüm bazıyla çalışır; BB84’ün veriyi değil yalnızca anahtar üretmeyi hedeflediği Anahtar fikir kutusunda netleşir.
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 şifrelemenin önemli kısmı “hangi matematiksel problemi pratikte çözmek zordur?” sorusuna dayanır: örneğin RSA ve klasik Diffie–Hellman’da büyük sayının çarpanlara ayrılması, ECC’de eliptik eğri üzerinde ayrık logaritma, simetrik tarafta ise AES gibi tasarımlarda geniş anahtar uzayıyla kaba kuvvetin umutsuz kalması. Bu güven, bir hesaplama gücü ve algoritma varsayımına bağlıdır; yeterince büyük ve hızlı bir kuantum bilgisayarda Shor tipi algoritmalar çarpanlara ayırma ve ayrık log probleminde üssel hızlanma sunabilir; simetrik anahtar uzunlukları da yeniden tartışılır.
Kuantum mekaniği postülatı BB84’ün güvenlik çekirdeği ise “Eve, bilinmeyen tek kübit durumunu kusursuz ölçüp saklayamaz” biçiminde kuantum kuramının temel sonuçlarına dayanır: güçlü bir kuantum bilgisayar bile tek başına ölçüm veya no-cloning postülatını matematik olarak “iptal” etmez — yapabileceği şey, modelde tanımlı fiziksel sistemi simüle etmektir; yasayı çiğnemek değildir.
Teori ile sahada “komplo” iddiası Popüler “kuantum şifre %100 kırılamaz” sözü sık sık ya abartı ya da şüpheye yol açar. Akademik çerçevede karşılığı şudur: kanıtlar çoğu zaman ideal kübit, kanallar ve kimlik doğrulamalı klasik yan kanal varsayımlarıyla yazılır. Gerçek dünyada dedektörü kandırma, zamanlama/kalibrasyon hatası veya yan kanal sızıntısı gibi uygulama düzeyi saldırılar vardır — bunlar doğayı inkâr etmek değil, donanımı ve protokolü aldatmaktır; ticari QKD bu yüzden ek kontroller ve standartlarla desteklenir. Sorun “gizli bir merkezin fiziği bozması” değil, insan yapımı kutunun güvenli kalmasıdır.
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 , Pauli- operatörünün öz durumlarıdır; kuantum bilgisayarlarda çoğu zaman varsayılan okuma tabanı budur. “Klasik bit” sezgisiyle uyumludur: kübit bu bazda ölçülürse sonuç ya 0 ya 1 klasik kaydına düşer. BB84’te Alice Z bazını seçtiğinde gönderdiği durum doğrudan bu iki kutuptan biridir.
Bloch sezgisi Bloch küresinde ve kutba hizalanmış uçlardır; Z ölçümü “kuzey mi güney mi?” sorusudur. Bu geometrik resim şart değildir; iki bazın neden “birbirini dik” seçtiğimizi görselleştirir. Tam olasılık tablosu İki bazın özelliği alt başlığında.
Diyagonal baz · X ekseni
Hadamard bazı ve , Pauli-’in öz durumlarıdır (dolayısıyla “X bazı”). Tek kübitlik kapısı, hesaplama tabanı ile bu baz arasında standart köprüdür: örneğin , . Bloch resminde ekvatora oturur — Z kutbu ile açı yapar; “farklı dünyada ölçüm” imgeleri buradan gelir.
BB84’te kullanım Alice X bazında bit göndermek istediğinde önce klasik / hazırlayıp ile ’e döndürür; Bob tarafında da X ile ölçmek için çoğu kurulumda önce uygulanıp sonra standart ölçüm yapılır — bu akışın protokol adımları Algoritmanın mantığı bölümünde tekrarlanır.
İ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 1Alice'in Hazırlığı
Rastgele bit ve baz Alice iki eş uzunlukta rastgele dizi üretir: kodlamak istediği klasik bitler ( veya ) ve her konum için seçeceği ölçüm bazı (Z veya X). Gerçek sistemlerde bu dizilerin öngörülemez olması anahtarın güvenine bağlıdır — zayıf rastgele üreteçler tüm protokolü zayıflatır. Z bazında biti doğrudan ya da olarak hazırlar; X bazındaysa önce uygun Z durumunu kurup Hadamard ile veya hâline getirir.
Bazların kuantum karşılığı İki bazın ne anlama geldiği ve köprüsü Bazların dansı bölümünde ayrıntılıdır; burada Alice’in yaptığı şey yalnızca “hangi klasik biti, hangi bazda fiziksel olarak göndereceğini” seçmektir.
Adım 2Bob'un Ölçümü
Körlemesine baz seçimi Bob her kübit için Alice’ten bağımsız, yine rastgele bir baz seçer (Z veya X). Donanımda ölçüm çoğu zaman varsayılan olarak Z bazındadır; X ile ölçmek için kübite önce uygulanır — böylece “X bazında ölç” komutu, standart okuma öncesinde bir baz dönüşümüne indirgenir. Çıkan sonuç yine tek bir klasik bittir ve Bob bunu kendi tarafında kaydeder; Alice’in bu adımda hangi bazı kullandığını bilmez.
Tek yön, tek sonuç Bu adım yalnızca iletim hattının Bob ucunu tanımlar: kanal gürültüsüz ve üçüncü taraf yoksa, aynı bazda kalındığında ölçüm sonucu Alice’in kodladığı bit ile uyumlu olur; baz uyumsuzluğunun sonuçları ise bir sonraki adımda elenecek “ham” veridir, henüz ortak sır sayılmaz.
Adım 3Baz 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ı, konum konum paylaşır; ölçüm sonuçlarını bu aşamada herkese açmazlar. Aynı slotta hem Alice hem Bob aynı bazı seçtiyse o kübitin klasik biti ham anahtara aday kalır; farklı baz seçilen tüm konumlar atılır. Bağımsız ve uniform seçimde ortalama olarak kübitlerin yaklaşık yarısı bu süzgeçten düşer.
Neden önce baz? Bazları erken açıklamak Bob’un hangi ölçümlerinin “doğru tabakada” olduğunu ifşa eder; yine de protokol tasarımı gereği ölçüm değerleri bu kanaldan taşınmaz — sadece “Z mi X miydi?” bilgisi. Asıl bit dizisi hâlâ gizli kalır; aşağıdaki numaralı reçete aynı süzme işlemini özetler.
Adım 4Hata Kontrolü
Eve hattı dinledi mi? Süzmeden sonra elde kalan bitlerden küçük bir kesit (örn. ) iki tarafça açıkça karşılaştırılır; amaç kanaldaki hata oranını tahmin etmektir. Gürültü ve kayıp düşükse bu örneklemde çelişki neredeyse hiç çıkmaz ve kalan bitler ortak gizli anahtar adayıdır. Taban çizgisi hatasız bir dünya değildir: tek tek fotonda bile kayıp olabilir; asıl soru, gözlenen hata oranının “doğal gürültü” ile uyumlu olup olmadığıdır.
Eşik ve yeniden başlatma Örneklemdeki hata oranı tipik olarak civarı bir eşiği aşarsa — ki bu, pasif dinleme veya aktif müdahale belirtisi olabilir — tüm oturum iptal edilir ve anahtar üretimi baştan planlanır. Eşiğin altında kalınan yolda ise ham anahtarın bir kısmı istatistik için “yakılır”; kalan uzunluk ve gizlilik güçlendirmesi (privacy amplification) pratikte reçetenin son adımlarında işlenir.
-
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.
Aynı Devre (İki Temsil)
Örnek senaryo kodda alice_bit = 1, alice_basis = "X", bob_basis = "X"; Qiskit metin çıktısı bu üç seçimle üretilen qc'yi gösterir. Bit veya baz değişince sol ve sağ uçtaki X / H sütunları farklılaşır; ░ satırı barrier() ile taşıma anını ayırır (tek kübitte etiket q: olarak görünebilir). Sağdaki SVG aynı akışı kolon kolon okunur kılar.
print(qc) çıktısı · 1, X, X
┌───┐┌───┐ ░ ┌───┐┌─┐
q: ┤ X ├┤ H ├─░─┤ H ├┤M├
└───┘└───┘ ░ └───┘└╥┘
c: 1/═══════════════════╩═
0
Moment 0 · Alice (X · H) Moment 1 · bariyer · kanal Moment 2 · Bob (H) · ölçüm
Premium devre çizimi
renk · kapı / taşıma kesik hat · klasik alt şerit · Z/X baz kodu · sift özeti
Aşağıdaki blok, üstteki terminal ve SVG ile aynı tek kübitlik turun kapı sırasını doğrulanmış JSON ile çizer; histogram örnek bir 1024 shot sayımıdır (tarayıcıda simülatör çalışmaz).
circuit-viz · X → H → H → ölçüm
Örnek: alice_bit=1, alice_basis=X, bob_basis=X — bazlar uyuşunca sift adayı. Moment düğmeleri JSON kolonlarını vurgular.
Örnek sayım · tek klasik bit
Bazlar uyuşmadığında dağılım farklılaşır; burada eşleşen X turu için örnek gösterilir.
Bu canlı devre. Tek kübitlik BB84 turu: Alice hazırlığı (X, H — bit 1 ve X bazı), Bob ölçümü (H, ölçüm) — üstteki örnek senaryo 1, X, X.
Neden sadeleştirildi? Tam protokol çok turlu rastgele baz/bit seçimi, klasik sift ve Eve adımlarını içerir; üst panelde ayrıca barrier() (░), taşıma bandı, Z/X baz kodu şeridi ve sift özeti vardır. Canlı devre yalnızca bu sayfadaki tek turun kapı sırasını gösterir.
Üst panelle fark. Premium SVG kanal okunu, diyagonal baz simgelerini ve “baz eşleşti” özet kutusunu içerir; canlı panel ortak circuit-viz motorudur — Eve, çok tur ve klasik post-processing burada yoktur.
Devre, Eve ve Doğrulama
Bu şema, 5 · Aynı Devre (İki Temsil) bölümündeki akışı korur; "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
Şemayı adım adım oku
-
Solda Alice, bit=1 ise X uygular; bazı X ise üzerine bir H ekler.
-
Mor kesikli çizgi, tek kübitin Alice’ten Bob’a fiziksel kanaldan iletilmesini temsil eder.
-
Bob, kendi seçtiği baz X ise ölçümden önce H ile baz çevirisi yapar.
-
Ölçüm sonucu “ham anahtar”a adaydır; bazlar uyuşmuyorsa bu bit daha sonra elenir.
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.
BB84 ortaya ortak gizli anahtar malzemesi çıkarır; Alice ile Bob’un gerçekten birbirleriyle konuştuğunu tek başına kanıtlamaz. Baz karşılaştırması ve hata kontrolü için kullanılan klasik kanalın bütünlüğü gerekir (MAC, kısa önceden paylaşılmış anahtar veya güvenilir PKI). Yani QKD, klasik kriptografiyi silmez; güven zincirinde yeni bir fiziksel katman ekler.