summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-23[implem-python] Documentation du paquet "lilliput"Kévin Le Gouguec
2019-03-23Clarification mineure sur le script de livraison des implemsKévin Le Gouguec
2019-03-23[implem-python] Intégration à la soumission (suite et fin)Kévin Le Gouguec
En plus du paquet Python "lilliput", chaque dossier embarque - un script "genkat_aead.py" qui génère les vecteurs de test via l'API du module "crypto_aead", - un module "crypto_aead" servant de point d'entrée générique, - un module "parameters", qui permet à crypto_aead d'instancier Lilliput-AE avec le bon mode et la bonne taille de clé. Livraison dans ./crypto_aead sans se soucier de l'arborescence du dépôt, par homogénéité avec make-package.sh. Quelques ajustement dans genkat_aead.py pour que le lien avec genkat_aead.c soit plus évident.
2019-03-22[WIP][implem-python] Intégration à la soumissionKé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-22Ajout de traces pour le déchiffrement AEKévin Le Gouguec
Pour aider l'implémentation matérielle.
2019-03-22[implem-python] Création de la surcouche "crypto_aead"Kévin Le Gouguec
Il ne reste plus qu'à générer les dossiers lilliputae*/add_python et les fichiers parameters.py correspondants, et on peut ajouter le tout à l'archive à soumettre au NIST.
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