I am trying to perform fingerprint verification on MULTOS cards. However, there are some limitations in this regard, and I am trying to overcome these limitations. I would like to ask for your help in sharing any information that can assist me on this topic.
I would like to explain the subject I need help with as a scenario.
Scenario:
"Alice has a personal MULTOS identity card that contains a template of her own fingerprint.
Alice goes to a terminal point and inserts her MULTOS card into the terminal. In addition, Alice scans her finger on the fingerprint reader device present at the terminal.
The fingerprint reader converts the fingerprint data into a suitable template and sends this fingerprint data to the MULTOS card using an APDU command.
The MULTOS card compares the incoming fingerprint data with the fingerprint data stored inside the card using the "X Algorithm". The comparison process is performed within the MULTOS card, and therefore, the "X Algorithm" is executed inside the MULTOS card."
Problem:
The "X Algorithm" mentioned here is an algorithm that compares two fingerprint data. Fingerprint comparison algorithms typically involve "floating-point operations," "trigonometric operations" and "square root operations".
MULTOS cards do not support operations like "floating-point operations", "trigonometric operations," and "square root operations", nor do they support standard C functions that perform these operations (e.g., atan(), sqrt(), etc.). (NOTE: If this last sentence is incorrect, please share the correct information with me.)
Possible Solution:
Therefore, what are the ways to perform fingerprint verification on a MULTOS card in the "MATCH ON CARD" manner?
1- I started by using structures in ANSI C to represent fractional numbers:
`typedef struct
{
/* a / b -> split Type */
long dividing;
long denominator;
/* a,b -> comma Type */
long integer;
long mantis;
int Sign;
} ras_t;`
Based on this, I continue defining arithmetic operations, trigonometric operations, square root operations, etc. for variables of type ras_t
step by step. However, I don't yet know how successful I will be after creating all these functions and executing them on MULTOS. Therefore, I am exploring alternative solutions.
2- Are there any "X Algorithms" that do not involve "floating-point operations" and are suitable for MULTOS? Can you suggest any? For example, one "X Algorithm" that I am currently working on is the "Bozorth-3 Algorithm," but it does involve "floating-point operations."
3- In addition to the approaches mentioned above, I need any documentation, sample projects, videos, or any other material that can help me with performing fingerprint verification on MULTOS cards internally.
I am looking forward to any assistance you can provide on this matter.
I searched for a "fingerprint verification algorithm" that does not involve floating-point operations. If such an algorithm exists, I can run this algorithm on a MULTOS card.
However, most fingerprint verification algorithms typically require floating-point operations. Therefore, it is unlikely that there is a fingerprint verification algorithm that does not involve floating-point operations.
To perform a fingerprint matching operation on MULTOS, you would need to develop a custom floating-point operations library specifically for MULTOS. I have started to work on developing such a library, but considering the limited memory and processing power of MULTOS, I have serious concerns about the efficiency of this library.
Thank you,