Augmenter la sécurité de la WoT : proposition alternative
Suite à la publication des tickets #1222 (closed) et #1223 qui me semblent tout deux ne pas convenir pour des raisons exposés ci-après, voici ma propre proposition.
#1222 (closed) : Trop restrictif, moi-même j'ai 3 certifications en attente alors que je ne certifie que très peu et toujours en appliquant strictement la licence...
#1223 : Trop complexe pour l'utilisateur, ce nouveau rôle ne sera pas compris, déjà que la licence est mal comprise...
D'après moi, le besoin principal est de s'assurer que chaque certificateur sache qui sont les autres certificateurs avant de signer avant de pouvoir s'assurer que ceux ci ont bien appliquer la licence. La probabilité qu'aucun des 5 ne veille est très faible. Alors qu'avec le système actuel on ne peut pas veiller a moins d'être le dernier certificateur, et même dans ce cas là ont est pas a l’abri que de nouveaux certificateurs inconnus s'invitent plus tard.
Ma proposition est simple : le nouveau qui souhaite devenir membre choisi lui même 5 personnes ou plus (qu'il a éventuellement préalablement contacter ou dont il est certains que ses personnes sont suffisamment proches de lui pour le certifier). Le nouveau génère lui même sont document de certification dans lequel il inscrit les clés publiques de chacun de ses certificateurs, puis il transmet ce document a chacun de ses certificateurs par le canal de communication de son choix. Chaque certificateur peut renvoyer sa signature indépendamment des autres, pas besoin d'être synchro.
Chaque certificateur sait avant de signer pour quelle liste de certificateurs il signe, il peut donc contacter les autres certificateurs déclarés s'il les connait.
Cela demande de modifier un seul document, qui peut garder le comportement actuel pour les certifications internes :
Version: 11
Type: Certification
Currency: CURRENCY_NAME
issuersCount: NUMBER_OF_CERTIFIERS
Issuers:
- PUBLIC_KEY_CERTIFIER_1
- PUBLIC_KEY_CERTIFIER_2
IdtyIssuer: IDTY_ISSUER
IdtyUniqueID: USER_ID
IdtyTimestamp: BLOCK_UID
IdtySignature: IDTY_SIGNATURE
CertTimestamp: BLOCK_UID
CERTIFIER_1_SIGNATURE
CERTIFIER_2_SIGNATURE
...
Voilà c'est tout, et c'est simple a coder, 1 seul document contenant 5 certifications (ou +), et il ne sera accepter en piscine puis inscrit en blockchain que si tout les Issuers déclarés ont signés.
Cela allègera considérablement le nombre de document certification en piscine donc il est possible d'augmenter leur délai de validité. Pour ne pas changer les paramètres je propose de créer une constante MULTI_CERTIFIERS_FACTOR = 2
et de coder simplement que tout les documents certification valident qui comportent plusieurs issuers expireront au bout de MULTI_CERTIFIERS_FACTOR*sigWindow
secondes.
Ça laisse plus de temps au nouvel entrant pour obtenir le signatures de tout ses certificateurs, ce qui est une compensation acceptable vu le contrôle fortement renforcé. Avec ce nouveau type de document compatible avec l'ancien comportement (les single certifs), il est même possible de garder les 2 procédés en parallèle longtemps le temps que les clients suivent et que les utilisateurs changent leurs habitudes.
On garde un seul rôle : le certificateur point, pas de "validateur". On garde la possibilité d'émettre plusieurs certifications en attente. on est compatible avec le comportement actuel.
Je peut coder ça pour la 2.0 en même temps que les autres changements de protocole prévus dans le ticket #1207
Qu'en pensez vous ?