← PQXDH/
PQXDH · Bölüm 02 cryptography / pqxdh

2. Ön Bilgiler

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:

2.3. Roller

PQXDH protokolü üç taraf içerir: Alice, Bob ve bir sunucu.

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.