# Mécanismes cryptographiques

Vous trouverez ici une brève définition des mécanismes cryptographiques utilisés par Seald.

Leur implémentation utilisée dans Seald est SSCrypto (opens new window).

# Génération d'aléa

Selon l'environnement cible, différents générateurs d'aléa sont utilisés :

# Générateur de paires de clés asymétriques

Les clés utilisées sont de type RSA (voir RFC 8017 (opens new window)).

Selon l'environnement cible, différents générateurs de paires de clés asymétriques sont utilisés&bsp;:

# Chiffrement symétrique

Pour chiffrer symétriquement, deux algorithmes sont utilisés pour assurer à la fois la confidentialité et l'intégrité : un algorithme de chiffrement symétrique ne garantissant que la confidentialité, et un MAC pour assurer l'intégrité.

# Dimensionnement

Deux clés symétriques sont utilisées :

  • une clé de chiffrement de 256 bits notée encryptionKey ;
  • une clé pour le MAC de 256 bits notée authenticationKey.

Leur concaténation dans cet ordre est notée messageKey.

# Durée de vie

Les clés sont utilisées pour une durée indéterminée pour les données qu'elles protègent.

# Chiffrement

Le chiffrement symétrique de clearText avec une messageKey (concaténation de encryptionKey et de authenticationKey) pour obtenir cipheredMessage se fait comme suit :

  • génération d'un vecteur d'initialisation aléatoire noté iv de 128 bits ;
  • chiffrement :
  • MAC :
    • algorithme : HMAC-SHA-256 (voir RFC 6234 §8.3 (opens new window)) ;
    • argument (message_array dans la RFC 6234) : la concaténation de iv et de cipherText ;
    • clé (key dans la RFC 6234) : authenticationKey ;
    • résultat : hmac ;
  • retourner : cipheredMessage qui est la concaténation de iv, cipherText, et hmac.

# Déchiffrement

Le déchiffrement symétrique de cipheredMessage (concaténation de iv, cipherText, et hmac) avec une messageKey (concaténation de encryptionKey et de authenticationKey) pour obtenir clearText se fait comme suit :

# Enveloppe

Lors de l'utilisation du SDK, cipheredMessage est mis dans un format d'enveloppe :

# Implémentation

L'implémentation utilisée dépend de l'environnement cible ;

# Cryptographie asymétrique

Les clés utilisées sont de type RSA (voir RFC 8017 (opens new window)).

Une paire de clés est réservée aux opérations de chiffrement, une autre aux opérations de signature.

# Dimensionnement

Les clés sont générées avec un module n de 4096 bits et un exposant public e de 65537.

# Durée de vie

Ces clés sont générées pour une durée ne pouvant excéder 157680000 secondes (5 ans), avec une durée de vie par défaut à 94608000 secondes (3 ans).

# Chiffrement asymétrique

Le chiffrement asymétrique d'un clearText avec une clé publique notée (n,e) donnée pour obtenir cipheredMessage est effectué comme suit :

TIP

L'utilisation de SHA-1 comme fonction de hachage dans RSAES-OAEP est robuste et conforme au RGS v2.0 (voir §B1.2.2.2) (opens new window), même en considérant que des collisions sont possibles. Pour plus d'informations, voir What Hashes Make RSA-OAEP Secure? (opens new window).

# Déchiffrement asymétrique

Le déchiffrement asymétrique d'un cipheredMessage avec une clé privée notée K donnée pour obtenir clearText est effectué comme suit :

# Signature

La production d'une signature signature d'un textToSign à l'aide d'une clé privée notée K est effectuée comme suit :

# Vérification de signature

La vérification d'une signature signature d'un textToSign à l'aide d'une clé publique notée (n,e) associée à la clé privée K utilisée pour signer est effectuée comme suit :

# Implémentation

L'implémentation utilisée dépend de l'environnement cible ;

# Dérivation de clé

La dérivation de clé à partir d'un passphrase et d'un salt pour obtenir key est effectuée comme suit :

  • dérivation :
    • algorithme : SCrypt (opens new window), avec les paramètres suivants :
      • N : 16384 ;
      • r : 8 ;
      • p : 1 ;
      • taille de sortie : 64 octets ;
    • arguments : passphrase et salt donnés ;
    • résultat : key ;
  • retourner : key.

# Implémentation

L'implémentation utilisée dépend de l'environnement cible ;