summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-07-01Factorisation de code dans l'implémentation à seuilKévin Le Gouguec
Plus facile à lire, je trouve (pas besoin de se demander "c'est quoi cette division ?" à chaque fois).
2019-05-21Mise à jour de la version felicsref par rapport au dépôt sp4Kévin Le Gouguec
Calcul des sous-clés à la volée pendant le chiffrement.
2019-05-21Rajout d'inclusions manquantesKévin Le Gouguec
2019-05-21Dé-duplication de code dans l'implémentation FELICSKévin Le Gouguec
Apparemment les différents gcc de FELICS arrivent encore à comprendre qu'ils peuvent inligner les multiplications ; c'est quand on passe par un tableau de pointeurs de fonction qu'ils baissent les bras.
2019-05-21Réutilisation des multiplications dans l'implémentation FELICSKévin Le Gouguec
Plutôt que d'ajouter -Wno-unused-functin, on pourrait aussi déclarer les multiplications "static inline", ce qui par convention esquive les avertissements sur la non-utilisation.
2019-05-21Réutilisation de tweakey.c dans l'implémentation itérativeKévin Le Gouguec
2019-05-21Réutilisation des multiplications dans l'implémentation à seuilKévin Le Gouguec
2019-05-21Correction de dépendances entre objets et entêtesKévin Le Gouguec
Si e.g. multiplications.h changeait, tweakey.o n'était pas recompilé…
2019-05-21Extraction des multiplications hors de tweakey.cKévin Le Gouguec
De façon à ce que d'autres versions puissent réutiliser l'un ou l'autre.
2019-05-20Inversion de la seconde boucle de la couche linéaireKévin Le Gouguec
1. Ça ressemble plus à ce qu'on voit sur le schéma. 2. Pour une raison obscure, la version incrémentée bouffe souvent plus de ROM et plus de cycles (jusqu'à 5% de ROM sur ARM).
2019-05-20Correction du calcul de FjKévin Le Gouguec
Problème introduit par 3a57031.
2019-05-20Réécriture de l'implémentation des couches non-linéaire et linéaireKévin Le Gouguec
Changements mineurs : - remplacement du tableau intermédiaire F par une fonction, - réécriture de la couche linéaire avec des boucles. Le but est d'améliorer la lisibilité par rapport à la spécification, tout en limitant les différences avec la version "felicsref".
2019-05-16Ajout de traces pour la version thresholdKévin Le Gouguec
Pour aider à l'implémentation VHDL.
2019-05-03Ajustement de la gestion du nonce pour ΘCB3Kévin Le Gouguec
Ajout du nonce dans le tweak une bonne fois pour toute à l'initialisation de l'algorithme, au lieu de le rajouter à chaque tour de boucle. Similaire à notre implémentation de SCT-2, et à l'implémentation de référence de Deoxys-I.
2019-05-03Correction d'un commentaire du mode ΘCB3Kévin Le Gouguec
2019-05-03Correction du mode ΘCB3 quand sizeof(size_t)<8Kévin Le Gouguec
Bug introduit par ce047dd.
2019-05-02Utilisation de "size_t" pour l'indexation d'un tableauKévin Le Gouguec
Surtout par souci d'homogénéité.
2019-05-02Homogénéisation de la gestion de l'index de bloc dans les tweaksKévin Le Gouguec
- "block number" → "block index" - "192" → "t" - boucle de copie de l'index - utilisation de size_t : - par définition, aucune implémentation ne pourra traiter plus d'octets que SIZE_MAX (donc pas plus de blocs), - pas de raison de forcer un index de 64 bits sur ces pauvres ATmega et MSP430.
2019-03-27Update ↵Gaetan Leplus
SOUMISSION_NIST/REFERENCE_IMPLEMENTATION/src/add_vhdltbc/decrypt/crypt_pack.vhd, SOUMISSION_NIST/REFERENCE_IMPLEMENTATION/src/add_vhdltbc/decrypt/top.vhd, SOUMISSION_NIST/REFERENCE_IMPLEMENTATION/src/add_vhdltbc/encrypt/crypt_pack.vhd files
2019-03-27Quelques corrections de dernière minute sur les implems VHDLKévin Le Gouguec
2019-03-26[implem-vhdl] Ajout d'un entête avec auteurs et dédicace CC0Kévin Le Gouguec
2019-03-26[implem-vhdl] Déplacement dans SOUMISSION_NISTKévin Le Gouguec
2019-03-26[implem-vhdl] Ajout des sources VHDLGaetan Leplus
2019-03-26Add new directory: add_vhdlGaetan Leplus
2019-03-25Merge branch 'refactor-python-implem'Kévin Le Gouguec
2019-03-25[implem-python] Ajustements dans _tweak_messageKévin Le Gouguec
Hopefully, le résultat est plus clair en construisant le tweak par concaténations progressives.
2019-03-25[implem-python] Retrait de range()s et variables intermédiairesKévin Le Gouguec
2019-03-25[implem-python] Suppression d'une ligne de '#'Kévin Le Gouguec
2019-03-25[implem-python] Construction de _tweak_message par concaténationKévin Le Gouguec
Et petits nettoyages par-ci par-là.
2019-03-25[implem-python] Suppression de variables intermédiairesKévin Le Gouguec
Le code résultant ressemble plus à ce qui est décrit dans les algorithmes 3 et 4.
2019-03-25[implem-python] Simplification de _tweak_tagKévin Le Gouguec
Très similaire à ae_common._tweak_associated_data.
2019-03-25[implem-python] Simplification de _add_tag_jKévin Le Gouguec
2019-03-25[implem-python] Remplacement de _tweak_tag_end par une concaténationKévin Le Gouguec
2019-03-25[implem-python] Ajustements de formeKévin Le Gouguec
2019-03-25[implem-python] Ajout des entêtes manquantsKévin Le Gouguec
2019-03-24[implem-python] Remplacement de _low_part par du "tranchage" natifKévin Le Gouguec
2019-03-24[implem-python] Réécriture de certains range() dans ae_common.pyKévin Le Gouguec
Et réutilisation de fonctions Python natives.
2019-03-24[implem-python] Réécriture de certains range() dans tbc.pyKévin Le Gouguec
IME, itérer sur un range() est rarement la façon la plus expressive de faire les choses ; les alternatives imposent une structure qui rendent l'intention plus claire. E.g. quand on voit une compréhension, on comprend que l'auteur cherche à filtrer et/ou transformer ce sur quoi il itère. Réutilisation de xor_state(), renommé xor() puisqu'il sert dans plusieurs situations. Séparation de ce xor() et des fonctions communes aux modes authentifiés pour éviter un import circulaire.
2019-03-24[implem-python] Conformité PEP8Kévin Le Gouguec
Surtout la capitalisation des noms de fonction. Retrait des lignes de '#' ; si il y a des séparations à faire, autant ajouter des modules. Correction de _MessageTweak.BLOCK en passant.
2019-03-24[implem-python] Correction de la documentation de Lilliput-ⅠKévin Le Gouguec
2019-03-24[implem-python] Renommage des modules des modes authentifiésKévin Le Gouguec
On bénéficie déjà de l'espace de nommage "lilliput".
2019-03-23[implem-python] Documentation de Lilliput-Ⅰ et Lilliput-TBCKévin Le Gouguec
Idem, renommage des fonctions privées avec un souligné pour que l'API soit plus simple à comprendre. ⚠ Pas testé, ça prend littéralement 20 minutes à l'implémentation Python de générer les vecteurs de test, et c'est l'heure du dodo…
2019-03-23[implem-python] Documentation du mode authentifié Lilliput-ⅡKévin Le Gouguec
Ajout d'un souligné devant les fonctions privées ; de cette façon, >>> from lilliput import lilliput_ae_1 >>> help(lilliput_ae_1) … ne montre que les fonctions "publiques", i.e. celles que l'utilisateur est censé appeler.
2019-03-23[implem-python] Documentation du paquet "lilliput"Kévin Le Gouguec
2019-03-22[implem-python] Déplacement dans le dossier SOUMISSION_NISTKévin Le Gouguec
Et ajout d'un métascript pour vérifier la conformité. Il ne reste plus qu'à… (bis)
2019-03-22Simplification et documentation de pad10*Kévin Le Gouguec
Pas besoin de la condition. Ajout d'un exemple.
2019-03-20Ajout de l'implémentation "FELICS"Kévin Le Gouguec
Semblable en tout point à l'implémentation de référence, sauf pour des optimisations manuelles dans tweakey.c. Les gains sont significatifs même si surprenants : Lilliput-I-128 on AVR (vref with -O3) code_size: -3.21% (7420 ↘ 7182) code_ram: -2.08% (530 ↘ 519) code_time: -26.13% (176922 ↘ 130701) Lilliput-I-192 on AVR (vref with -O3) code_size: -3.66% (7550 ↘ 7274) code_ram: -1.90% (578 ↘ 567) code_time: -28.34% (228210 ↘ 163530) Lilliput-I-256 on AVR (vref with -O3) code_size: -4.05% (7698 ↘ 7386) code_ram: -1.71% (642 ↘ 631) code_time: -29.87% (301863 ↘ 211704) Lilliput-II-128 on AVR (vref with -O3) code_size: -3.04% (6704 ↘ 6500) code_ram: -2.94% (511 ↘ 496) code_time: -25.97% (181884 ↘ 134648) Lilliput-II-192 on AVR (vref with -O3) code_size: -3.56% (6682 ↘ 6444) code_ram: -1.97% (559 ↘ 548) code_time: -26.30% (264608 ↘ 195028) Lilliput-II-256 on AVR (vref with -O3) code_size: -4.06% (6804 ↘ 6528) code_ram: -1.77% (623 ↘ 612) code_time: -28.47% (354220 ↘ 253368) Lilliput-I-128 on MSP (vref with -O3) code_time: -17.72% (153285 ↘ 126129) Lilliput-I-192 on MSP (vref with -O3) code_size: -1.02% (8466 ↘ 8380) code_time: -19.77% (199203 ↘ 159828) Lilliput-I-256 on MSP (vref with -O3) code_time: -20.90% (268416 ↘ 212328) Lilliput-II-128 on MSP (vref with -O3) code_size: -2.49% (6336 ↘ 6178) code_time: -13.25% (172179 ↘ 149363) Lilliput-II-192 on MSP (vref with -O3) code_size: -1.22% (6406 ↘ 6328) code_time: -17.93% (227943 ↘ 187063) Lilliput-II-256 on MSP (vref with -O3) code_size: -1.30% (6600 ↘ 6514) code_time: -19.98% (307751 ↘ 246251) Lilliput-I-128 on ARM (vref with -O3) code_time: -16.94% (104944 ↘ 87170) Lilliput-I-192 on ARM (vref with -O3) code_time: -18.41% (132736 ↘ 108295) Lilliput-I-256 on ARM (vref with -O3) code_time: -18.74% (175979 ↘ 143001) Lilliput-II-128 on ARM (vref with -O3) code_time: -17.63% (114004 ↘ 93907) Lilliput-II-192 on ARM (vref with -O3) code_time: -17.55% (157405 ↘ 129780) Lilliput-II-256 on ARM (vref with -O3) code_time: -18.44% (206440 ↘ 168382) Lilliput-I-128 on PC (vref with -O3) code_time: -11.43% (11744 ↘ 10402) Lilliput-I-192 on PC (vref with -O3) code_time: -10.54% (14593 ↘ 13055) Lilliput-I-256 on PC (vref with -O3) code_time: -11.80% (18856 ↘ 16631) Lilliput-II-128 on PC (vref with -O3) code_size: -1.02% (7421 ↘ 7345) code_time: -9.11% (13080 ↘ 11889) Lilliput-II-192 on PC (vref with -O3) code_time: -10.51% (16809 ↘ 15043) Lilliput-II-256 on PC (vref with -O3) code_time: -10.96% (21970 ↘ 19561)
2019-03-15Nettoyage d'espacesKévin Le Gouguec
… En vrai je ne vois pas de bonne raison de se soucier des espaces en bout de ligne. Les outils de diff savent les ignorer, les éditeurs savent les ignorer… 🤷
2019-03-15Ajout de commentaires pour decrire la TI de refAlexandre Adomnicai
2019-03-14Correction de la génération du tweak pour ΘCB3Kévin Le Gouguec
L'implémentation de référence se basait sur les indices figurant dans le papier de Deoxys. Deux questions à résoudre, que d'autres se sont sans doute déjà posées : - Est-ce que ce l-1 est normal dans le papier de Deoxys ? - Est-ce que nos changements d'indices sont bien tous corrects ? En tout cas, les implémentations Python et C sont maintenant d'accord.