35 lines
821 B
Markdown
35 lines
821 B
Markdown
# 0xfa队 writeup
|
||
|
||
## 全同态加密算法介绍
|
||
|
||
加密算法方面选择了thfe算法,库方面选择了较为成熟的thfe-rs算法库。
|
||
|
||
### 算法参数
|
||
|
||
使用的是默认的算法参数,设置位置在src/bin/enc.rs:117
|
||
|
||
Message bits: 2位
|
||
|
||
Carry bits: 2位
|
||
|
||
噪声分布: TUniform (tweaked uniform)
|
||
|
||
Bootstrap失败概率: ≤ 2^-128 (CPU后端)
|
||
|
||
## knn算法实现细节
|
||
|
||
将欧式距离公式拆分:
|
||
|
||
> sum((a-b)^2)=sum(a^2) - sum(2a\*b) + sum(b^2)
|
||
|
||
减少了密文态的乘法和加法操作
|
||
|
||
选择上实现了双调排序,将100个距离结果,用最大值填充至128个结果。
|
||
然后进行并行排序,最后选择前十个密文。
|
||
|
||
两个操作都使用了rayon库做多核并行计算
|
||
|
||
## 本地测试结果
|
||
|
||
在本地i9-10920X(12核24线程)情况下,运行时间约9min(4min+5min)
|