The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: BFV, BGV, CKKS Schema for Fully Homomorphic Encryption
Version: 0.9.0
Description: Implements the Brakerski-Fan-Vercauteren (BFV, 2012) https://eprint.iacr.org/2012/144, Brakerski-Gentry-Vaikuntanathan (BGV, 2014) <doi:10.1145/2633600>, and Cheon-Kim-Kim-Song (CKKS, 2016) https://eprint.iacr.org/2016/421.pdf schema for Fully Homomorphic Encryption. The included vignettes demonstrate the encryption procedures.
License: GPL (≥ 3)
Encoding: UTF-8
RoxygenNote: 7.2.3
Depends: polynom, stats, HEtools
Suggests: covr, knitr, rmarkdown, testthat (≥ 3.0.0)
VignetteBuilder: knitr
Config/testthat/edition: 3
NeedsCompilation: no
Packaged: 2024-01-09 13:16:35 UTC; bquast
Author: Bastiaan Quast ORCID iD [aut, cre]
Maintainer: Bastiaan Quast <bquast@gmail.com>
Repository: CRAN
Date/Publication: 2024-01-09 13:40:05 UTC

Brakerski / Fan-Vercauteren

Description

Brakerski / Fan-Vercauteren

Usage

BFV_KeyGen(d = 4, q = 424242)

Arguments

d

the d input

q

the q input

Value

polynomial

Examples

d  =      4
n  =      2^d
p  =     (n/2)-1
q  = 424242
GenPolyMod(n)

BFV encryption

Description

BFV encryption

Usage

BFV_encrypt(m, pk)

Arguments

m

message

pk

public key

Value

polynomial


Encrypt Polynomial Message Part 0

Description

Encrypt Polynomial Message Part 0

Usage

EncryptPoly0(m, pk0, u, e1, p, pm, q)

Arguments

m

message

pk0

public key part 0

u

u

e1

e1

p

p

pm

pm

q

q

Value

polynomial which contains the message in ciphertext


Encrypt Polynomial Message Part 1

Description

Encrypt Polynomial Message Part 1

Usage

EncryptPoly1(pk1, u, e2, pm, q)

Arguments

pk1

public key part 1

u

u

e2

e2

pm

pm

q

q

Value

polynomial which contains the message in ciphertext


Generate a

Description

Generate a

Usage

GenA(n, q)

Arguments

n

the order

q

the ciphermod of coefficients

Value

polynomial of order x^^n with coefficients 0,..,q

Examples

n = 16
q =  7
GenA(n, q)

Generate a

Description

Generate a

Usage

GenError(n)

Arguments

n

the order

Value

polynomial of order x^^n with discrete Gaussian distribution, bounded (not strictly true) by -n,n

Examples

n = 16
GenError(n)

Generate the Evaluation Key

Description

Generate the Evaluation Key

Usage

GenEvalKey0(a, s, e)

Arguments

a

a

s

s

e

e

Value

polynomial


Generate Polynomial Modulo

Description

These objects are imported from other packages. Follow the links below to see their documentation.

HEtools

CoefMod

Arguments

n

the order

Value

polynomial of the form x^^n + 1


Generate the Public Key

Description

Generate the Public Key

Usage

GenPubKey(a, n, e, pm, q)

Arguments

a

a

n

n

e

e

pm

pm

q

q

Value

list with the two polynomials that form the public key


Generate part 0 of the Public Key

Description

Generate part 0 of the Public Key

Usage

GenPubKey0(a, s, e, pm, q)

Arguments

a

a

s

s

e

e

pm

pm

q

q

Value

polynomial


Generate part 1 of the Public Key

Description

Generate part 1 of the Public Key

Usage

GenPubKey1(a)

Arguments

a

a

Value

polynomial


Generate Secret key

Description

Generate Secret key

Usage

GenSecretKey(n)

Arguments

n

the order

Value

polynomial of order x^^n with coefficients (-1,-,1)

Examples

n = 16
GenSecretKey(n)

Generate u

Description

Generate u

Usage

GenU(n)

Arguments

n

the order

Value

polynomial of order x^^n-1 with coefficients (-1,-,1)

Examples

n = 16
GenU

compute basis coordinates

Description

Compute basis coordinates

Usage

compute_basis_coordinates(sigma_R_basis, z)

Arguments

sigma_R_basis

sigma_R_basis

z

z

Value

basis coordinates


coordinate-wise random rounding

Description

Coordinate-wise random rounding

Usage

coordinate_wise_random_rounding(coordinates)

Arguments

coordinates

coordinates

Value

rounded coordinates


decode

Description

Decode

Usage

decode(xi, M, scale, p)

Arguments

xi

xi

M

M

scale

scale

p

p

Value

decoded xi


encode

Description

Encode

Usage

encode(xi, M, scale, z)

Arguments

xi

xi

M

M

scale

scale

z

z

Value

encode polynomial


pi function

Description

Pi function

Usage

pi_function(M, z)

Arguments

M

M

z

z

Value

Pi of M


pi inverse function

Description

Pi inverse function

Usage

pi_inverse(z)

Arguments

z

z

Value

inverse of z


round coordinates

Description

Round coordinates

Usage

round_coordinates(coordinates)

Arguments

coordinates

coordinates

Value

rounded coordinates


sigma discretization

Description

Sigma discretization

Usage

sigma_R_discretization(xi, M, z)

Arguments

xi

xi

M

M

z

z

Value

sigma R discretization


sigma function

Description

Sigma

Usage

sigma_function(xi, M, p)

Arguments

xi

xi

M

M

p

p

Value

sigma of xi


sigma inverse

Description

Sigma inverse

Usage

sigma_inverse(xi, M, b)

Arguments

xi

xi

M

M

b

b

Value

sigma inverse of xi


vandermonde

Description

Vandermonde

Usage

vandermonde(xi, M)

Arguments

xi

xi

M

M

Value

The Vandermonde matrix

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.