// proto messages for RLWE/RLWR challenges. NOTE: the challenges released in
// 2016 use the Instance*1 and Secret1 formats.
import "Lol.proto";
import "RLWE.proto";
// run this:
// hprotoc -I ../lol -a RLWE.proto=Crypto.Proto -a Lol.proto=Crypto.Proto -p Crypto.Proto.RLWE Challenges.proto
message ContParams { // continuous RLWE parameters
required int32 m = 1; // cyclotomic index
required int64 q = 2; // modulus
required double svar = 3; // scaled variance
required double bound = 4; // gSqNorm error bound
required int32 numSamples = 5; // number of samples
}
message DiscParams { // discrete RLWE parameters
required int32 m = 1; // cyclotomic index
required int64 q = 2; // modulus
required double svar = 3; // scaled variance
required int64 bound = 4; // gSqNorm error bound
required int32 numSamples = 5; // number of samples
}
message RLWRParams { // RLWR parameters
required int32 m = 1; // cyclotomic index
required int64 q = 2; // modulus
required int64 p = 3; // rounding modulus p < q
required int32 numSamples = 4; // number of samples
}
message Challenge {
required int32 challengeID = 1; // unique identifier of challenge
required int32 numInstances = 2; // number of instances in challenge
required int64 beaconEpoch = 3; // beacon epoch for suppressing secret
required int32 beaconOffset = 4; // byte of beacon value used
oneof params {
ContParams cparams = 5;
DiscParams dparams = 6;
RLWRParams rparams = 7;
}
}
message InstanceCont1 { // continuous RLWE instance
required int32 challengeID = 1; // challenge this instance belongs to
required int32 instanceID = 2; // instance within the challenge
required ContParams params = 3; // problem params (self-containment)
repeated SampleCont1 samples = 4; // the samples
}
message InstanceDisc1 { // discrete RLWE instance
required int32 challengeID = 1;
required int32 instanceID = 2;
required DiscParams params = 3;
repeated SampleDisc1 samples = 4;
}
message InstanceRLWR1 { // RLWR instance
required int32 challengeID = 1;
required int32 instanceID = 2;
required RLWRParams params = 3;
repeated SampleRLWR1 samples = 4;
}
message InstanceCont { // continuous RLWE instance
required int32 challengeID = 1; // challenge this instance belongs to
required int32 instanceID = 2; // instance within the challenge
required ContParams params = 3; // problem params (self-containment)
repeated SampleCont samples = 4; // the samples
}
message InstanceDisc { // discrete RLWE instance
required int32 challengeID = 1;
required int32 instanceID = 2;
required DiscParams params = 3;
repeated SampleDisc samples = 4;
}
message InstanceRLWR { // RLWR instance
required int32 challengeID = 1;
required int32 instanceID = 2;
required RLWRParams params = 3;
repeated SampleRLWR samples = 4;
}
message Secret1 { // a secret for an RLWE/RLWE instance
required int32 challengeID = 1;
required int32 instanceID = 2;
required int32 m = 3;
required int64 q = 4;
required bytes seed = 5;
required Rq1 s = 6;
}
message Secret { // a secret for an RLWE/RLWE instance
required int32 challengeID = 1;
required int32 instanceID = 2;
required int32 m = 3;
required int64 q = 4;
required bytes seed = 5;
required RqProduct s = 6;
}