Efficient Symmetric Primitives for Advanced Cryptographic Protocols (A Marvellous Contribution) 学习笔记

本文详细探讨了Rijndael-128的S-Box优化,特别是SubBytes和SubWords,以及MiMC、Vision和Rescue加密算法的构造与特性。重点在于这些算法在Sponge结构、AES-128的改进和零知识证明(ZK-STARK和R1CS)中的性能对比。讨论了基于F2n/mm和Fp的加密技术,并涉及MPC中的masked operation应用。

1. 引言

Aly等人2019年论文《Efficient Symmetric Primitives for Advanced Cryptographic Protocols (A Marvellous Contribution)》。

sponge结构用于构建hash函数 from an underlying permutation by iteratively applying it to a large state。该state包含 b = r + c b=r+c b=r+c位,其中:

  • r r r:为sponge rate
  • c c c:为sponge capacity

可将长度变化的input,通过在每次递归过程中absorb input中的 r r r bit,hash为任意长度的output。

2. Rijndael-128 block cipher

Rijndael-128 cipher,俗称AES-128,包含了5个基础块:

  • AddRoundKey
  • SubBytes
  • MixColumns
  • ShiftRows
  • ExpandKey(其中包含SubWords、AddWords、RotWords和AddConstants)

本文主要关注S-Boxes的调整(即SubBytes和SubWords)。
每个S-Box以一个字节为单位进行处理,S-Box ( z ) = g ( f ( z ) ) (z)=g(f(z)) (z)=g(f(z)),其中:

  • f f f 函数(求倒数函数): f : F 2 8 → F 2 8 : x ↦ x 254 f:\mathbb{F}_{2^8}\rightarrow \mathbb{F}_{2^8}:x\mapsto x^{254} f:F28F28:xx254,为adapted multiplicative inverse function over F 2 8 \mathbb{F}_{2^8} F28。可抵抗differential攻击和linear攻击,同时可支持与MixColumns和ShiftRows扩散函数一起用于wide trail design strategy。【注意,有限域内有: x p − 1 m o d    p ≡ 1 x^{p-1} \mod p\equiv 1 xp1modp1,从而有倒数运算: x − 1 = x p − 2 x^{-1}=x^{p-2} x1=xp2。】
  • g g g 函数(affine多项式): g : F 2 8 → F 2 8 : x ↦ M x + b g:\mathbb{F}_{2}^8\rightarrow \mathbb{F}_2^8: x\mapsto Mx+b g:F28F28:xMx+b,为 SubBytes step 中的affine transformation。其中 M ∈ F 2 8 × 8 , b ∈ F 2 8 M\in\mathbb{F}_2^{8\times 8}, b\in \mathbb{F}_2^8 MF28×8,bF28。这种转换有助于增加S-Box结果的复杂性,以抵抗algebraic 攻击。
    当affine transformation针对 F 2 \mathbb{F}_{2} F2时,则整个S-Box可 以如下多项式表示(over F 2 8 \mathbb{F}_{2^8} F28):
    S-Box ( z ) = 0 x 05 ⋅ z 254 + 0 x 09 ⋅ z 253 + 0 x F 9 ⋅ z 251 + 0 x 25 ⋅ z 247 + 0 x F 4 ⋅ z 239 + 0 x 01 ⋅ z 223 + 0 x B 5 ⋅ z 191 + 0 x 8 F ⋅ z 127 + 0 x 63 (z) =0x05 \cdot z^{254}+0x09\cdot z^{253}+0xF9\cdot z^{251}+0x25\cdot z^{247}+0xF4\cdot z^{239}+0x01\cdot z^{223}+ 0xB5\cdot z^{191} +0x8F\cdot z^{127}+0x63 (z)=0x05z254+0x09z253+0xF9z251+0x25z247+0xF4z239+0x01z223+0xB5z191+0x8Fz127+0x63

3. MiMC

MiMc的构建方式有:

  • 采用Albrecht等人2016年论文《Mimc: Efficient encryption and cryptographic hashing with minimal multiplicative complexity》中的block cipher构建,表示为MiMC-q/q:(其中 q q q为prime或为 prime power of 2。)在每一个round,每个state仅包含一个field element,包含一个field element in F \mathbb{F} F 会做立方运算,再与随机常量 C i C_i Ci相加,每一个round插入的key K K K是完全相同的。对于128位状态,需要82 rounds就足够。
    在这里插入图片描述
  • 采用Feistel network构建,表示为MiMC-2p/p:(其中 p p p为prime或为 prime power of 2。)在每一个round,每个state包含2个 F p \mathbb{F}_p Fp elements,分别表示为 x L x_L xL x R x_R xR。第 l l l round的函数为:
    x L ∣ ∣ x R ← x R + ( x L + K + C l ) 3 ∣ ∣ x L x_L||x_R\leftarrow x_R+(x_L+K+C_l)^3||x_L xLxRxR+(xL+K+Cl)3xL
    其中 K K K为key, c l c_l cl为第 l l l round常量。对于128位状态,需164 rounds就足够。
    在这里插入图片描述

4. Vision

采用Rijndael-128 block cipher,针对的field为 F 2 n / m m \mathbb{F}_{2^{n/m}}^{m} F2n/mm,具有 n n n-bit staten、 n n n-bit key和 n n n bits security。
Vision的最小round数为10,推荐round数为 2 ⌈ n / 5.5 m ⌉ 2\left \lceil n/5.5m \right \rceil 2n/5.5m
Vision中:

  • f f f 函数(求倒数函数)为:
    在这里插入图片描述
    g g g 函数(affine多项式)为:奇数步为 B − 1 ( x ) B^{-1}(x) B1(x),偶数步为 B ( x ) B(x) B(x)
    在这里插入图片描述
    在这里插入图片描述

key schedule:是指基于一个key派生出所有round keys的算法。(calculates all the round keys from the key)。
Vision的key schedule为:
在这里插入图片描述

详细的Vision算法实现为:
在这里插入图片描述

5. Rescue

与Vision类似,但是其针对的域为 F p \mathbb{F}_p Fp,而不是 F 2 n / m \mathbb{F}_{2^{n/m}} F2n/m
Rescue的最小round数为10,推荐round数为 2 ⌈ s / 4 m ⌉ 2\left \lceil s/4m \right \rceil 2s/4m,其中 s s s为security level。
其中:

  • inverse power map为:(大多数域,选 α = 3 \alpha=3 α=3就足够,但是对于 2 255 − 19 2^{255}-19 225519,不满足 g c d ( p − 1 , 3 ) = 1 gcd(p-1,3)=1 gcd(p1,3)=1,可选择 α = 5 \alpha=5 α=5。对应的security level为 log ⁡ 2 ( p m ) \log_{2}(p^m) log2(pm) bits,即 m m m 乘以 p p p的二进制表示位数。)
    在这里插入图片描述

Rescue over F p m \mathbb{F}_p^m Fpm carries m m m field element as its state which goes through a nonlinear operation, an MDS matrix M M M, and a key injection in each step。
Rescue中每一个round分为2个step:
在这里插入图片描述
详细的Rescue算法实现为:
在这里插入图片描述

Rescue的key schedule为:
在这里插入图片描述

6. AIR constraints for ZK-STARK

Algebraic Intermediate Representation (AIR) constraints。
接下来对比将Vision、Rescue、MiMC表示为AIR constraints的性能:
在这里插入图片描述

7. 基于R1CS的Zero-Knowledge Proof

对比将Vision、Rescue、MiMC表示为R1CS的性能:
在这里插入图片描述

8. 借助masked operation用于MPC

借助masked operation将Vision、Rescue、MiMC用于MPC,相应的性能对比为:
在这里插入图片描述

具有前向和后向隐私的动态数据集的可验证且高效的对称可搜索加密方案是密码学和数据安全领域一个重要的研究方向。该方案主要用于解决在动态数据集(即数据会不断更新、插入和删除)上进行安全搜索的问题,同时保证前向隐私(即使密钥泄露,过去的搜索内容也不会被泄露)和后向隐私(新加入的数据不会泄露之前的搜索信息),并且具备可验证性(能够验证搜索结果的正确性)和高效性(减少计算和通信开销)。 在学术研究中,有不少学者致力于设计和优化此类方案。通常,这类方案会基于对称加密算法,结合一些特殊的密码学技术,如陷门函数、哈希函数、布隆过滤器等。例如,通过构造特殊的索引结构,使得在数据更新时能够高效地更新索引,同时保证搜索的准确性和隐私性。 在实际应用场景中,该方案可用于云存储服务,用户可以将加密的数据存储在云端,同时能够在不泄露数据内容的前提下对数据进行搜索。云服务提供商无法得知用户搜索的具体内容以及数据的详细信息,从而保护了用户的隐私。 ```python # 以下是一个简单的伪代码示例,展示对称可搜索加密方案的基本流程 # 假设已经有了加密函数 encrypt 和生成陷门函数 generate_trapdoor # 加密数据 def encrypt_data(data, key): encrypted_data = encrypt(data, key) return encrypted_data # 生成陷门 def generate_search_trapdoor(query, key): trapdoor = generate_trapdoor(query, key) return trapdoor # 搜索加密数据 def search_encrypted_data(trapdoor, encrypted_data): # 这里进行实际的搜索操作,具体实现取决于具体方案 search_result = [] # 伪代码,模拟搜索过程 for item in encrypted_data: if some_condition(item, trapdoor): search_result.append(item) return search_result # 示例使用 data = ["apple", "banana", "cherry"] key = "secret_key" encrypted_data = [encrypt_data(item, key) for item in data] query = "banana" trapdoor = generate_search_trapdoor(query, key) result = search_encrypted_data(trapdoor, encrypted_data) print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值