secretflow/yacl

Problems in kkrt_ote

Closed this issue · 3 comments

(1) In iknp_ote.h, the path in see yacl/crypto-tools/rp.h should be yacl/crypto/tools/rp.h.
(2) In line 48 of kkrt_ote.h, the annotation (1-out-of-2) (1-out-of-n) should be (1-out-of-2) (1-out-of-2^n) .
(3) In kkrt_ote.cc, it seems that the member batch_size_ of KkrtOtExtSender or KkrtOtExtReceiver is not useful and can be deleted.

Thanks for your comment.

In iknp_ote.h, the path in see yacl/crypto-tools/rp.h should be yacl/crypto/tools/rp.h.

For question (1): Yes, it is a typos.

the annotation (1-out-of-2) (1-out-of-n) should be (1-out-of-2) (1-out-of-2^n)

In the definition, n denotes the length of ROT or the number of KKRT OTE. Thus, I think it should be 1-out-of-N.
As described in KKRT 3.2 & 3.3, $\mathcal F((\mathbf q_j , s),r) = H(j || \mathbf q_j \otimes [ \mathcal{C}(r) \cdot s ] )$ where $(\mathbf q_j ,s )$ is PRF key, $r$ is the input of PRF or the input of pseudorandom code $\mathcal C$.
If we consider a pseudorandom code $\mathcal C: [N] \rightarrow \lbrace 0 , 1 \rbrace^t$, then it is appropriate to describe KKRT OTE as a 1-out-of-N OTE.
By the way, in our implementaion, pseudorandom code is defined as a function: $uint128 \rightarrow std::array⟨uint128, kKkrtWidth⟩$. It implies that $N = 2^{128}$.

it seems that the member batch_size_ of KkrtOtExtSender or KkrtOtExtReceiver is not useful and can be deleted.

It seems that batch_size_ is the same as kBatchSize in kkrt_ote.cc.
But please don't remove them as we might support dynamic batch_size in the future work. :)

(4) In line 97 of kos_ote.cc, the annotation 3rd party (the rest bits): padding 1; may be wrong. It should be padding 0.
I have opened a PR for this.

Great!
In addition, there was a typo as 3rd party .... Would you mind to modify it to 3rd part .... :)