osu-crypto / libOTe

A fast, portable, and easy to use Oblivious Transfer Library
Other
437 stars 110 forks source link

error for ./frontend_libOTe -r 1 -iknp #97

Closed Cathysrm closed 1 year ago

Cathysrm commented 1 year ago

Dear professor, sorry to disturb you, i have trouble simulating (2 terminals). i have built the project successfully. The unit tests also can be executed. However, when i try to simulate with 2 termianls, there is a problem as follows:

terminate called after throwing an instance of 'std::runtime_error' what(): This example requires coproto to enable boost support. Please build libOTe with -DCOPROTO_ENABLE_BOOST=ON. /home/Documents/libOTe/frontend/ExampleTwoChooseOne.h:314 Aborted (core dumped)

issue

i have tried to build libOTe with -DCOPROTO_ENABLE_BOOST=ON by the "python3 build.py -D COPROTO_ENABLE_BOOST=ON" command, and the option "COPROTO_ENABLE_BOOST = OFF" is transfrom into "COPROTO_ENABLE_BOOST = ON", but the problem can not be solved. Hope to get your help, thanks so much!

ladnir commented 1 year ago

try deleting the out folder and rebuilding with all your options, e.g.

rm -rf out/
python3 build.py -DCOPROTO_ENABLE_BOOST=ON -DENABLE_ALL_OT=ON
Cathysrm commented 1 year ago

yeah, i solved it. Thanks a lot!

Cathysrm commented 1 year ago

Hello, professor, sorry to disturb you once again. For kkrt protocol, i want to do random messages with strings of length greater than 128bits. could you give some instructions on how i can achieve this?i'll appreciate it if i can get your help.

ladnir commented 1 year ago

Expand the 128 bit messages using PRNG

Cathysrm commented 1 year ago

Thank you for your reply, professor, and could you explain how to do that in detail? I want to require sender to send random messages with strings of length 2^30 bits or even greater per OT instance. I keep the variate inputBitCount 128 and then try to expand the 128 bits random messge using PRNG as depicted in the picture, but I am not sure whether it’s correct. If so, how should i specify the expected length of output from PRNG? if I require sender to send messages with strings of length 2^30 bits per OT instance , whether it is necessary to modify the default buffer size 256?Hope to get your reply, professor. Sorry to bother you again. Best wishes! image

ladnir commented 1 year ago

Do you want the ot messages to be random or chosen?

ladnir commented 1 year ago

If random your doing it wrong. Use the randomOT branch of your if statement.

You do exactly what it's currently doing, then you take the messages that it outputs and use those as a seed to a random number generator (PRNG).

The PRNG can then expand the 128 bit messages into however long you want. The length is up to you.

Cathysrm commented 1 year ago

Thank you so much for your reply, professor. It's my fault. Actually, i want to do the chosen 1-out-of -N OT, but the message of sender is randomly generated and greater than 128 bits. i guess the other branch is to do chosen message with strings of 128bits. so i try to expand the 128 bit messages into the length what i need(where do I need to specify this length?). But i note that the kkrt potocol just supports currently 128 input bits. How should i modify the code to support greater input bits? i‘m really sorry for taking up some of your time,professor. Best wishes to you!

ladnir commented 1 year ago

Keep in mind random ots are far more effective...

But if you want chosen then you can encrypt your chosen message using the random message as the key. For example, construct a PRNG using the random ot. Generate a long string using the prng and xor this with your chosen message. Send all of these. This is basically one time pad encryption...