Method for establishing a key exchange over an open channel between a first Party A and a second Party B, comprising: openly selecting, by Party A and Party B together, parameters, n, q and small whole number t, with t << n, where q is an odd prime, and an error distribution k n 2 to be a distribution over n × n matrix over F q, a n × n matrix M over F q uniformly and randomly, where q is of size of a polynomial of n, and elements of F q are represented by integers in the range [-(q - 1)/2, (q - 1)/2)]; choosing, by each party privately, its own secret matrix S i with i = A, B a n × n matrix chosen according to the error distribution k n 2, and error matrix e i, with i = A, B as a n × n matrix following the error distribution k n 2; computing by Party A M A = M S A + te A; where t is a small integer with t << n; computing by Party B M B = M t S B + te B; both parties exchange M i in the open communication channel; computing by Party A: K A = S A t × M B = S A t × M t S B + t S A t e B; computing by Party B: K B = M A t × S B = S A t × M t S B + t e A t S B; performing by both Party A and Party B a rounding technique to derive the shared key, comprising: a. making by Party B a list T 1 of all positions of the entries of K B such that these entries are in the range of [-(q - 1)/4, (q - 1)/4] and a list T 2 of all positions which are not in the range of [-(q - 1)/4, (q - 1)/4], then sending by Party B to Party A the list T 1. b. computing by each party privately the residues of the entries modular t in T 1, and for the entries not in T 1, which are in T 2, adding (q - 1)/2 to each entry and computing first the residue modular q (into the range of [-(q - 1)/4, (q -1)/4]) and then the residue modular t, which gives a shared key between these two parties. openly selecting, by Party A and Party B together, parameters, n, q and small whole number t, with t << n, where q is an odd prime, and an error distribution k n 2 to be a distribution over n × n matrix over F q, a n × n matrix M over F q uniformly and randomly, where q is of size of a polynomial of n, and elements of F q are represented by integers in the range [-(q - 1)/2, (q - 1)/2)]; choosing, by each party privately, its own secret matrix S i with i = A, B a n × n matrix chosen according to the error distribution k n 2, and error matrix e i, with i = A, B as a n × n matrix following the error distribution k n 2; computing by Party A M A = M S A + te A; where t is a small integer with t << n; computing by Party B M B = M t S B + te B; both parties exchange M i in the open communication channel; computing by Party A: K A = S A t × M B = S A t × M t S B + t S A t e B; computing by Party B: K B = M A t × S B = S A t × M t S B + t e A t S B; performing by both Party A and Party B a rounding technique to derive the shared key, comprising: a. making by Party B a list T 1 of all positions of the entries of K B such that these entries are in the range of [-(q - 1)/4, (q - 1)/4] and a list T 2 of all positions which are not in the range of [-(q - 1)/4, (q - 1)/4], then sending by Party B to Party A the list T 1. b. computing by each party privately the residues of the entries modular t in T 1, and for the entries not in T 1, which are in T 2, adding (q - 1)/2 to each entry and computing first the residue modular q (into the range of [-(q - 1)/4, (q -1)/4]) and then the residue modular t, which gives a shared key between these two parties. a. making by Party B a list T 1 of all positions of the entries of K B such that these entries are in the range of [-(q - 1)/4, (q - 1)/4] and a list T 2 of all positions which are not in the range of [-(q - 1)/4, (q - 1)/4], then sending by Party B to Party A the list T 1. b. computing by each party privately the residues of the entries modular t in T 1, and for the entries not in T 1, which are in T 2, adding (q - 1)/2 to each entry and computing first the residue modular q (into the range of [-(q - 1)/4, (q -1)/4]) and then the residue modular t, which gives a shared key between these two parties.