1. Method for establishing a key exchange over an open channel between a first party A and a second party B, comprising: (1) openly selecting, by Party A and Party B together, parameters, n, q and small whole number t, (t<<n), where q is an odd prime, and an error distribution n2 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 like n 3 , and elements of F q are represented by integers in the range [−(q−1)/2, (q−1)/2)]; (2) choosing, by each party privately, its own secret matrix S i (i=A, B) a n×n matrix chosen according to the error distribution κ n 2 , and error matrix e i , (i=A, B) as a n×n matrix following the error distribution κ n 2 ; computing by Party A 
 M A MS A +te A , where t is a small integer (t<<n); computing by Party B 
 M B =M t S B +te B. (3) Both parties exchange M i in the open communication channel; (4) computing by Patty A: 
 K A =S t A ×M B =S t A M t S B +tS t A e B ; computing by Party B: 
 K B =M t A ×S B =S t A M t S B +te t A S B ; (5) 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 these entries modular t in T 1 , and for the entries not in T 1 , which is in T 2 , adding (q−1)/2 to each entry and computing the residue modular q first (into the range of [−(q−1)/4, (q−1)/4]) then the residue modular t, which gives a shared key between these two parties.