I am doing an implementation of a system designed by a payment company and I am a little skeptical about the way they have designed the end to end cryptography.
The system is as follows:
There are three parties in the data exchange
- Sending party (A)
- Switching party (B)
- Receiving party (C)
Party (A) is a POS device having a very little computing power. Party (B) is the payment company Party (C) is an authorizing institution
On the POS device, biometric data is captured and POS device have a public key of (B). The POS device will generate a random 128-bit key and encrypt data using this key and then again encrypt the entire dataset with public key of (B) and send it to (B).
Party (B) also maintains symmetric keys for party (A) and (C). Once it has data from party (A) it decrypts it and then encrypts the data set using symmetric key of party (c) and sends it.
Party (C) will use its key to decrypt the data first and then uses 128-bit key received from dataset to decrypt the remaining data.
My concerns on this methodology is: Can POS devices really generate a random number?