packages feed

rlwe-challenges-0.1.0.0: Challenges.proto

// 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;
}