Valider les clés des autres dans votre trousseau de clés publique

Dans le chapitre 1 nous avons donné une procédure pour valider les clés publiques de vos correspondants : la clé publique d'un correspondant est validée en vérifiant personnellement l'empreinte de sa clé et en signant ensuite sa clé publique avec votre clé privée. En vérifiant personnellement l'empreinte vous pouvez être sûr que la clé lui appartient vraiment, et comme vous avez signé la clé, vous pouvez être sûr de détecter toute modification dans le futur. Malheureusement, cette procédure est ingrate quand vous devez valider un grand nombre de clés ou quand vous devez communiquer avec des gens que vous ne connaissez pas personnellement.

GnuPG tente de résoudre ce problème avec un mécanisme connu sous le nom de toile de confiance[1]. Dans le modèle de la toile de confiance, la responsabilité pour valider les clés publiques est déléguée aux personnes en qui vous avez confiance. Par exemple, supposons que

Si Alice fait suffisamment confiance à Blake pour valider les clés qu'il signe, alors Alice considérera que les clés de Chloé et Dharma sont valides sans les avoir personnellement vérifiées. Elle utilise simplement sa copie validée de la clé publique de Blake, pour vérifier que les signatures faites par Blake sur les clés de Chloé et Dharma sont bonnes. En général, si on suppose qu'Alice fait confiance à tout le monde pour valider les clés qu'ils signent, alors toute clé signée par une clé valide est aussi considérée comme valide. La racine est la clé d'Alice, qui est considérée comme valide de manière axiomatique.

Confiance dans le propriétaire d'une clé

En pratique, la notion de confiance est subjective. Par exemple, la clé de Blake est valide pour Alice car elle l'a signée, mais elle peut aussi ne pas faire confiance à Blake pour valider les clés qu'il signe. Dans ce cas, elle ne considérera pas les clés de Chloé est de Dharma comme valides en se basant seulement sur la signature de Blake. Le modèle de toile de confiance prend ceci en compte en associant à chaque clé publique de votre trousseau une indication sur la manière dont vous faites confiance au propriétaire de la clé. Il y a quatre niveaux de confiance.

unknown

On ne sait rien sur la façon dont le propriétaire signe les clés. Les clés de votre trousseau de clés publiques ont par défaut ce niveau de confiance.

none

On sait que le propriétaire ne vérifie pas consciencieusement les clés avant de les signer.

marginal

Le propriétaire comprend l'implication de la signature des clés et valide les clés avant de les signer.

full

Le propriétaire comprend complètement les implications de la signature des clés, et sa signature sur une clé aurait la même valeur que votre signature.

Le niveau de confiance sur une clé est une chose personnelle que vous attribuez. Cette information est considérée comme privée. Ce n'est pas empaqueté avec la clé lorsque vous l'exportez ; elle est même enregistrée séparément de vos trousseaux, dans une base de donnée distincte.

L'éditeur de clés de GnuPG peut être utilisé pour définir le niveau de confiance que vous avez dans le propriétaire d'une clé. La commande trust est utilisée pour ce faire. Dans cet exemple, Alice édite le niveau de confiance qu'elle a en Blake et ensuite elle met à jour la base de données de confiance pour recalculer quelles clés sont valides en se basant sur le nouveau niveau de confiance assigné à Blake.

alice% gpg --edit-key blake

pub  1024D/8B927C8A  created: 1999-07-02 expires: never      trust: q/f
sub  1024g/C19EA233  created: 1999-07-02 expires: never
(1)  Blake (Executioner) <blake@cyb.org>

Command> trust
pub  1024D/8B927C8A  created: 1999-07-02 expires: never      trust: q/f
sub  1024g/C19EA233  created: 1999-07-02 expires: never
(1)  Blake (Executioner) <blake@cyb.org>

Please decide how far you trust this user to correctly
verify other users' keys (by looking at passports,
checking fingerprints from different sources...)?

 1 = Don't know
 2 = I do NOT trust
 3 = I trust marginally
 4 = I trust fully
 s = please show me more information
 m = back to the main menu

Your decision? 3

pub  1024D/8B927C8A  created: 1999-07-02 expires: never      trust: m/f
sub  1024g/C19EA233  created: 1999-07-02 expires: never
(1)  Blake (Executioner) <blake@cyb.org>

Command> quit
[...]

Le niveau de confiance dans le propriétaire de la clé et la validité de la clé sont indiqués à droite quand le clé est affichée. La confiance dans le propriétaire est affichée en premier et la validité de la clé est affichée ensuite[2]. Les quatre niveaux utilisés pour spécifier la confiance et la validité sont : unknown (q), none (n), marginal (m), et full (f). Dans ce cas, la clé de Blake est complètement valide car Alice l'a signée elle-même. Initialement la confiance accordée à Blake pour signer la clé des autres était non déterminée, mais elle a décidé de lui faire marginalement confiance.

Utiliser la confiance pour valider les clés

La toile de confiance autorise l'élaboration d'algorithmes plus élaborés pour valider une clé. Précédemment, une clé était considérée comme valide si vous l'aviez signée personnellement. Un algorithme plus flexible peut maintenant être utilisé : une clé K est considérée comme valide si elle remplit deux conditions :

  1. elle est signée par suffisamment de clés valides, c'est-à-dire si

    • vous l'avez signée personnellement

    • elle a été signée par une clé à laquelle vous accordez toute votre confiance

    • elle a été signée par trois clés auxquelles vous accordez une confiance marginale

  2. le chemin des clés signées conduisant de K jusqu'à votre propre clé mesure moins de cinq étapes.

La longueur du chemin, le nombre de clés auxquelles vous accordez une confiance marginale, et le nombre de clés auxquelles vous accordez une confiance totale nécessaire peuvent être modifiés. Les valeurs données ci-dessus sont les valeurs par défaut utilisées par GnuPG.

Figure 3-1 montre un exemple de toile de confiance dont Alice est la racine. Le graphe illustre qui a signé les clés de qui. Le tableau montre quelles clés Alice considère comme valides en se basant sur le niveau de confiance qu'elle accorde aux autres membres de la toile. L'exemple considère que deux clés auxquelles on fait marginalement confiance et une en laquelle on a totalement confiance sont nécessaires pour valider une autre clé. La longueur maximum du chemin est fixée à trois.

Dans cet exemple, les clés de Blake et de Dharma sont toujours considérées comme valides, car elles sont signées directement avec la clé d'Alice. La validité des autres clés dépend de la confiance. Dans le premier cas, Alice a complètement confiance en Dharma, ce qui entraîne que les clés de Chloé et de Francis sont considérées comme valides. Dans le second exemple, Alice fait marginalement confiance à Blake et à Dharma. Étant donné que deux clés auxquelles on a marginalement confiance sont nécessaires pour valider une clé, celle de Chloé sera considérée comme pleinement valide, mais celle de Francis sera considérée comme marginalement valide. Dans le cas où on a marginalement confiance dans les clés de Chloé et de Dharma, celle de Chloé sera marginalement valide car celle de Dharma est pleinement valide. Toutefois, la clé de Francis sera considérée comme marginalement valide, car seule une clé valide peut être utilisée pour valider les autres clés, et la celle de Dharma est la seule clé pleinement valide utilisée pour signer la clé de Francis. Si de plus on ajoute une confiance marginale dans la clé de Blake, la clé de Chloé devient pleinement valide, et elle peut être utilisée pour valider pleinement la clé de Francis et valider marginalement la clé de Elena. Pour finir, même si on a pleinement confiance dans les clés de Blake, Chloé et Elena, çà ne suffit pas pour valider la clé de Geoff, car la longueur maximum du chemin pour valider une clé est de trois, alors que la longueur du chemin allant de la clé de Geoff jusqu'à celle d'Alice est de quatre.

Le modèle de toile de confiance est une approche flexible du problème de l'échange sécurisé de données avec des clés publiques. Il vous permet de personnaliser GnuPG pour vos besoins personnels. D'un côté, vous pouvez insister sur de multiples chemins courts allant de votre clé jusqu'à une autre clé K pour la valider. D'un autre côté, vous pouvez être satisfait par des chemins plus longs et même par un seul chemin allant de votre clé jusqu'à l'autre clé K. Demander de nombreux chemins courts est une forte garantie que la clé K appartient bien à celui à qui vous pensez qu'elle appartient. Ceci a un prix : il est plus difficile de valider les clés car vous devez signer plus de clés que si vous acceptiez de moins nombreux chemins, et de plus courts chemins.

confiancevalidité
marginalecomplètemarginalecomplète
 Dharma Blake, Chloé, Dharma, Francis
Blake, Dharma FrancisBlake, Chloé, Dharma
Chloé, Dharma Chloé, FrancisBlake, Dharma
Blake, Chloé, Dharma ElenaBlake, Chloé, Dharma, Francis
 Blake, Chloé, Elena Blake, Chloé, Elena, Francis

Figure 3-1. Un exemple de toile de confiance

Notes

[1]

ndt : en anglais Web Of Trust

[2]

GnuPG utilise le mot ``trust'' pour signifier la confiance dans le propriétaire et la confiance dans la clé. Ceci peut être la source de confusion. Parfois la confiance dans le propriétaire est appelée owner-trust pour marquer la différence avec la confiance dans la clé. Dans ce manuel, ``confiance'' est utilisé pour signifier la confiance dans le propriétaire de la clé, et ``validité'' est utilisé pour signifier le fait que la clé appartient vraiment à la personne associée avec l'identifiant d'utilisateur de la clé.