Patent ID: 7512241

Claim:
A method to generate a sub-key based on a main key, comprising the following steps: obtaining a first value by applying to the main key a linear diversification layer by mixing the main key with a constant, applying to the first value a non-linear transformation, this transformation comprising: obtaining a second value by applying the first value to a substitution layer, the substitution layer comprising at least one substitution box (sbox), each substitution box containing at least one table of constants for which the first value serves as a pointer and a pointed constant serves as an output, obtaining a third value by using a diffusion box of multi-permutation type based on the second value, dividing the third value in N blocks of same size, obtaining an output fourth value formed by N blocks, each block of the fourth value being the result of the combination of at least two blocks of the third value, a block having a same index being always omitted, obtaining a seventh value by applying to the fourth value a substitution layer (sigma), obtaining the sub-key by applying to the seventh value of a symmetrical encryption module, the first value serving as a key input for this module.