NIKE: Non-Interactive Key Exchange Game #
The NIKE game captures the security of the shared key exchange component
of Cryptobox. It has two variants parameterized by b : Bool:
b = false(real): the shared key is computed viaN.sharedkeyb = true(ideal): for honest-honest pairs the shared key is sampled uniformly at random; for pairs involving a corrupt key the real shared key is returned
The NIKE game builds on top of the PKEY oracles (key generation, corruption tracking, secret key retrieval, and honesty checks).
References #
- Rocq SSProve: theories/Cryptobox/NIKE.v
- Dupressoir et al., CSF 2022 (Section 4.2)
Heap Locations #
State specific to the NIKE game. Location IDs start at 400 to avoid collisions with PKEY locations (100-range).
@[reducible]
Stored shared keys indexed by canonical session ID.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible]
Honesty flags for sessions: whether both parties are honest.
Equations
- CatCrypt.Examples.Cryptobox.nikeHonestLoc = { id := 401, ty := CatCrypt.Examples.Cryptobox.SID → Bool, fintype := Pi.instFintype, inhabited := Pi.instInhabited }
Instances For
Oracle Definitions #
Oracle Record #
Oracle interface for the NIKE game.
Instances For
NIKE Game #
noncomputable def
CatCrypt.Examples.Cryptobox.GNIKE
[CT : CryptoTypes]
[LinearOrder CryptoTypes.PK]
(N : NIKEScheme)
(b : Bool)
(pkeyO : PKEYOracles)
(A : PKEYOracles → NIKEOracles → Core.SPComp Bool)
:
NIKE game parameterized by b:
b = false: real shared keysb = true: ideal (random) shared keys for honest pairs
The adversary receives both PKEY oracles (for key management) and the NIKE oracle (for shared key queries).
Equations
- CatCrypt.Examples.Cryptobox.GNIKE N b pkeyO A = A pkeyO { sharedkey := CatCrypt.Examples.Cryptobox.sharedkeyOracle N b pkeyO }
Instances For
NIKE Advantage #
noncomputable def
CatCrypt.Examples.Cryptobox.nikeAdvantage
[CT : CryptoTypes]
[LinearOrder CryptoTypes.PK]
(N : NIKEScheme)
(pkeyO : PKEYOracles)
(A : PKEYOracles → NIKEOracles → Core.SPComp Bool)
:
NIKE advantage: distinguishing real from ideal shared keys.
Equations
- CatCrypt.Examples.Cryptobox.nikeAdvantage N pkeyO A = CatCrypt.Crypto.Advantage (CatCrypt.Examples.Cryptobox.GNIKE N false pkeyO A) (CatCrypt.Examples.Cryptobox.GNIKE N true pkeyO A)