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

  1. Sending party (A)
  2. Switching party (B)
  3. 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?

  • 1
    $\begingroup$ This Random Number Generation Based on Fingerprints might be interesting for you $\endgroup$
    – kelalaka
    Jan 16, 2019 at 18:36
  • $\begingroup$ Do the POS devices have a hardware random number generator? $\endgroup$
    – SEJPM
    Jan 16, 2019 at 19:11
  • $\begingroup$ @SEJPM I've looked for one but couldn't see one around. $\endgroup$
    – kelalaka
    Jan 16, 2019 at 19:23
  • $\begingroup$ There is a plethora of POS out there. Any idea of the vendor and model? $\endgroup$
    – tum_
    Jan 17, 2019 at 8:24
  • $\begingroup$ Verifone / some Chinese vendors its running linux underlying I guess $\endgroup$
    – zeemz
    Jan 17, 2019 at 16:45

1 Answer 1


Modern POS devices are designed to meet the strict security requirements of payments industry (search for PCI-DSS standards). They are typically based on a SoC designed specifically for secure payment applications. An example of such SoC: https://www.broadcom.com/products/embedded-and-networking-processors/secure/bcm5892/#overview

From the datasheet: "The random number generator (RNG) is a true random source. It utilizes free-running oscillators to capture thermal noise as the source of randomness. It has been used in numerous devices (such as BCM5820, BCM5821, BCM5841, or BCM5890) and been evaluated as a valid source for seeding FIPS approved pseudo-random number generators as the initial secret value"

If the POS in question runs Linux - it's fairly new, but if in doubt you can always query its vendor directly.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.