Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemples deAWSCLI de chiffrement
Utilisez les exemples suivants pour tester leAWSL'interface de chiffrement sur la plateforme de votre choix. Pour obtenir de l'aide concernant les clés principales et d'autres paramètres, consultez Comment utiliser l'interface de ligne de commande AWS de chiffrement. Pour accéder à une référence rapide, consultez Référence des paramètres et de la syntaxe de l'interface de ligne de commande du kit AWS Encryption SDK.
Note
Les exemples suivants utilisent la syntaxe deAWSVersion 2.1 de ligne de commande de chiffrement.h/24, j/7.
Les nouvelles fonctionnalités de sécurité ont été initialement publiées dansAWSVersion de ligne de commande de chiffrement 1.7.h/24, j/7et 2.0.h/24, j/7. Toutefois,AWSVersion de ligne de commande de chiffrement version 1.8.h/24, j/7remplace la version 1.7.h/24, j/7etAWSChiffrement CLI 2.1.h/24, j/7remplace 2,0.h/24, j/7. Pour en savoir plus, consultez leconseil de sécurité
Pour obtenir un exemple montrant comment utiliser la fonctionnalité de sécurité qui limite les clés de données chiffrées, voirLimiter les clés de données chiffrées.
Pour un exemple montrant comment utiliserAWS KMSClés multi-régions, voirUtilisation de plusieurs régions AWS KMS keys.
Rubriques
- Chiffrement d'un fichier
- Déchiffrement d'un fichier
- Chiffrement de tous les fichiers d'un répertoire
- Déchiffrement de tous les fichiers d'un répertoire
- Chiffrement et déchiffrement sur la ligne de commande
- Utilisation de plusieurs clés principales
- Chiffrement et déchiffrement dans les scripts
- Utilisation de la mise en cache des clés de données
Chiffrement d'un fichier
Cet exemple utilise leAWSCryptage CLI pour chiffrer le contenu de l'hello.txt
, qui contient une chaîne « Hello World ».
Lorsque vous exécutez une commande de chiffrement sur un fichier, leAWSL'interface de chiffrement récupère le contenu du fichier, génère unclé de données, chiffre le contenu du fichier sous la clé de données, puis écrit lemessage chiffrévers un nouveau fichier.
La première commande enregistre l'ARN clé d'unAWS KMS keydans le$keyArn
Variable. Lors du chiffrement avec unAWS KMS key, vous pouvez l'identifier à l'aide d'un ID de clé, d'un ARN de clé, d'un nom d'alias ou d'un ARN d'alias. Pour plus de détails sur les identificateurs de clé d'unAWS KMS key, voirIdentificateurs clésdans leAWS Key Management ServiceManuel du développeur.
La seconde commande chiffre le contenu du fichier. La commande utilise le paramètre --encrypt
pour spécifier l'opération et le paramètre --input
pour indiquer le fichier à chiffrer. Le paramètre --wrapping-keys et son attribut key obligatoire indiquent à la commande d'utiliser la AWS KMS key représentée par l'ARN de la clé.
La commande utilise le paramètre --metadata-output
pour spécifier un fichier texte pour les métadonnées à propos de l'opération de chiffrement. En tant que bonne pratique, la commande utilise le paramètre --encryption-context
pour spécifier un contexte de chiffrement.
Cette commande utilise également la commande--commitment-policyparamètrepour définir explicitement la politique d'engagement. Dans la version 1.8.h/24, j/7, ce paramètre est obligatoire lorsque vous utilisez l'--wrapping-keys
Paramètre . À partir de la version 2.1.h/24, j/7, le--commitment-policy
Le paramètre est facultatif, mais recommandé.
La valeur du paramètre --output
, un point (.), indique à la commande d'écrire le fichier de sortie dans le répertoire actuel.
Lorsque la commande de chiffrement aboutit, elle ne renvoie pas de sortie. Pour déterminer si la commande a abouti, vérifiez la valeur booléenne dans la variable $?
. Lorsque la commande aboutit, la valeur de$?
est0
(Bash) ouTrue
(PowerShell). Lorsque la commande échoue, la valeur de$?
est différent de zéro (Bash) ouFalse
(PowerShell).
Vous pouvez également utiliser une commande de liste de répertoires pour vérifier que la commande de chiffrement a créé un nouveau fichier hello.txt.encrypted
. Étant donné que la commande de chiffrement n'a pas spécifié de nom de fichier pour la sortie, l'AWSL'interface de chiffrement a écrit la sortie dans un fichier nommé de la même façon que le fichier d'entrée, auquel un.encrypted
suffixe. Pour utiliser un autre suffixe ou supprimer le suffixe, utilisez le paramètre --suffix
.
Le fichier hello.txt.encrypted
contient un message chiffré qui comprend le texte chiffré du fichier hello.txt
, une copie chiffrée de la clé de données et des métadonnées supplémentaires, y compris le contexte de chiffrement.
Déchiffrement d'un fichier
Cet exemple utilise leAWSEncryption CLI pour déchiffrer le contenu duHello.txt.encrypted
fichier qui a été chiffré dans l'exemple précédent.
La commande de déchiffrement utilise le paramètre --decrypt
pour indiquer l'opération et le paramètre --input
pour identifier le fichier à déchiffrer. La valeur du paramètre --output
est un point qui représente le répertoire actuel.
Le--wrapping-keys
Paramètre avec uncléspécifie la clé d'encapsulation utilisée pour déchiffrer le message chiffré. Dans les commandes de déchiffrement avecAWS KMS keys, la valeur de l'attribut clé doit être une valeurARN de clé. Le--wrapping-keys
est obligatoire dans une commande de déchiffrement. Si vous utilisezAWS KMS keys, vous pouvez utiliser lecléAttribut à spécifierAWS KMS keyspour le déchiffrement ou ledécouverteavec une valeur detrue
(mais pas les deux). Si vous utilisez un fournisseur de clés principales personnalisé, l'cléetfournisseurLes attributs sont obligatoires.
Le--commitment-policyparamètreest facultatif à partir de la version 2.1.h/24, j/7, mais il est recommandé. Son utilisation rend explicitement votre intention claire, même si vous spécifiez la valeur par défaut,require-encrypt-require-decrypt
.
Le paramètre --encryption-context
est facultatif dans la commande de déchiffrement, même lorsqu'un contexte de chiffrement est fourni dans la commande de chiffrement. Dans ce cas, la commande de déchiffrement utilise le même contexte de chiffrement que celui fourni dans la commande de chiffrement. Avant de déchiffrer, leAWSL'interface de ligne de commande de chiffrement vérifie que le contexte de chiffrement du message chiffré comprend unepurpose=test
paire. Si ce n'est pas le cas, la commande de déchiffrement échoue.
Le paramètre --metadata-output
spécifie un fichier pour les métadonnées relatives à l'opération de déchiffrement. La valeur du paramètre --output
, un point (.), écrit le fichier de sortie dans le répertoire actuel.
À titre de bonne pratique, utilisez le--max-encrypted-data-keys
pour éviter de déchiffrer un message mal formé avec un nombre excessif de clés de données chiffrées. Spécifiez le nombre attendu de clés de données chiffrées (une pour chaque clé d'encapsulation utilisée dans le chiffrement) ou un maximum raisonnable (par exemple 5). Pour plus d'informations, consultez Limiter les clés de données chiffrées.
Le--buffer
renvoie le texte brut uniquement après le traitement de toutes les entrées, y compris la vérification de la signature numérique si elle est présente.
Lorsqu'une commande de déchiffrement aboutit, elle ne renvoie pas de sortie. Pour déterminer si la commande a abouti, récupérez la valeur de la variable $?
. Vous pouvez également utiliser une commande de liste de répertoires pour vérifier que la commande a créé un nouveau fichier avec un suffixe .decrypted
. Pour voir le contenu en texte brut, utilisez une commande pour récupérer le contenu d'un fichier, par exemple cat
ou Get-Content
Chiffrement de tous les fichiers d'un répertoire
Cet exemple utilise leAWSEncryption CLI pour chiffrer le contenu de tous les fichiers d'un répertoire.
Lorsqu'une commande affecte plusieurs fichiers, l'AWSL'interface de ligne de commande de chiffrement traite chaque fichier individuellement. Elle récupère le contenu du fichier, récupère une clé de données unique pour le fichier à partir de la clé principale, chiffre le contenu du fichier sous la clé de données et écrit les résultats dans un nouveau fichier dans le répertoire de sortie. Par conséquent, vous pouvez déchiffrer les fichiers de sortie de manière indépendante.
Cette liste du répertoire TestDir
affiche les fichiers en texte brut que nous souhaitons chiffrer.
La première commande enregistre l'optionAmazon Resource Name (ARN)d'unAWS KMS keydans le$keyArn
Variable.
La deuxième commande chiffre le contenu des fichiers dans le répertoire TestDir
et écrit les fichiers du contenu chiffré dans le répertoire TestEnc
. Si le répertoire TestEnc
n'existe pas, la commande échoue. Étant donné que l'emplacement d'entrée est un répertoire, le paramètre --recursive
est obligatoire.
Le--wrapping-keysparamètre, et ce qui est requisclé, spécifiez la clé d'encapsulation à utiliser. La commande de chiffrement inclut un contexte de chiffrement, dept=IT
. Lorsque vous spécifiez un contexte de chiffrement dans une commande qui chiffre plusieurs fichiers, le même contexte de chiffrement est utilisée pour tous les fichiers.
La commande dispose également d'un--metadata-output
pour indiquer le paramètreAWSEncryption CLI où écrire les métadonnées relatives aux opérations de chiffrement. LeAWSL'interface de ligne de chiffrement écrit un enregistrement de métadonnées pour chaque fichier qui a été chiffré.
Le--commitment-policy parameterest facultative à partir de la version 2.1.h/24, j/7, mais il est recommandé. Si la commande ou le script échoue parce qu'il ne peut pas déchiffrer un texte chiffré, le paramètre de stratégie d'engagement explicite peut vous aider à détecter rapidement le problème.
Lorsque la commande aboutit, leAWSEncryption CLI écrit les fichiers chiffrés dans leTestEnc
, mais elle ne renvoie aucune sortie.
La dernière commande répertorie les fichiers dans le répertoire TestEnc
. Il existe un fichier de sortie du contenu chiffré pour chaque fichier d'entrée de contenu en texte brut. Étant donné que la commande n'a pas spécifié d'autre suffixe, la commande de chiffrement a ajouté .encrypted
à chacun des noms des fichiers d'entrée.
Déchiffrement de tous les fichiers d'un répertoire
Cet exemple déchiffre tous les fichiers d'un répertoire. Il commence par les fichiers du répertoire TestEnc
qui ont été chiffrés dans l'exemple précédent.
Cette commande de déchiffrement déchiffre tous les fichiers duTestEncet écrit les fichiers en texte brut dans le répertoireTestDecrépertoire. Le--wrapping-keys
Paramètre avec uncléAttribut etARN de cléindique la valeurAWSCLI de chiffrement quiAWS KMS keysà utiliser pour déchiffrer les fichiers. La commande utilise le--interactive
pour indiquer le paramètreAWSEncryption CLI pour vous adresser une invite avant de remplacer un fichier nommé.
Cette commande utilise également le contexte de chiffrement qui a été fourni lorsque les fichiers ont été chiffrés. Lors du déchiffrement de plusieurs fichiers, l'AWSL'interface de ligne de chiffrement vérifie le contexte de chiffrement de chaque fichier. Si la vérification du contexte de chiffrement d'un fichier échoue, leAWSL'interface de chiffrement rejette le fichier, écrit un avertissement, enregistre l'échec dans les métadonnées, puis continue à vérifier les fichiers restants. Si l'icôneAWSL'interface de chiffrement ne parvient pas à déchiffrer un fichier pour toute autre raison, l'ensemble de la commande de déchiffrement échoue immédiatement.
Dans cet exemple, les messages chiffrés de tous les fichiers d'entrée contiennent l'élément du contexte de chiffrement dept=IT
. Toutefois, si vous procédiez au déchiffrement de messages ayant des contextes de chiffrement différents, vous devriez toujours être en mesure de vérifier une partie du contexte de chiffrement. Par exemple, si certains messages avaient un contexte de chiffrement dept=finance
et d'autres messages dept=IT
, vous pourriez vérifier que le contexte de chiffrement contient toujours un nom dept
sans spécifier la valeur. Pour plus de précisions, vous pourriez déchiffrer les fichiers dans des commandes distinctes.
La commande de déchiffrement ne renvoie pas de sortie, mais vous pouvez utiliser une commande de liste de répertoires pour vérifier qu'elle a crée de nouveaux fichiers avec le suffixe .decrypted
. Pour voir le contenu en texte brut, utilisez une commande pour récupérer le contenu d'un fichier.
Chiffrement et déchiffrement sur la ligne de commande
Ces exemples vous montrent comment diriger l'entrée vers des commandes (stdin) et écrire la sortie dans la ligne de commande (stdout). Ils expliquent comment représenter stdin et stdout dans une commande et comment utiliser les outils de codage en Base64 intégrés pour empêcher que le shell interprète mal les caractères non-ASCII.
Cet exemple dirige une chaîne en texte brut vers une commande de chiffrement et enregistre le message chiffré dans une variable. Ensuite, il dirige le message chiffré de la variable vers une commande de déchiffrement, qui écrit sa sortie dans le pipeline (stdout).
L'exemple se compose de trois commandes :
-
La première commande enregistre l'optionARN de cléd'unAWS KMS keydans le
$keyArn
Variable. -
La deuxième commande dirige la chaîne
Hello World
vers la commande de chiffrement et enregistre le résultat dans la variable$encrypted
.Le
--input
et--output
Les paramètres sont obligatoires dans tous lesAWSCommandes de commande de chiffrement. Pour indiquer que l'entrée est dirigée vers la commande (stdin), utilisez un trait d'union (-
) pour la valeur du paramètre--input
. Pour envoyer la sortie vers la ligne de commande (stdout), utilisez un tiret pour la valeur du paramètre--output
.Le paramètre
--encode
code en base64 la sortie avant de la renvoyer. Cela empêche que le shell interprète mal les caractères non-ASCII dans le message chiffré.Étant donné que cette commande est une simple preuve de concept, nous avons omis le contexte de chiffrement et supprimé les métadonnées (
-S
). -
La troisième commande dirige le message chiffré de la variable
$encrypted
vers la commande de déchiffrement.Cette commande de déchiffrement utilise
--input -
pour indiquer que l'entrée provient du pipeline (stdin) et--output -
pour envoyer la sortie vers le pipeline (stdout). (Le paramètre d'entrée prend l'emplacement de l'entrée, et non les octets d'entrée réels. Vous ne pouvez donc pas utiliser la variable$encrypted
en tant que valeur du paramètre--input
.)Cet exemple utilise ledécouverteAttribut du
--wrapping-keys
pour autoriser le paramètreAWSCLI de chiffrement pour utiliser n'importe quelAWS KMS keypour déchiffrer les données. Il ne spécifie pas depolitique d'engagement, il utilise donc la valeur par défaut de la version 2.1.h/24, j/7et plus tard,require-encrypt-require-decrypt
.Étant donné que la sortie a été chiffrée, puis codée, la commande de déchiffrement utilise le paramètre
--decode
pour décoder l'entrée codée en Base64 avant de la déchiffrer. Vous pouvez également utiliser le paramètre--decode
pour décoder l'entrée codée en Base64 avant de la chiffrer.Cette fois encore, la commande omet le contexte de chiffrement et supprime les métadonnées (-
S
).
Vous pouvez également effectuer les opérations de chiffrement et de déchiffrement dans une même commande sans la variable intermédiaire.
Comme dans l'exemple précédent, les paramètres --input
et --output
ont une valeur -
et la commande utilise le paramètre --encode
pour coder la sortie et le paramètre --decode
pour décoder l'entrée.
Utilisation de plusieurs clés principales
Cet exemple montre comment utiliser plusieurs clés principales lors du chiffrement et du déchiffrement de données dans leAWSCLI de chiffrement.
Lorsque vous utilisez plusieurs clés principales pour chiffrer des données, n'importe quelle clé principale peut être utilisée pour déchiffrer les données. Cette stratégie garantit que vous pouvez déchiffrer les données même si l'une des clés principales n'est pas disponible. Si vous stockez les données chiffrées dans plusieursRégions AWS, cette stratégie vous permet d'utiliser une clé principale dans la même région pour déchiffrer les données.
Lorsque vous procédez à un chiffrement avec plusieurs clés principales, la première clé principale joue un rôle spécifique. Elle génère la clé de données qui est utilisée pour chiffrer les données. Les autres clés principales chiffrent la clé de données en texte brut. Le message chiffré inclut les données chiffrées et un ensemble de clés de données chiffrées, une pour chaque clé principale. Même si la première clé principale a généré la clé de données, toutes les clés principales peuvent déchiffrer les clés de données, qui peuvent être utilisées pour déchiffrer les données.
Chiffrement avec trois clés principales
Cet exemple de commande utilise trois clés d'encapsulation pour chiffrer leFinance.log
, un dossier sur chacun des troisRégions AWS.
Elle écrit ensuite le message chiffré dans le répertoire Archive
. La commande utilise le paramètre --suffix
sans valeur pour supprimer le suffixe. Par conséquent, les noms des fichiers d'entrée et de sortie seront les mêmes.
La commande utilise le paramètre --wrapping-keys
avec trois attributs key. Vous pouvez également utiliser plusieurs paramètres --wrapping-keys
dans la même commande.
Pour chiffrer le fichier journal, leAWSLa CLI de chiffrement demande la première clé d'encapsulation de la liste,$key1
, pour générer la clé de données qu'elle utilise pour chiffrer les données. Ensuite, elle utilise chacune des autres clés d'encapsulation pour chiffrer une copie en texte brut de la même clé de données. Le message chiffré dans le fichier de sortie inclut les trois des clés de données chiffrées.
Cette commande déchiffre la copie chiffrée du fichier Finance.log
et l'écrit dans un fichier Finance.log.clear
du répertoire Finance
. Pour déchiffrer des données chiffrées sous troisAWS KMS keys, vous pouvez spécifier les trois mêmesAWS KMS keysou n'importe quel sous-ensemble d'entre eux. Cet exemple spécifie uniquement l'une des options suivantes :AWS KMS keys.
Pour dire à laAWSCLI de chiffrement quiAWS KMS keyspour déchiffrer vos données, utilisez lecléAttribut du--wrapping-keys
Paramètre . Lors du déchiffrement avecAWS KMS keys, la valeur duclédoit être un attributARN de clé.
Vous devez être autorisé à appeler leAPI de déchiffrementsur leAWS KMS keysque vous spécifiez. Pour de plus amples informations, veuillez consulterAuthentification et contrôle d'accès pourAWS KMS.
À titre de bonne pratique, cet exemple utilise le--max-encrypted-data-keys
pour éviter de déchiffrer un message mal formé avec un nombre excessif de clés de données chiffrées. Même si cet exemple utilise une seule clé d'encapsulation pour le déchiffrement, le message chiffré comporte trois (3) clés de données chiffrées, une pour chacune des trois clés d'encapsulation utilisées lors du chiffrement. Spécifiez le nombre attendu de clés de données chiffrées ou une valeur maximale raisonnable, par exemple 5. Si vous spécifiez une valeur maximale inférieure à 3, la commande échoue. Pour plus d'informations, consultez Limiter les clés de données chiffrées.
Chiffrement et déchiffrement dans les scripts
Cet exemple vous montre comment utiliser l'AWSCLI de chiffrement dans les scripts. Vous pouvez écrire des scripts qui chiffrent et déchiffrent simplement les données, ou des scripts qui effectuent des chiffrements ou des déchiffrements dans le cadre d'un processus de gestion des données.
Dans cet exemple, le script récupère une collection de fichiers journaux, les compresse, chiffre, puis copie les fichiers chiffrés dans un compartiment Amazon S3. Ce script traite chaque fichier séparément. Vous pouvez ainsi les déchiffrer et les développer de manière indépendante.
Lorsque vous compressez et chiffrez les fichiers, assurez-vous d'effectuer la compression avant le chiffrement. Les données correctement chiffrées ne sont pas compressibles.
Avertissement
Soyez prudent lorsque vous compressez des données qui incluent à la fois des secrets et des données pouvant être contrôlées par un utilisateur malveillant. La taille finale des données compressées peut révéler par inadvertance des informations sensibles sur son contenu.
Utilisation de la mise en cache des clés de données
Cet exemple utilise la mise en cache des clés de données dans une commande qui chiffre un grand nombre de fichiers.
Par défaut, leAWSCLI de chiffrement (et autres versions de laAWS Encryption SDK) génère une clé de données unique pour chaque fichier qu'il chiffre. Bien que l'utilisation d'une clé de données unique pour chaque opération est une bonne pratique de chiffrement, la réutilisation limitée des clés de données est acceptable dans certaines situations. Si vous envisagez de mettre en cache des clés de données, contactez un ingénieur sécurité afin de comprendre les exigences de sécurité de votre application et déterminer les seuils de sécurité qui vous conviennent le mieux.
Dans cet exemple, la mise en cache des clés de données accélère l'opération de chiffrement en réduisant la fréquence des demandes auprès du fournisseur de clés principales.
La commande de cet exemple chiffre un grand répertoire avec plusieurs sous-répertoires qui contiennent un total d'environ 800 petits fichiers journaux. La première commande enregistre l'ARN de la AWS KMS key dans une variable keyARN
. La deuxième commande chiffre tous les fichiers du répertoire d'entrée (de façon récursive) et les écrit dans un répertoire d'archivage. La commande utilise le paramètre --suffix
pour spécifier le suffixe .archive
.
Le paramètre --caching
permet la mise en cache des clés de données. L'attribut capacity, qui limite le nombre de clés de données dans le cache, est défini sur 1, car le traitement de fichiers en série n'utilise jamais plus d'une clé de données à la fois. L'attribut max_age, qui détermine la durée pendant laquelle la clé de données mise en cache peut être utilisée, est défini sur 10 secondes.
L'attribut max_messages_encrypted facultatif est défini sur 10 messages. Par conséquent, une même clé de données n'est jamais utilisée pour chiffrer plus de 10 fichiers. Le fait de limiter le nombre de fichiers chiffrés par chaque clé de données réduit le nombre de fichiers qui seraient touchés dans le cas peu probable où une clé de données serait compromise.
Pour exécuter cette commande sur les fichiers journaux générés par votre système d'exploitation, vous pouvez avoir besoin d'autorisations d'administrateur (sudo
dans Linux et Exécuter en tant qu'administrateur dans Windows).
Pour tester l'effet de la mise en cache des clés de données, cet exemple utilise l'Commande mesure
PS C:\>
Measure-Command {aws-encryption-cli --encrypt ` --input C:\Windows\Logs --recursive ` --output $home\Archive --suffix '.archive' ` --wrapping-keys key=$keyARN ` --encryption-context class=log ` --suppress-metadata }
Days : 0 Hours : 0 Minutes : 0 Seconds : 25 Milliseconds : 453 Ticks : 254531202 TotalDays : 0.000294596298611111 TotalHours : 0.00707031116666667 TotalMinutes : 0.42421867 TotalSeconds : 25.4531202 TotalMilliseconds : 25453.1202
La mise en cache des clés de données accélère le processus, même lorsque vous limitez chaque clé de données à un maximum de 10 fichiers. L'exécution de la commande dure désormais moins de 12 secondes et réduit le nombre d'appels au fournisseur de clés principales à 1/10 de la valeur d'origine.
PS C:\>
Measure-Command {aws-encryption-cli --encrypt ` --input C:\Windows\Logs --recursive ` --output $home\Archive --suffix '.archive' ` --wrapping-keys key=$keyARN ` --encryption-context class=log ` --suppress-metadata ` --caching capacity=1 max_age=10 max_messages_encrypted=10}
Days : 0 Hours : 0 Minutes : 0 Seconds : 11 Milliseconds : 813 Ticks : 118132640 TotalDays : 0.000136727592592593 TotalHours : 0.00328146222222222 TotalMinutes : 0.196887733333333 TotalSeconds : 11.813264 TotalMilliseconds : 11813.264
Si vous supprimez la restriction max_messages_encrypted
, tous les fichiers sont chiffrés sous la même clé de données. Ce changement augmente le risque de réutilisation des clés de données sans réellement accélérer le processus. Cependant, cela réduit le nombre d'appels au fournisseur de clés principales à 1.
PS C:\>
Measure-Command {aws-encryption-cli --encrypt ` --input C:\Windows\Logs --recursive ` --output $home\Archive --suffix '.archive' ` --wrapping-keys key=$keyARN ` --encryption-context class=log ` --suppress-metadata ` --caching capacity=1 max_age=10}
Days : 0 Hours : 0 Minutes : 0 Seconds : 10 Milliseconds : 252 Ticks : 102523367 TotalDays : 0.000118661304398148 TotalHours : 0.00284787130555556 TotalMinutes : 0.170872278333333 TotalSeconds : 10.2523367 TotalMilliseconds : 10252.3367