KKRT16算法解析

文章描述了KKRT16协议如何利用Cuckoo哈希算法进行数据分配和OPRF(OptimalPublicRandomFunction)的运用,以确保安全的通信和数据存储。Bob使用随机哈希函数和OPRF实例与Alice进行加密交互,存储和验证数据在堆存储容器中的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KKRT16协议如下:

参数 : 参数{: } 参数:Alice输入 X ; X; XBob输入 Y , Y, Y其中 ∣ X ∣ = ∣ Y ∣ = n .   s |X|=|Y|=n.\:s X=Y=n.s是Cuckoo哈希的存储大小的上界。

  1. Bob指定随机哈希函数 h 1 , h 2 , h 3 : h_1,h_2,h_3: h1,h2,h3: ${ 0, 1} ^{* }\to [ 1.2n] $并将它们告诉Alice。

  2. Bob使用Cuckoo哈希将他的 Y Y Y的各条数据分配到 1.2 n 1.2n 1.2n个箱中。让Bob为每个 y y y跟踪 z ( y ) z(y) z(y),即:如果 z ( y ) = ⊥ z(y) = \bot z(y)=,则 y y y在存储中;否则 y y y在箱 z ( y ) z(y) z(y)中,这个过程中以任意顺序安排存储中的项目。(Cuckoo hashing分为两个存储表,一个为Cuchoo哈希表,一个称为堆存储容器,本协议采用的这样的容器,之后的文章有采用无堆存储容器的Cuckoo hashing)

    Bob按以下方式选择OPRF输入:对于 i ∈ [ 1.2 n ] i\in[1.2n] i[1.2n],如果箱 # i \#i #i为空,则将 r i r_i ri设置为虚值;否则,如果 y y y在箱 # i \#i #i中,则将 r i = y ∥ z ( y ) r_i=y\|z(y) ri=yz(y)。对于 i ∈ [ s ] i\in [ s] i[s],如果存储中位置 i i i y y y,则将 r i = y r_i=y ri=y;否则将 r i r_i ri设置为一个虚值,由此生成 ( r i ) ({r_i}) (ri).

  3. 各方调用 1.2 n + s 1.2n+s 1.2n+s个OPRF实例(BaRK-OPRF),其中Bob作为接收方,输入为 ( r 1 , … , r 1.2 n + s ) (r_1,\ldots,r_{1.2n+s}) (r1,,r1.2n+s)。Alice拥有密钥 ( k 1 , … , k 1.2 n + s ) (k_1,\ldots,k_{1.2n+s}) (k1,,k1.2n+s),Bob接收所有 i i i F ( k i , r i ) F(k_i,r_i) F(ki,ri)

  4. Alice计算(F即OPRF):

H i = { F ( k h i ( x ) , x ∥ i ) ∣ x ∈ X } ,   f o r   i ∈ { 1 , 2 , 3 } S j = { F ( k 1.2 n + j , x ) ∣ x ∈ X } ,   f o r   j ∈ { 1 , … , s } \begin{array}{l}{H_{i}=\{F(k_{h_{i}(x)},x\|i)\mid x\in X\},\mathrm{~for~}i\in\{1,2,3\}}\\{S_{j}=\{F(k_{1.2n+j},x)\mid x\in X\},\mathrm{~for~}j\in\{1,\ldots,s\}}\end{array} Hi={F(khi(x),xi)xX}, for i{1,2,3}Sj={F(k1.2n+j,x)xX}, for j{1,,s}

并将每个集合的一个排列发送给Bob。

  1. Bob初始化一个空集 O \mathcal{O} O,对于 y ∈ Y y\in Y yY执行以下操作:如果 z ( y ) = ⊥ z(y) = \bot z(y)= y y y在存储中的位置为 j j j F ( k 1.2 n + j , y ) ∈ S j F(k_{1.2n+j}, y) \in S_j F(k1.2n+j,y)Sj,则Bob将 y y y添加到 O \mathcal{O} O。如果 z ( y ) ≠ ⊥ z(y) \neq\bot z(y)= F ( k h z ( y ) ( y ) , y ∥ z ( y ) ) ∈ H z ( y ) F(k_{h_{z(y)}(y)}, y\|z(y)) \in H_{z(y)} F(khz(y)(y),yz(y))Hz(y),则Bob将 y y y添加到 O \mathcal{O} O

  2. Bob将 O \mathcal{O} O发送给Alice,双方输出 O \mathcal{O} O

03-21
### 关于 Mycat 数据库中间件 #### 什么是 MycatMycat 是一款开源的分布式数据库系统,作为数据库中间件,主要用于解决大数据场景下的读写分离、分库分表等问题[^5]。它可以像 MySQL 一样被使用,开发者只需在 Mycat 中配置具体的分库分表策略即可完成复杂的数据管理任务[^1]。 #### Mycat 的主要功能特性 Mycat 提供了一系列强大的功能来提升数据库性能和可扩展性: - **分布式架构**:支持分片(Sharding)、读写分离,从而显著提高数据库处理能力和并发量。 - **高可用性**:具备主备切换以及故障自动恢复的能力,保障系统的稳定运行。 - **动态数据路由**:能根据实际业务需求灵活调整分片策略,满足不同应用场景的需求。 - **多协议兼容**:除了支持 MySQL 外,还兼容 MariaDB、Oracle 和 SQL Server 等多种数据库系统[^3]。 #### 安装与环境准备 为了成功部署并使用 Mycat,需按照以下指导进行操作: 1. 准备好 Java 运行环境(JDK 版本建议为 1.8 或更高版本),因为 Mycat 基于 Java 编写而成[^2]。 2. 下载官方发布的最新版 Mycat 软件包,并解压至目标目录下。 3. 修改 `server.xml` 文件中的相关参数设置,比如监听端口号,默认情况下为 `8066`;同时定义逻辑数据库名称及其对应的物理节点信息。 4. 启动服务进程并通过命令行工具或者图形界面访问验证连接状态正常与否。 #### 查询示例 当一切就绪之后,在日常开发过程中可以通过如下方式发起简单的查询请求: ```sql SELECT * FROM user; ``` 此条语句会经由 Mycat 解析后转发给相应的后台存储引擎执行完毕再返回结果集给前端调用方[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值