Deux clefs pub similaires pointent vers le même compte membre en attente

,

Voir sur le sujet original

Une transaction de 17G1 a été dépensée par le compte émetteur (ça apparaît dans son historique BMA), mais n’apparaît pas dans l’historique du compte récepteur, ni dans ses sources.

  • emetteur : CB9T7831y9NFQ2pwdueso7N9LYFsEqhKqwe2NKb7qHVj // Filoulibre
  • recepteur : 4ppWsXtJ9Vyq6dLntQMb3FZzbvcK69mz64w8NJkjN1Rm // Florence

L’affichage de Cesium n’est pas le même pour la transaction concernée et pour les suivantes (le pseudo du compte apparaît pour les suivantes).

C’est la transaction contenue dans ce bloc, hash de la tx :

43571FECE0536A08B430E2F75B43BD6E51F62A0FA6F8F97FC771484FFA1BE67C

1 J'aime

4ppWsXtJ9Vyq6dLntQMb3FZzbvcK69mz64w8NJkjN1Rm
4ppWsXtJ9Vyq6dLntQMb3FZzbvcK69mz64w8NJKjN1Rm

3 J'aimes

Très juste !

Du coup, ça devient un bug de cesium, lequel renvoie sur le compte de Florence : 4ppWsXtJ9Vyq6dLntQMb3FZzbvcK69mz64w8NJkjN1Rm

alors qu’on veut aller sur le compte : 4ppWsXtJ9Vyq6dLntQMb3FZzbvcK69mz64w8NJKjN1Rm (essayez avec la recherche de clef publique, ou dans l’historique de tx de Filoulibre.)

Bug confirmé sur GTest :

Claude (en attente de certif) - 6upqFiJ66WV6N3bPc8x8y7rXT3syqKRmwnVyunCtEj7o
Si je cherche la clef pub 6upqFiJ66WV6N3bPc8x8y7rXT3syqKRmwnVyuNCtEj7o, Cesium me propose le compte de Claude.


C’est le deuxième cas de faute de frappe que j’observe en deux jours. Je vais me mettre à utiliser des checksum :sweat_smile:

3 J'aimes

Si l’entrée est une clé publique valide entière, alors la recherche devrait être sensible à la casse, et le compte correspondant exactement à la recherche devrait sortir en premier, avec un message du type « comptes avec une clé publique similaire », suivi des comptes existants avec une clé publique ressemblante. Si la recherche est un morceau de clé publique valide, le même comportement devrait arriver (clés publiques contenant exactement le morceau, puis message, puis clés publiques contenant un morceau similaire).

Un autre problème est que les non-membres en attente de certif n’ont pas la mention rouge « non membre » dans l’annuaire.

1 J'aime

Duniter/BMA wot/lookup est insensible à la casse. Aux clients BMA de faire attention à vérifier que c’est la bonne clé publique (égalité avec casse incluse).

Requête avec un K clé sans identité attachée et j’obtiens la clé avec un k où l’identité est rattachée :

curl https://g1.dunier.org/wot/lookup/4ppWsXtJ9Vyq6dLntQMb3FZzbvcK69mz64w8NJKjN1Rm
{
  "partial": false,
  "results": [
    {
      "pubkey": "4ppWsXtJ9Vyq6dLntQMb3FZzbvcK69mz64w8NJkjN1Rm",
      "uids": [
        {
          "uid": "Florence",
          "meta": {
            "timestamp": "338625-0000002C16AB1EC1FF25F0A45C08097DB334DC9948BEBF175381C77B380F42DF"
          },
          "revoked": false,
          "revoked_on": null,
          "revocation_sig": null,
          "self": "0W3aJagqAMtzZVa8TNm9xkal5fUZDZVVZN5O/dsz7CK6R0JS+GESNk5U0/xHFlhlLzt6EA2As7+jd6dSMQUHDA==",
          "others": [
            {
              "pubkey": "52ZuXdshcJ9fynFPjzJenEcPrdYbHZzajBeqUNuoYvDg",
              "meta": {
                "block_number": 338659,
                "block_hash": "00000011DE92F5AF90AD8F6CC67683FDF19AECED312A0E83F9C3B6309290EEF7"
              },
              "uids": [
                "LolieRu"
              ],
              "isMember": true,
              "wasMember": true,
              "signature": "ugx3BOEpQLZ/sgHU7kB7y0sYKHleFGC6c7ud5fPu6XmsjsahsCakk3nhTRKKEkmgMGm3YzpvFQkMiEKA/EY0Aw=="
            },
            {
              "pubkey": "4YW4Ny3UnkUESsjLdJ2KFAaYCKZqRDYpkVcF2kj6ma4x",
              "meta": {
                "block_number": 338746,
                "block_hash": "000000232AAA57EAA502539C760F652CF3F49AA88D17F524E9C10EE10B4A46B2"
              },
              "uids": [
                "Fleur-du-renouveau"
              ],
              "isMember": true,
              "wasMember": true,
              "signature": "Xs8V0DttKxvh5QBpJvfBX030LDAFUdT8klFeKkWaRoEQHT6emp2DVOLThhaQO1Yh8Nbt/jW3hFykcDInwCP3Bw=="
            },
            {
              "pubkey": "3sk87bjQmvpjEPCsVjby37qwdTtNMd8xQoqKeDL2Hz5k",
              "meta": {
                "block_number": 339292,
                "block_hash": "0000000B26ED864DEFE2146C2E6984E8CACF205CABFE7164C1BE68D2DB9ACA34"
              },
              "uids": [
                "Puce"
              ],
              "isMember": true,
              "wasMember": true,
              "signature": "2hJgXsqI76nCMzUysZ3Jkml8zexI1GR414xN04gSvaMOFeR/MaPy2YqjlYPQ3k3ukb0fYc6IKP57W3Or9K+FAA=="
            },
            {
              "pubkey": "FpUuRppFUiScrb2BM9v8uGJGBjCrEteZTWggD7HV8bNT",
              "meta": {
                "block_number": 339620,
                "block_hash": "0000001DB06FE62C0952CEEB4A73C6C0A5D92D5B33886E4C97452DADF1D50E02"
              },
              "uids": [
                "borealain"
              ],
              "isMember": true,
              "wasMember": true,
              "signature": "kmfgH4q970QxDBPJc1HWiAVvOs764BfDBuCaTniYdMvRer4YwvYE+0QZyklfmXDQIfK05MkjHK38YSRcAq0SBQ=="
            }
          ]
        }
      ],
      "signed": []
    }
  ]
}
2 J'aimes

Si ça ne vous fait rien, GVA sera sensible a la casse :slight_smile:

3 J'aimes

ce que j’ai compris… c’est un sujet de qlq qui n’a pas coupé/collé le cle public (ou peut etre oui et apres a edité avec un mauvaise manipulation?)

Je vois sur Sakia, la capacité de copier QUE le cle public et aussi a copier le cle public avec CRC.

Si tlm utilise le QR code, il y a deja « error-correction » et moins de chance d’un mauvaise manipulation par l’utilisateur. Mais, d’utiliser base58 au lieu de base64 (ou un autre plus compacte) pour le cle public, j’assume qu’il y a, au debut, l’intention pour l’utilisateur a enrigistrer par main sur papier ensuite a taper le clé public avec le clavier

Si il n’ya a pas des discusions historique pour ne pas incluire « error-detection » par defaut…est-ce que peut etre une bonne idée de visioner un moment dans le future ou silkaj/sakia/cesium et meme duniter utilisent par default des expressions d’un cle public toujours avec CRC? (style sakia cle public avec CRC… ou c’est facile d’intentifier grace a « : » apres le cle public)?

-spencer

1 J'aime

Oui, suite à ces deux cas de transactions perdues, je pense que l’affichage <pubkey>:<checksum> devrait devenir un comportement par défaut de tous les clients Duniter.

Les trois clients gèrent le fait d’entrer les clefs pub avec le checksum, il y a un peu de modif à faire pour l’affichage.

Cesium et la future version de Silkaj utilisent le séparateur :, je crois que Sakia également, donc il ne derait pas y avoir de souci ?

3 J'aimes

En cherchant comment implémenter la vérification du checksum dans ĞMixer (je me suis basé sur le code de Silkaj) j’ai remarqué qu’il ne semblait pas permettre d’afficher le checksum. Une recherche rapide dans le code de Sakia n’a rien donné non plus, et je ne vois rien dans Cesium.

Je viens de l’implémenter dans natools, chaque pubkey entrée est vérifiée et on peut avoir le checksum d’une clé :

$ python3 natools.py pk -c -p AoxVA41dGL2s4ogMNdbCw3FFYjFo5FPK36LuiW1tjGbG
AoxVA41dGL2s4ogMNdbCw3FFYjFo5FPK36LuiW1tjGbG:6iV
2 J'aimes

Avec tout ça, 17 June ont été débité d’un compte qui sont arrivé à un endroit bien identifié mais pas visible par le destinataire.
Qui peut déplacer cette somme vers la bonne désignation du compte destinataire ?

Personne d’autre que le propriétaire du compte qui a reçu les Junes. Si une faute de frappe a envoyé les Junes vers un compte au hasard, vous pouvez considérer ces Junes comme perdues. Désolé, mais dans la June, vous êtes responsables de vos Junes, il n’y a pas un tiers qui peut corriger vos erreurs en ayant accès à tous les comptes. Ce qui, quand on y pense, est un pouvoir bien trop fort qui renforce le besoin d’utiliser la June.

Dans la June, vous seul avez le pouvoir sur vos compte, pour simplifier : les clefs de vos coffre-fort. Et un grand pouvoir nécessite de grandes responsabilités, comme ne pas perdre ses clefs (sinon le compte est inaccessible à jamais) et ne pas envoyer de June sur un numéro de compte non vérifié.

Pour vérifier un numéro de compte, envoyez une June dessus et demandez à son propriétaire de vous la renvoyer. S’il y a un problème comme ici, alors on recommence avec le vrai numéro de compte et si la June est renvoyée on envoie la somme convenue.

Les logiciels clients doivent harmoniser la façon dont ils affichent les numéros de compte (si possible le numéro suivi par :xxx où xxx est une empreinte du numéro de compte qui permet de voir rapidement si le numéro est bien sans erreur de frappe). Un chantier pour la rentrée ! :grin:

5 J'aimes