White-Box Cryptographic Gluing via Distributed Key Fragments
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing software implementations of cryptographic algorithms face challenges in securing cryptographic keys from reverse engineering and tampering, especially in white-box attack scenarios where attackers have full control over the system, and previous solutions like external encodings have limitations such as difficulty in hiding input and output encoding processes, especially when the white-box implementation is not strongly connected to the surrounding program.
Innovation Solution
The approach involves computing and storing fragments of the white-box key in the surrounding program, using pointers and obfuscation techniques to hide the computation, and making the computation dependent on system integrity, such as hash values of code fragments or user passwords, to ensure correct operation only when the system is intact, thereby preventing unauthorized distribution and use of the white-box implementation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the white-box implementation is strongly connected to the surrounding program, then the security against code lifting is improved, but the adaptability and ease of integration deteriorate
Solution Approach 1:
The solution segments the cryptographic functionality into a separate white-box implementation module that can be independently distributed. The surrounding program contains only the key computation logic, while the white-box module contains the cryptographic algorithms and lookup tables. This segmentation allows the white-box implementation to be securely distributed without requiring strong connections to specific surrounding code, thereby improving adaptability while maintaining security through the distributed key computation approach.
2Adaptability or versatility
If the white-box implementation is made independent and distributable, then the adaptability and ease of distribution are improved, but the security against unauthorized use deteriorates
Solution Approach 1:
The invention introduces an intermediary mechanism in the form of distributed key computation. The surrounding program computes key fragments and combines them to reconstruct the cryptographic key. This intermediary key reconstruction process acts as a security gatekeeper - the white-box implementation can be freely distributed, but it remains secure because the key is never present in a single location and requires collaboration between the surrounding program and the white-box module to function. This resolves the contradiction by enabling easy distribution while maintaining security through the intermediary key computation process.
3Ease of repair
If traditional software implementations are used, then the ease of replacement and renewal is improved, but the security against reverse engineering deteriorates
Solution Approach 1:
The invention segments the cryptographic system into a renewable surrounding program component and a distributed white-box implementation component. The surrounding program, which contains the key computation logic, can be easily replaced or renewed independently of the white-box module. This segmentation maintains the ease of replacement advantage of traditional software while improving security through the distributed architecture that prevents reverse engineering of the complete key material, as the key is reconstructed from distributed fragments rather than stored in a single replaceable module.
Data Source
AI summary
A method of gluing a cryptographic implementation of a cryptographic function to a surrounding program in a cryptographic system, including: receiving, by the cryptographic system, an input message; receiving a computed value from the surrounding program; performing, by the cryptographic system, a keyed cryptographic operation mapping the input message into an output message using the computed value from the surrounding program, wherein the output message is a correct output message when the computed value has a correct value; and outputting the output message.


