summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-22[implem-python] Création d'un paquet "lilliput"Kévin Le Gouguec
2019-03-22[implem-python] Renommage du module TBCKévin Le Gouguec
Quand le tout sera packagé sous le namespace "lilliput", le préfixe alourdira plus qu'autre chose.
2019-03-22Simplification et documentation de pad10*Kévin Le Gouguec
Pas besoin de la condition. Ajout d'un exemple.
2019-03-21[implem-python] Simplification de pad10*Kévin Le Gouguec
Dans le cadre d'une croisade contre les range(len(…)). Suppression d'un paramètre inutile dans la foulée.
2019-03-21[implem-python] Utilisation des divisions entières //Kévin Le Gouguec
Plutôt que int() ; moins de bruit. … Au passage, simplification (j'espère) de ArrayToBlockbytesMatrix() : - pas besoin d'initialiser la matrice à zéro ; suffit d'ajouter les octets et les blocs comme ils viennent, - AFAICT, int((length + (BLOCK_BYTES - (length % BLOCK_BYTES))) / BLOCK_BYTES) quand length % BLOCK_BYTES > 0, c'est juste une façon compliquée d'écrire int(length/BLOCK_BYTES) + 1
2019-03-21[implem-python] Nettoyage PEP8Kévin Le Gouguec
- espaces avant ':' - espaces en trop après ',' - parenthèses dans les if - levée d'exception plutôt que 'return None' implicite Simplification de genkat_aead.py grâce à l'exception levée par le module.
2019-03-21[implem-python] Simplification d'une compréhensionKévin Le Gouguec
2019-03-21[implem-python] Correction d'une typoKévin Le Gouguec
2019-03-21[implem-python] Ajustement de l'API externeKévin Le Gouguec
Utilisation d'une enum, pour que les valeurs possibles soient explicites. Renommage des points d'entrée pour qu'ils soient uniformes et interchangeables. Transformation du tag en liste plus bas pour que lilliput.py ne se soucie pas des détails d'implémentation des fonctions en-dessous.
2019-03-21[implem-python] Correction d'un bug sur un chemin d'erreurKévin Le Gouguec
2019-03-21[implem-python] Retrait des constantes globalesKévin Le Gouguec
Et des fonctions d'initialisation. Et d'une fonction non-utilisée dans le mode SCT-2.
2019-03-21[implem-python] Retrait de A_BITS/M_BITS (2/2)Kévin Le Gouguec
2019-03-21[implem-python] Gestion de l'échec de déchiffrement dans genkat_aeadKévin Le Gouguec
Ce serait mieux si l'API renvoyait une exception… Un jour.
2019-03-21[implem-python] Retrait de A_BITS/M_BITS (1.5/2)Kévin Le Gouguec
2019-03-21[implem-python] Extraction de fonctions communes aux deux modesKévin Le Gouguec
2019-03-21[implem-python] Retrait de A_BITS/M_BITS (1.1/2)Kévin Le Gouguec
2019-03-21[implem-python] Suppression d'affectations redondantesKévin Le Gouguec
Aurais dû les enlever dans 23d2fea280302c01a818e46e4a43c884eac03865.
2019-03-21[implem-python] Retrait de A_BITS/M_BITS (1/2)Kévin Le Gouguec
En passant : - remplacement de paramètres 0/1 par des booléens/des enums (pour TweakMessage en particulier, ça simplifie pas mal la logique) - construction de M (resp. C pour le déchiffrement) au fur et à mesure, i.e. avec des listes vides, plutôt qu'en pré-allouant des tableaux potentiellement trop gros en cas de padding
2019-03-21[implem-python] Renommage de variablesKévin Le Gouguec
Pour que le lien soit plus facile à faire avec la spec.
2019-03-21[implem-python] Déclaration de "alphas" dans multiplications.pyKévin Le Gouguec
2019-03-21[implem-python] Retrait des variables globales de lilliput_tbcKévin Le Gouguec
On peut tout déduire de len(tweak) / len(key) ; la seule raison d'utiliser autant de constantes en C est que les tableaux se dégradent en pointeurs, donc c'est où les constantes, où une tétrachiée d'arguments.
2019-03-21[implem-python] Dé-duplication de constantesKévin Le Gouguec
2019-03-21[implem-python] Confinement de la gestion des tours au module TBCKévin Le Gouguec
Retrait de quelques variables globales par la même occasion. Renommage de "round" en "i" pour 1) coller à la spec 2) éviter le conflit avec le builtin "round".
2019-03-21[implem-python] Retrait du main commentéKévin Le Gouguec
2019-03-21[implem-python] Ajout de NONCE_BYTES dans constants.pyKévin Le Gouguec
2019-03-21[implem-python] Suppression de paramètres redondantsKévin Le Gouguec
tweak_bits est constant pour un mode donné ; rounds se déduit de la taille de clé.
2019-03-21[implem-python] Suppression de paramètres redondantsKévin Le Gouguec
Création d'un nouveau module "helpers" qui contiendra les fonctions utilisées par les deux modes.
2019-03-21[implem-python] Simplification du contrôle des paramètresKévin Le Gouguec
Encore un peu de duplication sur les longueurs de clés valides. On y travaille.
2019-03-21[implem-python] Passage des clés et nonces par paramètresKévin Le Gouguec
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-15[felics] Automatisation de la mise à jour des vecteurs FELICSKévin Le Gouguec
2019-03-15Ajout de commentaires pour decrire la TI de refAlexandre Adomnicai
2019-03-15[implem-threshold] Ajout du calcul de la S-box sans tablesKévin Le Gouguec
Fournie par @aadomn.
2019-03-14Ajout d'un script pour vérifier l'implémentation PythonKévin Le Gouguec
2019-03-14Ajustement des traces de Lilliput-ⅠKévin Le Gouguec
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.
2019-03-13Changement de la génération du nonce dans lilliput.pyKévin Le Gouguec
Pour correspondre à genkat_aead.c.
2019-03-13Merge branch 'implem-ti'Kévin Le Gouguec
2019-03-13Génération de vecteurs Python selon la structure crypto_aeadKévin Le Gouguec
2019-03-13Traduction de genkat_aead.c en PythonKévin Le Gouguec
Et ré-adaptation de l'API de lilliput.py pour simplifier l'interfaçage ; et retrait des print() pour accélérer la génération des vecteurs (qui même comme ça prend 2 bonnes minutes). NB : pour le moment, les vecteurs ne correspondent pas…
2019-03-13Changement de l'API de l'implémentation PythonKévin Le Gouguec
Pour qu'on puisse plus facilement manipuler les entrées/sorties. Pour le moment le round-trip chiffrement/déchiffrement marche. import lilliput message = 'Hello 🌐!' adata = 'Signed: Kévin' for mode in 1,2: for keylen in 128, 192, 256: ct, tag = lilliput.mainEnc(message, adata, mode, keylen) pt = lilliput.mainDec(ct, tag, adata, mode, keylen) assert message == pt
2019-03-13Ajout de l'implémentation Pythonleo
2019-03-12Homogénéisation de la déclaration des auteurs des implémentationsKévin Le Gouguec
Ça m'embêtait qu'on liste plusieurs personnes, puis qu'on dise "the implementer has…" ; repompé le "hereby denoted…" de Keccak.
2019-03-12Utilisation d'un générateur d'aléa pour l'implémentation à seuilKévin Le Gouguec
Un peu de machinerie à mettre en place pour permettre l'ajout de fichiers arbitraires dans une implémentation.
2019-03-12Ajustements mineurs sur l'implémentation à seuilKévin Le Gouguec
- retrait de stdio.h (inutile) - "aération" du prototype de _state_init
2019-03-12Ajustement des caractères d'espacementKévin Le Gouguec
- fins de ligne UNIX (\n) - espaces plutôt que tabulations
2019-03-12Retrait des suffixes _TIKévin Le Gouguec
Dans le but de rendre diff -ru ref add_threshold plus digeste.
2019-03-12Ajustement des entêtes des fichiers sourcesKévin Le Gouguec
- ordre alphabétique des auteurs, - un auteur par ligne, date sur une ligne séparée : maintenance et diff plus simples, - brève description de chaque fichier.
2019-03-12Ajout de l'implémentation à seuil d'ordre 1Kévin Le Gouguec
Modifications nécessaires dans l'infra : - retrait conditionnel de test-tweakey, vu que l'API n'est pas la même pour l'implémentation à seuil, - retrait conditionnel de l'avertissement "-Wparentheses", plus agaçant qu'autre chose sur les calculs booléens de cipher.c, e.g. y_hi&3 ^ (y_hi&8)>>1 où la priorité est intuitive (shifts avant AND avant XOR). C'est dommage de perdre les avertissements sur if (a&b == c), mais tant pis… On va compter sur La Suite De Test®©™ pour nous couvrir. Co-authored-by: Alexandre Adomnicai <a.adomnicai@trusted-objects.com> Co-authored-by: leo <leo.reynaud17@gmail.com>