Comment contrôler complètement l'autorisation de lecture des données sur blockchain

Blockchain base camp 2021-11-25 08:09:47 阅读数:314

comment contr ler compl tement

‍‍

c844cf62db46b026e2fb9538a6def20e.gif

Source: |  FISCO BCOSOpen Source Community

Responsabilité | Carol

873b15ee27efe09288d23a77932ecdc8.png

On pose souvent une question:“Comment réaliser l'autorisation de lecture des données sur la chaîne dans le contrat?”

Derrière ce besoin,Ce sont les développeurs qui veulent enchaîner des données,Permettre une gestion et un calcul intelligents des contrats,Pour parvenir à un consensus commercial,Mais ne veulent pas que les données soient rendues publiques,Évitez que d'autres participants non autorisés de la chaîne lisent,La divulgation d'informations.

La façon la plus intuitive de réaliser,C'est écrire une logique de filtre dans le Code du contrat,Juger que l'appelant remplit certaines conditions(Comme sur la liste blanche)Pour permettre le retour de données,Sinon, refuser.

32c9e684de03f220c1895d0ca9720400.png

Nous avons créé un cas:Il y a une chaîne d'alliance intégrale,Les participants à la chaîne ont:Alice、Bob、Carl、DaveEt leurs familles.,Le solde des points de chaque personne veut être fixé seulement visible pour elle - même et sa famille,Autres participants non visibles.

Le client via l'interface au niveau de l'application de blockchain,Envoyer une demande à un noeud,Appeler un contrat intelligentgetRecherche méthodologiqueBobIntégrale de,Le contrat intelligent écrit la logique de contrôle des droits,Refuser l'accès ultra vires.

Parce que la logique de fonctionnement du contrat intelligent est cohérente sur chaque noeud,Donc, quel que soit le noeud auquel la demande est envoyée,Les résultats sont les mêmes..Ça semble aller.,Mais est - ce vrai??

Voici la conclusion.:C'est un“Guérir les symptômes mais pas les causes profondes”La pratique de,EtJe ne peux pasVeiller à ce que les données ne soient pas compromises.

0856acaa7e5be83a834220d286ffb793.png

À partir de maintenant, nous allons utiliser“Multicentrique、Pour faire confiance”L'idée de réexaminer l'affaire.

Analysons d'abord:Comment les données sont stockées sur la chaîne?Dans quelles circonstances cela pourrait - il être divulgué??

Les noeuds du réseau blockchain sont distribués dans les environnements des différents acteurs,Pour les caractéristiques de cohérence des données de blockchain,Chaque noeud détient une copie complète des données.Que cette base de données soitLevelDB/RocksDBUne telle base de données de type fichier,ToujoursMysqlUne telle base de données relationnelle,Les données tombent dans l'Instance de base de données de chaque noeud.

C'est - à - direBobSolde intégral,Une copie a été sauvegardée sur tous les disques durs du noeud,InMySQLRegardez dans l'outil de base de données,C'est comme ça.:

b4a68a6a2ec4833f2598b5d2647bb410.png

Si la chaîne(Faible probabilité)Il y a un participant qui a un peu d'expérience dans la technologie blockchain,Je l'ai dans mes bras.“Malice”(C'est ce qu'on appelleJoueur byzantin),Il peut ouvrir la base de données locale avec des outils,Requête directeBobSolde.Voilà.,La logique de contrôle du contrat pour empêcher la divulgation des données est complètement contournée.C'est si simple..

7998dae241bd7dc248bec038c1f71efd.png

En plus,Les données de blockchain ne sont pas seulement liées au contrat,Est également étroitement lié aux transactions.

Lors de l'envoi de la transaction,Les paramètres de transaction peuvent contenir une partie ou la totalité des données(Par exemple:AliceVoilà.BobTransfert100),La Foire est emballée dans le bloc,Enfin, il est écrit dans la base de données des noeuds.

Les demandes de données sur les blocs et les transactions ne sont généralement pas réalisées par logique contractuelle,Et donc,,La simple écriture d'une logique de filtrage dans un contrat n'empêche pas la lecture de ces données.Les joueurs byzantins peuvent parcourir les données de bloc dans la base de données locale,Obtenir les détails de l'historique de la transaction,Lecture des flux commerciaux du début à la fin,J'ai appris que maintenantBobLe solde de300.

5e3cb953f6a2004e241fad7c3a6acd0a.png

De toute la pile technologique,Les joueurs byzantins utilisent des outils pour accéder aux données locales、Traverser les blocs et les transactions est un peu ennuyeux,Il peut même modifier le Code du système blockchain,Depuis l'interface réseau blockchain、Mémoire du programme、Moteur de contrat intelligent,Du paquet、Bloc、Flux commerciaux、Contexte contractuel、Les liens tels que les données d'état reniflent et interceptent les données en texte clair,Même si la chute de données est chiffrée,La clé est également entre les mains du détenteur du noeud,Il peut se détacher comme ça..

Alors...,Commencez par le code sous - jacent de blockchain pour contrôler l'accès aux données,Ça ne sert à rien.,Après tout, le Code Open Source,Tout le monde peut changer.,Comme dit le proverbe::“Les méchants connaissent les arts martiaux.,Personne ne peut l'arrêter.”,Et technique“Les méchants.”C'est tout.、On ne peut pas se défendre..

En dernier analyse,Blockchain Emphasis“Partager”Et“Cohérence”,Tant que les données en texte clair sont diffusées sur la chaîne,D'autres ont d'innombrables façons d'obtenir.Que ce soit au niveau du contrat ou du Code sous - jacent,Presque toute la logique de contrôle de lecture est commePapier de fenêtreUn coup, c'est cassé.,CommeLigne MaginotComme si c'était faux..

9119665ee85d226ba00138c21b609ee6.png

Regarde ça.,Quelqu'un pourrait demander:Lire les données est si peu défensif,Le blockchain“Écris.”La permission a - t - elle un sens??La réponse est oui.:Oui..

Retour à l'exemple intégral,Nous avons fixéAliceC'est l'Administrateur des points.,Pour qu'elle puisse commencer à échanger des points de transfert,Et puisBobEt n'accepte queAliceDonne - toi des points..Les transactions de transfert de points doivent faire l'objet d'un consensus à l'échelle du réseau,Tous les noeuds de consensus vérifient les règles écrites dans le contrat,Refuser de signer en cas de non - conformité,Il n'y a pas de consensus sur les transactions ultra vires,Les données ne seront pas modifiées.

Même avec un petit nombre de noeuds byzantins,Peu importe ce qui se passe sur le noeud local,Il ne peut pas non plus falsifier les données de l'ensemble du réseau.

“Écris.”Recherche d'un consensus,Donc les clients font des transactions(sendTransactionOusendRawTransaction)Heure,Pour signer numériquement,Signature de vérification du système blockchain,Confirmer quel compte externe a envoyé la transaction,Un contrôle strict et une traçabilité précise peuvent être effectués.

“Lire”L'opération met davantage l'accent sur le partage,Lire les données n'est pas vraiment un processus consensuel,Retournez les données à vos propres noeuds.En général, le système blockchain lit l'interface(call)Pas besoin de remplir strictement l'expéditeur,Pas besoin de signer numériquement,Alors...,Juger les comptes extérieurs dans la lecture des contrats,En fait, c'est invalide.

d0701b961c6f42b32b13e7d5297d3e0e.png

Synthèse de toutes les analyses ci - dessus,On peut en tirer des conclusions.:La mise en œuvre du contrôle de lecture sur la chaîne n'est pas simple.

Si la logique de contrôle de lecture n'est pas suffisamment prise en compte,Alors l'effet sera:Vous lisez les données sur votre propre noeud pour tester la validation,On dirait.OK,Tu crois que les années sont calmes?,Mais je ne savais pas que chez un joueur byzantin,Les données ont été retournées au ciel..

Compte tenu de la démutualisation dans la collaboration multipartite,Poursuite du partage des données、Public、Orientation transparente,En général,Si c'est critique、Données sensibles non divulguées,Attention à la chaîne.,Enchaînable,Ça doit être ce que tout le monde a convenu de partager“Diviseur commun maximal”.

En fait, de nombreux systèmes blockchain, tels que les transactions et les soldes, sont visibles à l'échelle du réseau,Soi - disant anonymat ou Confidentialité,Il suffit de remplacer les comptes en clair par des systèmes de clés et d'adresses publics et privés,À ce niveau“Anonyme”,Dans un modèle d'entreprise complexe et mettant l'accent sur la protection complète de la vie privée、Non applicable dans des domaines tels que les affaires gouvernementales.

Alors, qu'avons - nous d'autre à faire?,Le partage、Transparence、Ouvert en même temps,Contrôler correctement la visibilité des données?

La première idée estCombinaison avec la gouvernance hors chaîne,Limites convenues des droits de responsabilité.Je suis sous contrat.、Conception et mise en oeuvre de l'autorité au niveau de l'interface,Garantie de ne pas divulguer de données dans mon système d'affaires,Ma couche d'application blockchain、Afficher l'interface、Déclaration、Log、La base de données et d'autres liens ne sont pas accessibles au - delà des droits,Éliminer mes risques opérationnels internes.

Quant aux noeuds des autres,Je n'y peux rien.,C'est leur responsabilité.,Qui divulgue des données abusives?,Qui sera puni?(Obtention de preuves、C'est difficile à prouver.).Cette logique est en fait un peu“Neige avant chaque balayage”Ça veut dire,Dans ce mode,Mes données sensibles ne peuvent toujours pas être enchaînées à quelqu'un d'autre.

La deuxième idée estIntroduction de la cryptographie.Voici quelques exemples.

Chiffrement asymétrique:Les données enchaînées sont chiffrées avec la clé publique du destinataire,Alors seul le destinataire peut déverrouiller avec sa propre clé privée.

Enveloppe cryptographique:Les données de liaison montante sont chiffrées par un mot de passe,Le mot de passe est transmis au récepteur par un canal hors chaîne,Seul le destinataire qui connaît le mot de passe peut décrypter.

Chiffrement des attributs:Les données sont chiffrées à l'aide d'un algorithme de chiffrement des attributs,Correspond aux propriétés spécifiées(Si l'attribut administrateur est disponible)Pour déchiffrer.La considération de ces scénarios est l'arithmétique、Transmission、Les frais généraux de stockage sont un peu plus élevés,En outre, les données chiffrées ne supportent pas les opérations en texte clair,Difficile de mettre en œuvre une logique complexe de contrat d'affaires.Notez également que,Même si c'est dense.,Essentiellement, toutes les informations sur les données sont liées,Au fil du temps,Capacité de calcul et algorithmes(Comme le Code quantique)Evolution de,Il y a un risque de craquage violent.,Ou parce que la clé fuit/C'est trop facile à deviner.,Les données de la chaîne ne peuvent pas être retirées,Il y a un risque d'être annoncé..

La troisième idée estRésumé chaîne supérieure seulement,Le texte clair des données n'est pas lié du tout.

En fait...,Le rôle de blockchain n'est pas nécessairement de saisir pleinement les données et d'appliquer des règles commerciales complexes,Mais grâce à la crédibilité de nombreux témoins,Vérifier l'exactitude des données、Intégrité,Et il joue un rôle de dépôt et de traçage,En fait, beaucoup de systèmes blockchain à ce stade sont principalement une telle logique,Objectivement capable d'ancrer la confiance.

Si vous avez besoin de données en texte clair,Les données sont ensuite extraites du système hors chaîne par l'information d'adressage dans le résumé,Faites un contrôle d'accès fin à ce lien,Et vérifier mutuellement avec le résumé en chaîne.

Mais...,Les données ne sont pas liées ou un peu réticentes,Blockchain est un concept si innovant,Les contrats intelligents sont si puissants,Comment en tirer le meilleur parti??

C'est tout.Calcul de la confidentialitéC'est,Y compris, sans s'y limiter, la preuve de connaissances nulles、Cryptage homomorphe、Calcul multipartite sécurisé、Une série d'armes lourdes comme l'apprentissage fédéral,Des données secrètes.、En même temps que l'identité,Effectuer le chiffrement des donnéesAddition, soustraction, multiplication et Division、Opérations logiques、Trier、Analyse statistique,On peut aller plus loin.“La réception est anonyme.,Audit de fond”Effets de,Pour se conformer aux exigences réglementaires en matière de conformité.Ceci est implémenté sur blockchain“Disponible non visible”Le sens ultime de.

Longueur limitée,Les détails du calcul de la confidentialité ne sont pas développés ici,Peut être référencéWeDPRScénario open source lié à la protection de la vie privée,En particulier dans plusieurs de ces scénarios,Par exemple:VCLBlockchain validable Cryptographic account Book,Peut être utilisé pour résoudre certains problèmes de confidentialité dans les cas de points mentionnés précédemment.

WeDPRScénario open source lié à la protection de la vie privée:

https://fintech.webank.com/wedpr/

VCLBlockchain validable Cryptographic account Book:

https://sandbox.webank.com/wedpr/confidentialpayment/#/start

a11726ed1300d84306173c272f4718dd.png

Conclusion

Je voulais juste parler.“Comment écrire les permissions de lecture du contrat”Un petit problème.,Ça s'est avéré long..

En fait, face à la programmation et au développement de blockchain,On ne peut vraiment pas penser comme écrire un logiciel autonome ou groupé,Il faut tenir pleinement compte de la participation de toutes les parties.、Relations de collaboration dans un environnement de confiance,Partager、Transparence、Sur la philosophie de base de la traçabilité,Se concentrer sur les demandes de protection de la vie privée,Peser l'importance et la sensibilité des données,Plus loin dans la pile technologique,Considérez l'efficacité et le coût des différents algorithmes、Combiner les risques et les avantages actuels et futurs pour choisir la bonne stratégie,Afin de protéger pleinement les données et la vie privée,Développer l'entreprise en toute sécurité,Protéger les droits et les intérêts des utilisateurs.

c17ee0d1bbf5f82e2e53b1820bd37477.gif










Lire plus recommandations
*La base de données s'écrase,Regarde Tencent.、Ali!、Comment faire les octets!
*Shakespeare nie être entré dans l'industrie de la vente à emporter;Google postAndroid 12Seuil matériel;IntelliJ IDEA 2021.3 EAP 4Publication|Les titres des geeks
*Pommes:iOS Que Android Plus sûr!
版权声明:本文为[Blockchain base camp]所创,转载请带上原文链接,感谢。 https://netfreeman.com/2021/11/20211125080449063j.html