Fault Resilient Encoding Schemes in Software: How Far Can We Go?
Cryptographic implementations are often vulnerable against physical attacks, fault injection analysis being among the most popular techniques. On par with development of attacks, the area of countermeasures is advancing rapidly, utilizing both hardwareand software-based approaches. When it comes to software encoding countermeasures for fault protection and their evaluation, there are very few proposals so far, mostly focusing on single operations rather than on cipher as a whole. In this paper we propose an evaluation framework that can be used for analyzing the effectivity of software encoding countermeasures against fault attacks. We first formalize the encoding schemes in software, helping us to define what properties are required when designing a fault protection. These findings show that using anticodes in such countermeasure can increase its detection capabilities. We provide a way to generate a code according to user criteria and also a method to evaluate the level of protection of assembly implementations using encoding schemes. This evaluation is based on static code analysis and provides a practical information on how good will the protection be on a real device. Finally, we verify our findings by implementing a block cipher PRESENT, protected by encoding scheme based on anticodes, and provide a detailed evaluation of such implementation.