A first electronic network node configured for a key exchange, KEX, protocol, the first network node comprising - a communication interface arranged for digital communication with a second network node, - a processor circuit configured to - obtain a shared matrix A, the shared matrix A being shared with the second network node through the communication interface, entries in the shared matrix A being selected modulo a first modulus q, - generate a private key matrix S I entries in the private key matrix S I being bounded in absolute value by a bound s, - generate a public key matrix P I by - computing a matrix product between the shared matrix A and the private key matrix S I modulo the first modulus q obtaining a matrix product - scaling the entries in the matrix product down to a second modulus p, a scaled entry being equal to the unscaled entry multiplied with the second modulus p, divided by the first modulus q and rounded to the nearest integer, the second modulus p being smaller than the first modulus q, the bound s being at most the second modulus p, - sending the public key matrix P I of the first network node to the second network node, - receiving a public key matrix P R of the second network node, - computing a raw key as a matrix product between the received public key P R of the second node and the private key matrix S I of the first network node modulo the second modulus p, wherein the first network node is further configured to - receiving reconciliation data h of the second network node, - computing a shared key by applying a reconciliation function rec to the received reconciliation data h and the raw key, or wherein the first network node is further configured to - obtaining the shared key and reconciliation data h from the raw key, - sending the reconciliation data h to the second network node. - a communication interface arranged for digital communication with a second network node, - a processor circuit configured to - obtain a shared matrix A, the shared matrix A being shared with the second network node through the communication interface, entries in the shared matrix A being selected modulo a first modulus q, - generate a private key matrix S I entries in the private key matrix S I being bounded in absolute value by a bound s, - generate a public key matrix P I by - computing a matrix product between the shared matrix A and the private key matrix S I modulo the first modulus q obtaining a matrix product - scaling the entries in the matrix product down to a second modulus p, a scaled entry being equal to the unscaled entry multiplied with the second modulus p, divided by the first modulus q and rounded to the nearest integer, the second modulus p being smaller than the first modulus q, the bound s being at most the second modulus p, - sending the public key matrix P I of the first network node to the second network node, - receiving a public key matrix P R of the second network node, - computing a raw key as a matrix product between the received public key P R of the second node and the private key matrix S I of the first network node modulo the second modulus p, wherein the first network node is further configured to - receiving reconciliation data h of the second network node, - computing a shared key by applying a reconciliation function rec to the received reconciliation data h and the raw key, or wherein the first network node is further configured to - obtaining the shared key and reconciliation data h from the raw key, - sending the reconciliation data h to the second network node. - obtain a shared matrix A, the shared matrix A being shared with the second network node through the communication interface, entries in the shared matrix A being selected modulo a first modulus q, - generate a private key matrix S I entries in the private key matrix S I being bounded in absolute value by a bound s, - generate a public key matrix P I by - computing a matrix product between the shared matrix A and the private key matrix S I modulo the first modulus q obtaining a matrix product - scaling the entries in the matrix product down to a second modulus p, a scaled entry being equal to the unscaled entry multiplied with the second modulus p, divided by the first modulus q and rounded to the nearest integer, the second modulus p being smaller than the first modulus q, the bound s being at most the second modulus p, - computing a matrix product between the shared matrix A and the private key matrix S I modulo the first modulus q obtaining a matrix product - scaling the entries in the matrix product down to a second modulus p, a scaled entry being equal to the unscaled entry multiplied with the second modulus p, divided by the first modulus q and rounded to the nearest integer, the second modulus p being smaller than the first modulus q, the bound s being at most the second modulus p, - sending the public key matrix P I of the first network node to the second network node, - receiving a public key matrix P R of the second network node, - computing a raw key as a matrix product between the received public key P R of the second node and the private key matrix S I of the first network node modulo the second modulus p, wherein the first network node is further configured to - receiving reconciliation data h of the second network node, - computing a shared key by applying a reconciliation function rec to the received reconciliation data h and the raw key, or wherein the first network node is further configured to - obtaining the shared key and reconciliation data h from the raw key, - sending the reconciliation data h to the second network node.