2015-11-19 1 views
2

Nous développons des logiciels pour les terminaux POS, et utilisons leur bibliothèque de développeurs POS. La fonction qui génère le bloc pin, demandez-nous la clé PIN. Et afin de générer la clé PIN, nous devons spécifier la clé principale et pour générer la clé principale, vous devez d'abord spécifier la clé de chargement. Donc la commande est: clé de chargement -> clé principale -> clé PIN.Comment API sur POS créer un bloc de broches?

Nous avons besoin de savoir comment ces touches sont interreliées. Que se passe-t-il dans la fonction? Puisque nous ne pouvons pas regarder à l'intérieur de leurs fonctions. Que savons-nous de leur application? Sur l'application utilise la méthode de cryptage 3des et peut-être une clé est XORing. Et nous savons exactement quel bloc de broche, il affiche.

Par exemple, si vous spécifiez les clés suivantes:

clé de chargement: 11111111111111111111111111111111

maître clé: 11111111111111111111111111111111

clé PIN: 11111111111111111111111111111111

PAN: 1111111111111111

PIN : 1111

Nous obtenons bloc broches comme ceci: 0C43B779D7A1CB72

S'il vous plaît aider ceux qui connaissent bien les chiffrement et dans les terminaux. Merci d'avance!

+1

Vous pouvez demander au site de sécurité informatique de l'échange de pile, mais vous devrez fournir beaucoup plus de détails sur le système POS et les protocoles utilisés. –

+1

Je vote pour clore cette question hors-sujet parce que ce n'est pas une question de programmation. –

Répondre

1

Votre schéma est le cryptage du code PIN maître/session à l'aide de la clé principale chargée sous "clé de chargement".

  1. La clé de chargement 11111111111111111111111111111111 est chargée dans le périphérique en clair.

    loadingKey = 11111111111111111111111111111111

  2. Le maître PIN cryptogramme clé 11111111111111111111111111111111 est décryptée à l'aide DES en mode ECB donnant maître PIN simple clé 237B2304C393D3AC237B2304C393D3AC (en utilisant la touche de chargement).

    pinMasterKey = DES_Dec_ECB(key=loadingKey,data=11111111111111111111111111111111)

    pinMasterKey = 237B2304C393D3AC237B2304C393D3AC

  3. saisie du code PIN est demandé de travailler cryptogramme clé 11111111111111111111111111111111 qui déchiffre en utilisant DES en mode ECB dans 5CC98C26CB8C00CE5CC98C26CB8C00CE clé de travail ordinaire (en utilisant la clé maître PIN).

    pinWorkingKey = DES_Dec_ECB(key=pinMasterKey,data=11111111111111111111111111111111)

    pinWorkingKey = 5CC98C26CB8C00CE5CC98C26CB8C00CE

  4. Cette clé de travail est utilisé pour chiffrer format simple 0 bloc PIN 041100EEEEEEEEEE (qui est formé par XOR 041111FFFFFFFFFF et 0000111111111111 comme décrit here) dans 0C43B779D7A1CB72.

    pinBlock = (041111FFFFFFFFFF XOR 0000111111111111)

    pinBlock = 041100EEEEEEEEEE

    encryptedPinBlock = DES_Enc_ECB(key=pinWorkingKey,data=pinBlock)

    encryptedPinBlock = 0C43B779D7A1CB72

Bonne chance! Descriptif: Je ne suis pas un expert en cryptographie, alors validez mes pensées. (Note: les parités des touches DES ne sont pas ajustées)