 Bonjour tout le monde, dans cette vidéo, je vais présenter un joint-work avec Pierre Alain Fouke sur la propriété de la division. La propriété de la division a été introduite par Todo à Eurocrypt 15 et c'est un méthode pour trouver des intégrales distinguissaires sophistiquées. Originallement, pour chercher des intégrales distinguissaires, nous avons commencé avec une collection de textes planétaires, comme que l'un des textes d'un ordre prendra tous les valeurs possibles, pendant que les autres restent constantes dans le processus d'encryption. Et ensuite, nous observons que les textes de textes correspondants, si nous sumons tous ces textes, alors qu'à moins un ordre sera sumé à 0. Avec la propriété de la division, nous pouvons être un peu plus précis, parce que nous allons regarder les expressions polynomiaux de l'internel component de la fonction d'encryption. Alors, nous allons prendre trois variables x, y et z, comme que y est equal à f de x et z est equal à g de y et x, y et z belongent à un fil final. Maintenant, selon mz, un monoméole dans les variables z, mz peut aussi être seen comme un polynomial dans les variables y. Et donc, seulement involvant le monoméole my. Et les deux propères divisions subsèdes disent que si chaque my apparaît dans mz, c'est comme si nous sumons tous ces variables par un certain set d'inputs, et si ils summent à 0, alors mz va aussi summer à 0 pour le même set d'inputs. Donc, c'est appelé deux propères divisions subsèdes parce que nous pouvons expliquer les monoméoles dans deux sets. Un set contenant les monoméoles pour lesquelles nous savons qu'elles summent à 0 et un set de monoméoles pour lesquelles nous ne savons si elles summent à 0 ou à 1. Il y a aussi deux extra variables pour les propères divisions. Le premier est les trois propères divisions subsèdes dans lesquelles nous avons un troisième set dans lequel les monoméoles summent à 1. Et en ce cas, la propère d'input devient si chaque my summe à 0 mais à 1, alors mz summe à 1. Et nous avons aussi la variante d'exactes propères divisions dans lesquelles nous comptons combien de my summe à 1 et mz summe à 0 si et seulement si ce n'est même possible. Alors, en pratique, nous n'avons pas performé les monoméoles sur un set random X. Nous compétions les monoméoles sur un cube de variables exactement comme pour le cube d'attaque. Et en ce cas, la propère division est exactement équivalente à la présence ou à l'absence des monoméoles dans un polynomial. Et typiquement, cela ne signifie que si pour chaque monoméole si chaque monoméole my de mz ne dépend pas sur un monoméole mx alors mz aussi ne dépend pas sur mx. Et ici, il dépend qu'il y a un monoméole qui est plus grand que mx. Et donc, la propère division peut être utilisée pour savoir quels sont les plus grands monoméoles qui s'involuent dans un polynomial p. Donc, en pratique, depuis une fonction compliquée trop grande, donc on ne peut directement ne computer qu'une fx. La propère division sera utilisée pour obtenir des informations sur les grands monoméoles des monoméoles fx. Donc, la première étape est de décomposer fx dans des légères dans plusieurs légères et pour chaque de ces légères nous devons pouvoir compter la fx de toutes les outils et chaque producte d'outils. Donc, il y a de très petites légères typiquement petites boxeurs ou opérations binaires. Et le problème de la propère division n'est pas vraiment le problème, c'est que l'accuratie de la propère division dépend de la décomposition qu'on choisit pour fx. Le problème est que la propère division n'est pas très bien sous l'opération XOR, parce qu'il ne peut pas traiter le concélation des monoméoles. Pour la propère division 2, on ne peut pas traiter le concélation des monoméoles. Pour la variante exacte de la propère division, on va bien sûr le prendre en compte. Mais pour la propère division 2, on ne peut pas. Et donc, la décomposition est très importante dans l'accuratie du processus. Donc, typiquement pour compter la transition valide dans un petit état ici aussi appelé f pour une function n-to-m on va compter 2 à la m a&f une pour chaque producte de la pièce d'outre de f. Et chaque des a&f intervient les variables n donc à la plupart les monoméoles. La toute complexité de l'algorithme pour compter toutes les transitions valides par f est dans 2-to-3n pour une function n-to-m donc 2-to-3n est assez bas pour appliquer l'algorithme pour 1-to-n ou 16. En pratique, nous l'appliquons en plus de petites opérations comme 8-bit S-box ou 4-bit S-box Donc, notre première idée quand nous avons commencé ce travail était d'être capable de compter la table de propagation associée à une super S-box 2 super S-box sont obtenus par combinant 1 layer S-box 1 layer linear et un autre layer S-box Et bien sûr, il y a un outil d'addition dans le super S-box parce que pour 64-bit les super S-box sont 16 4-bit S-box pour s'il est fixé et donc, en théorie, nous pouvons appliquer l'algorithme de Xiong et Al pour compter sa table de propagation mais parce qu'il y a un outil il y a un outil d'account et nous avons une collection de 16-bit functions et nous voulons compter la table de propagation de une collection de functions et pourquoi nous voulons faire ça, c'est parce qu'il va remettre des décompositions il va remettre des fonctions dans la décomposition de notre target et nous espérons que ça va être plus incroyable parce que ça va gérer la concélation de monoméles par le super S-box donc c'est ce que nous avons fait c'est-à-dire que nous avons adapté l'algorithme original pour maintenant prendre la collection de K-N-bit functions donc en pratique K-N-bit functions et cet algorithme d'outil la table de propagation contenant toutes les transitions qui sont valides pour au moins une des fonctions je veux stresser que ce n'est pas un modèle wiki parce que pour la propriété nous avons un distinguisateur si et seulement si il n'y a pas de division trail et dans notre cas si il n'y a pas de division trail c'est à dire qu'il n'y a pas de division trail que ce soit la fonction chose dans la collection de K-functions parce que en tant que une transition est valide pour une fonction on ajoute cette transition valide à l'intérieur de la table de propagation donc donc cet algorithme est principalement basé sur l'algorithme original nous avons seulement réorganisé les computations et la main advantage que la collection de la table de propagation de KN bitfunctions est abondée par KN222N plus 223N qui est beaucoup plus bas que Kx223N si nous nous avons seulement réorganisé l'algorithme original Kx mais en pratique le 223N est un peu plus basé en pratique pour vous donner un exemple nous pouvons compter les tables de propagation associées à les super S-box de LED Midori64 Skinny64 pour 2-hines pour 8 et beaucoup de blocs cifers et ça prend pour le server pour Skinny64 c'est plus rapide parce qu'actuellement il n'y a que 2-8 fonctions parce que il n'y a que 2 nibles de la table donc c'était notre premier résultat nous pouvons compter les tables de propagation associées à les super S-boxes la deuxième partie de notre travail était sur les séquences extensives nous savons que la propagation de la propagation n'est pas légèrement invariante parce que il n'y a pas mal sous l'opération XOR et pour exemple si nous prenons la fonction F ici c'est des polynomiaux x et des polynomiaux y etc nous pouvons observer que X et Y apparaissent dans les outils de ces fonctions mais si par exemple P0 est equal à P2 alors que l'exor de les outils ne dépend pas de X anymore et similarly si P0 est equal à P1 alors la première partie ne dépend pas de X plus Y et donc si nous change les bases par exemple si nous change nous ajoutons une map légère X et X plus Y alors cette fonction ne dépend pas de l'une des fonctions ne dépend pas de X plus Y donc c'est très important pour chercher les map légèrement pour ajouter à la fin parce que ça peut lead à de nouveaux distinguishes donc nous avons commencé cette fonction avec Baptiste Lambert dans un papier publié dans DCC et basiquement nous proposons toutes les matrices invertibles devant la lait et donc la complexité était pour la n² qui est très énorme et ça peut être seulement appliqué pour 4 bits S-box typiquement encore ça a fait quelques bons résultats contre les rectangles mais maintenant dans ce papier avec Pierralin nous avons trouvé que les matrices invertibles n'étaient pas nécessaires en pratique nous n'avons qu'à regarder les combinations légères d'involts bits donc pour l'output c'est évident il n'y a pas besoin de regarder les matrices invertibles nous n'avons qu'à regarder les combinations légères surtout parce que quand nous cherchons un distinguisateur nous cherchons un trail de division et il s'agit d'une particularité ce n'est pas un produit d'outils à l'input c'est un peu plus sophistiqué mais ce que nous avons prouvé c'est qu'actuellement l'existence ou l'absence des distinguisateurs c'est quand même l'espace vector c'est à dire que si vous ne voulez pas optimiser la complexité des données de votre distinguisateur donc tous les bits d'outils seront à 1 et seulement 1 sera à 0 alors il n'y a que 1 bits constants et donc vous n'avez que d'exhausser tout le espace d'une dimension qui sera constant et c'est très important parce que c'est vraiment le espace de recherche pour les distinguisateurs et encore donc nous avons maintenant à la fin de essayer 4 à la frontière 2 à la fin de la map à la fin et donc ça signifie 2 à la fin 2 à l'extérieur des distinguisateurs et la recherche pour 1 distinguisateur n'est pas une opération triviale donc ça commence à être beaucoup j'espère que nous avons trouvé il y a des minimaux de map comme si il n'y a pas des distinguisateurs pour ces pairs il n'y a pas des distinguisateurs pour tous les autres pairs et en fait il n'y a pas beaucoup de pairs pour essayer la deuxième advantage de cette technique est que elle combine bien parce que nous pouvons maintenant appliquer la technique à la frontière de la Super S-Box ou à l'output de la Super S-Box donc maintenant nous avons les tables de propagation de Super S-Box et nos frameworks pour les distinguisateurs mais la plupart des approches pour la recherche pour la division et le problème est le nombre de transitions valides dans les tables de propagation de Super S-Box sont énormes donc typiquement c'est 4 millions de transitions valides pour la Super S-Box de Midori et en décrivant ces tables ou des constraints MILP devraient être un modèle très inefficient au moins c'est ce que nous avons pensé à l'époque nous avons lu ce papier mais je dois mentionner que Udo Venko a résumé ce problème dans un paper réel publié par A.J.Cript21 qui a succédé les constraints en décrivant les tables de propagation de Super S-Box dans un modèle SAT encore dans notre cas on choisit d'utiliser un tool ad hoc pour chercher les trails de division donc c'est basé sur un approach de branche et de bandes et c'est dédié à des blocs de 64 bits donc plus précisément nous demandons que les cifers peuvent être décomposés dans une sorte d'opérations qui signifie 4 16-16 bits d'opérations et des permutations unibles mais c'est très générique parce que les 16-16 bits d'opérations ici peuvent être either a linear mapping ou un Super S-Box mais il peut aussi être des S-Boxes en parallèle il n'y a pas plus des requirements que des functions 16-16 bits même si elles peuvent être décomposées dans les petites layers que les targets peuvent être décomposés avec ces opérations nous avons également implementé la mode Low Data donc pour l'input de la jambe il peut être pour chaque function 16-16 bits il peut être either 16 15 ou 0 et c'est le mode donc c'est un très bon résultat donc pour l'instant contre le Midori 64 nous avons pu trouver un distinguisateur contre 9 ronds alors que le meilleur résultat était contre 7 ronds pour les 16-16 bits et les 8 nous avons pu trouver un distinguisateur contre 1 plus de ronds que précédemment nous avons pu trouver une complexité de Low Data pour l'instant nous avons trouvé des distinguisateurs qui ont besoin de les 15 textes contre les 6 ronds Midori 64 et les 8 ronds Skinny 64 Regardant le temps de la run de notre algorithme il prend quelques minutes de la run Midori 64 et Skinny 64 sur notre 128 core server mais il a pris plus de 10 jours pour l'instant pour l'instant pour l'instant pour l'instant pour l'instant pour l'instant nous considérons 2 branches comme Super S-Box cette fonction est un Super S-Box cette fonction est aussi un Super S-Box et cette fonction est aussi un Super S-Box et puis il y a une permutation c'est pour vous montrer que c'est très générique et que il ne s'applique d'un block cipher il peut s'appliquer Speaking of height une chose intéressante pour ne pas c'est que tout les intégral distinguishers nous avons trouvé contre 20 ronds qui ont requiert l'inert map et l'inert map à l'output et c'est très intéressant parce que à Asiacrypt il y a 20 ronds et Bernet Hall a introduit tout le maximum de monomials pour assurer la sécurité contre les intégral distinguishers et pendant que ils ont appris l'inert map à la fin ils n'ont pas appris l'inert map pour l'instant ils n'auront pas appris que 20 ronds de height est la sécurité contre les intégral distinguishers pendant que il n'y a pas Finalement l'inert map a appris la précision de l'inert map donc c'était important de vérifier si nous avons la sécurité donc nous avons comparé l'inert map et l'approche classique en regardant l'inert map et l'inert map et nous avons trouvé que l'alpha de l'inert map pour l'approche classique sont en fait fausse positive signifie qu'ils ne sont pas dans la table de propagation de la Super S-Box et nous avons aussi étudier un peu comment ils sont éprouvés comment les fausse positive sont éprouvées sur les différents inputs et c'est vraiment dépendant de l'inert map de l'inert map pour les inputs de l'inert map le considérant que la Super S-Box n'a pas vraiment éprouvé la précision de la propriété de la division parce qu'il n'y a pas beaucoup de fausse positive de l'inert map mais pour l'inert map avec de l'inert map nous avons trouvé que pour le Midori 64 si l'inert map est à peu près 9 si l'inert map est à peu près 9 puis pour toujours pour chaque input avec l'inert map il y a à peu près 1 fausse positive avec l'approche classique et ça semble beaucoup nous avons fait le même expériment pour l'inert map 64 et nous avons obtenu des résultats très similes il y a un peu moins de fausse positive mais encore un peu comme 3 millions de fausse positive et depuis que l'inert map 64 est un peu plus fort que l'inert map 64 nous avons trouvé fausse positive de l'inert map avec de l'inert map equal à 2 pour conclure nous avons proposé un nouveau algorithme pour conclure le table de propagation de collection de fonctions incluant super boxes nous avons proposé une nouvelle étude d'intégrale d'intégrale une nouvelle façon de trouver d'intégrale d'intégrale et de étudier minimum de fausse de map de l'inert map nous avons proposé un nouveau algorithme pour retirer les éléments nécessaires de la table de propagation donc je n'ai pas présenté cette partie mais vous pouvez le trouver nous avons implémenté un nouveau ad hoc tool pour chercher pour intégrale d'intégrale basé sur les résultats prévus et le code est publié à l'adresse ici et si vous avez des questions feel free to send me an e-mail et finalement nous avons trouvé de nouvelles résultats contre Midori64, Skinny64 et Height ok, merci pour votre attention