Beispiel #1
0
def gen_trap(n,q,m):
    k = int(np.ceil(np.log2(q)))
    m0=m-n*k
    A0 = np.matrix(np.random.randint(0,q,(n,m0)))
    g = [int(2**i) for i in range(k)]
    G = np.kron(np.eye(n),g)
    s=4.7 #smoothing parameter of integer lattice for eps=2^(-100) = 4.7
    gsamp = lambda i,j: gauss_samp_1D(s,0,n)
    vgsamp = np.vectorize(gsamp)
    R = np.matrix(np.fromfunction(vgsamp, (m0,n*k), dtype=int))
    A = np.concatenate((A0,np.mod(G-A0*R,q)),axis=1)
    R = np.concatenate((R,np.eye(n*k)),axis=0)
    return A,R
Beispiel #2
0
def gen_trap_sis(n, mbar, q):
    k = int(np.ceil(np.log2(q)))
    a = np.matrix(np.array(np.random.randint(0,q,n*mbar))).reshape(mbar, n)
    s=4.7 #smoothing parameter of integer lattice for eps=2^(-200) = 6.6
    gsamp = lambda i,j: gauss_samp_1D(s,0,n)
    vgsamp = np.vectorize(gsamp)
    R = np.array(np.fromfunction(vgsamp, (k*mbar,n), dtype=int))
    g = [int(2**i) for i in range(k)]
    one = np.zeros(n)
    one[0]=1
    A1 = np.vstack([np.array(g[i]*one - A_mult(q, a, R[i*mbar:(i+1)*mbar]).T) for i in range(k)])
    A = np.vstack((a,A1))
    return np.mod(A,q),R
Beispiel #3
0
def gen_trap(n, q, m):
    k = int(np.ceil(np.log2(q)))
    m0 = m - n * k
    A0 = np.matrix(np.random.randint(0, q, (n, m0)))
    g = [int(2**i) for i in range(k)]
    G = np.kron(np.eye(n), g)
    s = 4.7  #smoothing parameter of integer lattice for eps=2^(-100) = 4.7
    gsamp = lambda i, j: gauss_samp_1D(s, 0, n)
    vgsamp = np.vectorize(gsamp)
    R = np.matrix(np.fromfunction(vgsamp, (m0, n * k), dtype=int))
    A = np.concatenate((A0, np.mod(G - A0 * R, q)), axis=1)
    R = np.concatenate((R, np.eye(n * k)), axis=0)
    return A, R
Beispiel #4
0
def gen_trap_sis(n, mbar, q):
    k = int(np.ceil(np.log2(q)))
    a = np.matrix(np.array(np.random.randint(0, q, n * mbar))).reshape(mbar, n)
    s = 4.7  #smoothing parameter of integer lattice for eps=2^(-200) = 6.6
    gsamp = lambda i, j: gauss_samp_1D(s, 0, n)
    vgsamp = np.vectorize(gsamp)
    R = np.array(np.fromfunction(vgsamp, (k * mbar, n), dtype=int))
    g = [int(2**i) for i in range(k)]
    one = np.zeros(n)
    one[0] = 1
    A1 = np.vstack([
        np.array(g[i] * one - A_mult(q, a, R[i * mbar:(i + 1) * mbar]).T)
        for i in range(k)
    ])
    A = np.vstack((a, A1))
    return np.mod(A, q), R
Beispiel #5
0
def gen_trap_lwe(n,q):
    k = int(np.ceil(np.log2(q)))
    a1 = np.array(np.random.randint(0,q,n))
    s=4.7 #smoothing parameter of integer lattice for eps=2^(-200) = 6.6
    gsamp = lambda i,j: gauss_samp_1D(s,0,n)
    vgsamp = np.vectorize(gsamp)
    R = np.matrix(np.fromfunction(vgsamp, (k,n), dtype=int))
    E = np.matrix(np.fromfunction(vgsamp, (k,n), dtype=int))
    g = [int(2**i) for i in range(k)]
    one = np.zeros(n)
    one[0]=1
    rota1=Rot(np.matrix(a1))
    A1 = np.vstack([np.array(g[i]*one - (np.dot(rota1,R[i].T).T +E[i])) for i in range(k)])
    one = np.zeros(n)
    one[0]=1
    A0 = np.vstack((np.matrix(one),np.matrix(a1)))
    A = np.vstack((A0,A1))
    return np.mod(A,q),R,E
Beispiel #6
0
def gen_trap_lwe(n, q):
    k = int(np.ceil(np.log2(q)))
    a1 = np.array(np.random.randint(0, q, n))
    s = 4.7  #smoothing parameter of integer lattice for eps=2^(-200) = 6.6
    gsamp = lambda i, j: gauss_samp_1D(s, 0, n)
    vgsamp = np.vectorize(gsamp)
    R = np.matrix(np.fromfunction(vgsamp, (k, n), dtype=int))
    E = np.matrix(np.fromfunction(vgsamp, (k, n), dtype=int))
    g = [int(2**i) for i in range(k)]
    one = np.zeros(n)
    one[0] = 1
    rota1 = Rot(np.matrix(a1))
    A1 = np.vstack([
        np.array(g[i] * one - (np.dot(rota1, R[i].T).T + E[i]))
        for i in range(k)
    ])
    one = np.zeros(n)
    one[0] = 1
    A0 = np.vstack((np.matrix(one), np.matrix(a1)))
    A = np.vstack((A0, A1))
    return np.mod(A, q), R, E