2.1. PQXDH parametreleri
PQXDH kullanan bir uygulama birkaç parametreye karar vermelidir:
| Ad | Tanım |
|---|---|
| curve | XEdDSA [1] için tanımlanmış bir Montgomery eğrisi; şu anda bu, curve25519 veya curve448'den biridir |
| hash | 256 veya 512 bitlik bir özet işlevi (örn. SHA-256 veya SHA-512) |
| info | Uygulamayı tanımlayan, en az 8 bayt uzunluğunda bir ASCII dizgesi |
| pqkem | IND-CCA kuantum sonrası güvenliğe sahip bir kuantum sonrası anahtar kapsülleme mekanizması (örn. Crystals-Kyber-1024 [2]) |
| aead | IND-CPA ve INT-CTXT kuantum sonrası güvenliğe sahip, ilişkili verili doğrulanmış şifreleme düzeni |
| EncodeEC | Bir curve açık anahtarını bayt dizisine kodlayan işlev |
| DecodeEC | Bir bayt dizisini bir curve açık anahtarına çözen ve EncodeEC'nin tersi olan işlev |
| EncodeKEM | Bir pqkem açık anahtarını bayt dizisine kodlayan işlev |
| DecodeKEM | Bir bayt dizisini bir pqkem açık anahtarına çözen ve EncodeKEM'in tersi olan işlev |
Örneğin, bir uygulama curve olarak curve25519, hash olarak SHA-512, info olarak "MyProtocol" ve pqkem olarak CRYSTALS-KYBER-1024 seçebilir.
Tüm kodlama işlevlerinin değer kümeleri ikişerli olarak ayrık olmalıdır.
EncodeEC için önerilen uygulama, curve'ün tek baytlık sabit gösteriminin ardından [3]'te belirtildiği gibi u-koordinatının little-endian kodlamasından oluşur. curve'ün tek baytlık gösterimi uygulayıcı tarafından tanımlanır. Benzer biçimde DecodeEC için önerilen uygulama, curve parametresini belirlemek için ilk baytı okur. İlk bayt tanınan bir eğriyi temsil etmiyorsa işlev başarısız olur. Aksi takdirde [3]'te belirtildiği gibi curve için u-koordinatının little-endian çözümlemesini uygular.
EncodeKEM için önerilen uygulama, pqkem'in tek baytlık sabit gösteriminin ardından pqkem tarafından belirtilen pqkem açık anahtar kodlamasından oluşur. pqkem'in tek baytlık gösterimi uygulayıcı tarafından tanımlanır. Benzer biçimde DecodeKEM için önerilen uygulama, pqkem parametresini belirlemek için ilk baytı okur. İlk bayt tanınan bir anahtar kapsülleme mekanizmasını temsil etmiyorsa işlev başarısız olur. Aksi takdirde seçilen anahtar kapsülleme mekanizmasının belirttiği çözümlemeyi uygular.
2.2. Kriptografik gösterim
Bu belge boyunca tüm açık anahtarların karşılık gelen bir özel anahtarı vardır; ancak açıklamaları basitleştirmek için anahtar çiftlerini açık anahtarlarıyla tanımlayacağız ve karşılık gelen özel anahtarın anahtar sahibi tarafından erişilebilir olduğunu varsayacağız.
Bu belgede aşağıdaki gösterim kullanılacaktır:
Bayt dizileri X ve Y'nin birleştirilmesi X || Y'dir.
DH(PK1, PK2), PK1 ve PK2 açık anahtarlarıyla temsil edilen anahtar çiftlerini içeren bir Eliptik Eğri Diffie-Hellman işlevinden çıkan paylaşılan gizli çıktısı olan bir bayt dizisini ifade eder. Eliptik Eğri Diffie-Hellman işlevi, curve parametresine bağlı olarak [3]'teki X25519 veya X448 işlevlerinden biri olacaktır.
Sig(PK, M, Z), M bayt dizisi üzerinde, PK'nin karşılık gelen özel anahtarıyla M imzalanarak ve 64 bayt rastgelelik Z kullanılarak elde edilmiş olan bir curve XEdDSA imzası olan bayt dizisini ifade eder. Bu imza PK açık anahtarıyla doğrulanır. XEdDSA için imzalama ve doğrulama işlevleri [1]'de belirtilmiştir.
KDF(KM), aşağıdaki girdilerle hash kullanan HKDF algoritmasından [4] gelen 32 baytlık çıktıyı ifade eder:
- HKDF input key material = F || KM; burada KM gizli anahtar malzemesi içeren bir girdi bayt dizisidir ve F, curve curve25519 ise 32 adet 0xFF baytı, curve curve448 ise 57 adet 0xFF baytı içeren bir bayt dizisidir. XEdDSA'da [1] olduğu gibi F, HKDF girdi anahtar malzemesinin ilk bitlerinin hiçbir zaman bir skalerin veya eliptik eğri noktasının geçerli kodlaması olmamasını sağlar.
- HKDF salt = Uzunluğu bayt cinsinden hash çıktı uzunluğuna eşit olan, sıfırlarla doldurulmuş bir bayt dizisi.
- HKDF info = 4 PQXDH parametresi olan info, curve, hash ve pqkem'in dizge gösterimlerinin, "
MyProtocol_CURVE25519_SHA-512_CRYSTALS-KYBER-1024" örneğindeki gibi '_' ile ayrılmış tek bir dizge hâline getirilerek birleştirilmesi. PQXDH parametrelerinin dizge gösterimleri uygulayıcı tarafından tanımlanır.
(CT, SS) = PQKEM-ENC(PK), pqkem algoritmasının çıktısı olan KEM şifreli metni CT ile, açık anahtar PK kullanılarak şifreli metin tarafından kapsüllenen paylaşılan gizli bayt dizisi SS'den oluşan bir demeti ifade eder.
PQKEM-DEC(PK, CT), şifreli metin CT'yi kapsüllemek için kullanılan PK açık anahtarının özel anahtar eşleniği kullanılarak bir pqkem şifreli metninden kapsülü açılan paylaşılan gizli bayt dizisi SS'yi ifade eder.
2.3. Roller
PQXDH protokolü üç taraf içerir: Alice, Bob ve bir sunucu.
Alice, Bob'a şifreleme kullanarak bazı ilk verileri göndermek ve ayrıca çift yönlü iletişim için kullanılabilecek paylaşılan bir gizli anahtar oluşturmak ister.
Bob, Alice gibi tarafların kendisiyle paylaşılan bir anahtar oluşturmasına ve şifreli veri göndermesine izin vermek ister. Ancak Bob, Alice bunu yapmaya çalıştığında çevrimdışı olabilir. Bunu mümkün kılmak için Bob'un bir sunucu ile ilişkisi vardır.
sunucu, Alice'ten Bob'a gönderilen ve Bob'un daha sonra alabileceği iletileri saklayabilir. sunucu ayrıca Bob'un bazı verileri yayımlamasına imkân tanır; sunucu bu verileri Alice gibi taraflara sağlar. Sunucuya duyulan güven miktarı Bölüm 4.9'da ele alınmaktadır.
Bazı sistemlerde sunucu rolü birden fazla varlık arasında bölünmüş olabilir, ancak basitlik açısından Alice ve Bob için yukarıdaki işlevleri sağlayan tek bir sunucu varsayıyoruz.
2.4. Eliptik Eğri Anahtarları
PQXDH aşağıdaki eliptik eğri açık anahtarlarını kullanır:
| Ad | Tanım |
|---|---|
| IK_A | Alice'in kimlik anahtarı |
| IK_B | Bob'un kimlik anahtarı |
| EK_A | Alice'in geçici anahtarı |
| SPK_B | Bob'un imzalı ön anahtarı |
| (OPK_B1, OPK_B2, ...) | Bob'un tek kullanımlık ön anahtar kümesi |
Bir PQXDH protokol çalıştırması içinde kullanılan eliptik eğri açık anahtarlarının tümü ya curve25519 biçiminde olmalı ya da curve parametresine bağlı olarak tümü curve448 biçiminde olmalıdır [3].
Her tarafın uzun ömürlü bir kimlik eliptik eğri açık anahtarı vardır (Alice için IK_A, Bob için IK_B).
Bob'un ayrıca, düzenli aralıklarla değiştirdiği ve her seferinde IK_B ile imzaladığı imzalı bir ön anahtarı SPK_B ile, her biri tek bir PQXDH protokol çalıştırmasında kullanılan bir tek kullanımlık ön anahtar kümesi (OPK_B1, OPK_B2, ...) vardır. Bob'un ürettiği her imzalı ön anahtar veya tek kullanımlık ön anahtar K için, Bob bu anahtarı cihazı üzerinde benzersiz biçimde tanımlayan ve IdEC(K) ile gösterilen bir tanımlayıcı da hesaplar. ("Ön anahtarlar" bu adı alır çünkü esasen Bob'un, Alice protokol çalıştırmasını başlatmadan önce, karşılık gelen tanımlayıcılarıyla birlikte sunucuya yayımladığı protokol iletileridir.) Bu anahtarlar Bölüm 3.2'de açıklandığı gibi sunucuya yüklenecektir.
Her protokol çalıştırması sırasında Alice, açık anahtarı EK_A olan yeni bir geçici anahtar çifti üretir.
2.5. Kuantum Sonrası Anahtar Kapsülleme Anahtarları
PQXDH aşağıdaki kuantum sonrası anahtar kapsülleme açık anahtarlarını kullanır:
| Ad | Tanım |
|---|---|
| PQSPK_B | Bob'un imzalı son çare pqkem ön anahtarı |
| (PQOPK_B1, PQOPK_B2, ...) | Bob'un imzalı tek kullanımlık pqkem ön anahtar kümesi |
Bir PQXDH protokol çalıştırması içinde kullanılan pqkem açık anahtarlarının tümü aynı pqkem parametresini kullanmalıdır.
Bob'un, düzenli aralıklarla değiştirdiği ve her seferinde IK_B ile imzaladığı imzalı bir son çare kuantum sonrası ön anahtarı PQSPK_B ile, yine IK_B ile imzalanan ve her biri tek bir PQXDH protokol çalıştırmasında kullanılan bir imzalı tek kullanımlık ön anahtar kümesi (PQOPK_B1, PQOPK_B2, ...) vardır. Bob'un ürettiği her son çare veya geçici KEM anahtarı K için, Bob bu anahtarı cihazı üzerinde benzersiz biçimde tanımlayan ve IdKEM(K) ile gösterilen bir tanımlayıcı da hesaplar. Bu anahtarlar ve bunlara karşılık gelen tanımlayıcılar Bölüm 3.2'de açıklandığı gibi sunucuya yüklenecektir. "Son çare" adı, son çare ön anahtarın yalnızca tek kullanımlık pqkem ön anahtarları mevcut olmadığında kullanılmasını ifade eder. Bu durum, Bob için indirilen ön anahtar paketlerinin sayısı Bob'un yüklediği tek kullanımlık pqkem ön anahtarlarının sayısını aştığında yaşanabilir (sunucunun rolüne ilişkin ayrıntılar için bkz. Bölüm 3). Bir uygulama, bir pqkem açık anahtarının tek kullanımlık bir pqkem anahtarına mı yoksa son çare pqkem anahtarına mı karşılık geldiğini Bob'un anlayabilmesini sağlamalıdır.