Eerst een beetje taalgebruik. A "bericht" is een communicatie-eenheid tussen twee of meer deelnemers aan een blockchain-netwerk. Het kan elk type gegevens bevatten en wordt vaak gebruikt om digitale goedkeuring van een gebruiker te krijgen.
A "transactie", aan de andere kant, is een specifiek type boodschap waarbij waarde van de ene deelnemer naar de andere wordt overgedragen. Het bevat meestal informatie zoals het adres van de afzender, het adres van de ontvanger, de hoeveelheid cryptocurrency die wordt overgedragen en een digitale handtekening die de autorisatie van de afzender voor de overdracht bewijst.
Gebruikers kunnen al tekentransacties wissen met hun Ledger-apparaten, zoals beschreven in dit bericht, en we hebben deze goede praktijk met dezelfde principes ook uitgebreid naar berichten. Hier leest u hoe.
Waarom ondertekenen we berichten in web3?
Blockchains zijn gebaseerd op “cryptografie met publieke sleutel”, waarbij gebruikers een openbare sleutel en een privésleutel bezitten, die een paar vormen. De openbare sleutel vertegenwoordigt de identiteit van de eigenaar en de privésleutel is geheim, waardoor deze kan bewijzen dat hij eigenaar is van het sleutelpaar.
Wanneer u een bericht ondertekent, gebruikt u uw privésleutel in het ondertekeningsalgoritme om een handtekening aan het bericht en de openbare sleutel te koppelen. Niemand kan uw privésleutel afleiden of een geldige handtekening voor u vervalsen. Iedereen die uw openbare sleutel kent, kan echter eenvoudig verifiëren dat het bericht is ondertekend met uw privésleutel.
Om een lang verhaal kort te maken: het is hetzelfde proces en hetzelfde idee als het ondertekenen van transacties, behalve dat we ons hier concentreren op het ondertekenen van berichten die een ander doel dienen: vergoeding. We ondertekenen berichten in crypto-applicaties om toestemming van de gebruiker te verkrijgen, net zoals wanneer je in het echte leven je schriftelijke handtekening op papier zou gebruiken. Het is de crypto-versie van “fiat-ondertekening”.
Het belang van EIP-712
Het ondertekenen van berichten is niets nieuws. We kunnen al jaren berichten ondertekenen, en die kunnen verschillende vormen aannemen naarmate ze in de loop van de tijd verbeteren. In feite is de Ethereum-verbeteringsvoorstel 191 (EIP-191) werd ingediend in 2016 en introduceerde een standaard die voor mensen leesbare berichten mogelijk maakt, die native wordt ondersteund door Ledger-apparaten. Waar EIP-191 echter tekortschoot, is dat de standaard de gegevens niet structureert. Het is slechts een korte samenvatting van een onbeperkte hoeveelheid gegevens aan het einde van het bericht, waardoor het moeilijk te gebruiken is. In de praktijk zijn berichten vaak te lang, waardoor ze worden afgekapt, waardoor de gebruiker potentieel belangrijke informatie misloopt; slechte UX.
Zoals vermeld aan het begin van de Ethereum-verbeteringsvoorstel 712 (EIP-712): “Het ondertekenen van gegevens is een opgelost probleem als het enige waar we om geven bytestrings zijn. Helaas geven we in de echte wereld om complexe betekenisvolle boodschappen.” – Ik ben het daar volledig mee eens. Naarmate berichten groter werden om complexere bewerkingen mogelijk te maken, was de introductie van getypte datastructuren in berichten, zoals gespecificeerd in EIP-712, een welkome verandering.
Wat dit voor gebruikers betekent, is dat ontwikkelaars nu de gegevens in het bericht kunnen ontleden en weten wat wat is, wat nu aan de gebruiker kan worden getoond. Parseren betekent dat je de inhoud kunt lezen, omdat je weet hoe deze is opgebouwd. Dat is een game changer in termen van gebruikerservaring, maar ook vanuit veiligheidsperspectief, aangezien ik nu kan verifiëren wat ik onderteken.
Terug in de context van waar berichten voor worden gebruikt: als je Alice vraagt om je specifieke toestemming te geven voor de inhoud van haar portemonnee, moet je als app-ontwikkelaar daar heel expliciet over zijn om je kansen voor haar om verder te gaan te maximaliseren. Maar het is meer dan alleen een optimalisatie van het conversiepercentage.
Als je denkt aan beveiliging en verdediging in een vijandige omgeving, zal een oplichter die boodschap uiteraard zo ondoorzichtig mogelijk maken om Alice te misleiden om die kwaadaardige operatie toe te staan. Transparantie en de mogelijkheid voor Alice om te controleren wat ze ondertekent, zijn absoluut essentieel.
En dat is waar EIP-712 in beeld komt. Vóór deze EIP waren ondertekende berichten een ondoorzichtige hexadecimale tekenreeks die aan de gebruiker werd getoond met weinig context over de items waaruit het bericht bestond.
Zou jij dit willen ondertekenen? Enig idee wat je hier autoriseert?
De EIP-712-specificatie introduceert getypte datastructuren voor berichten, waardoor deze door portemonnees kunnen worden geparseerd en op een gebruiksvriendelijke manier kunnen worden weergegeven, zodat Alice een weloverwogen beslissing kan nemen. Bovendien is het een standaard en interoperabel in de hele sector: dankzij de ondersteuning van EIP-712 kan uw bericht worden geparseerd door Ledger, MetaMask, Rainbow, Argent, Coinbase Wallet, noem maar op.
Grootboekondersteuning voor EIP-712
Allereerst fijne dagen, Ledger-apparaten hebben native ondersteuning voor EIP-712-berichten, en als ontwikkelaar kunt u precies bepalen hoe uw berichten op het apparaat worden weergegeven.
Er zijn in wezen 3 ondersteuningsniveaus voor berichten op Ledger-apparaten:
Niveau 1: Blind ondertekenen
Als Bob, een app-ontwikkelaar, geen EIP-712-berichten gebruikt, vraagt Bob Alice in feite om een onleesbare hexadecimale tekenreeks te ondertekenen: Bob vraagt Alice om iets te ondertekenen dat ze niet eens kan lezen, dat is blind ondertekenen.
Niveau 2: Transparant ondertekenen
Door een EIP-712-bericht te implementeren, maakt Bob een stap voorwaarts, van een hexadecimale string naar leesbare inhoud. Alice kan nu de inhoud van het bericht lezen, maar omdat de volledige inhoud van het bericht aan haar wordt getoond, is het moeilijk om de belangrijkste informatie te herkennen die vermengd is met technische informatie. Het is transparant, maar nog niet duidelijk.
Niveau 3: Duidelijke ondertekening
Omdat het apparaat de inhoud van het bericht kan parseren, door aan te geven wat er moet worden weergegeven en hoe, kunnen we tot een duidelijke ondertekening komen. Als Bob de vereiste metagegevens instelt, ziet Alice het volgende op haar Ledger-apparaat:
Veel beter dan een hex-snaar, nietwaar?
Een ander belangrijk punt is dat, aangezien het wordt weergegeven op een volledig beveiligde, afzonderlijk apparaat waarmee niet kan worden geknoeid, is Alice er 100% zeker van dat wat ze op dat apparaat ziet, is wat ze ondertekent: geen enkele malware of kwaadaardige toepassing kan veranderen wat haar wordt weergegeven. Als wat op het apparaat wordt weergegeven niet aan haar verwachtingen voldoet, kan ze veilig blijven en de ondertekening van het bericht weigeren.
Om zijn gebruikers deze verbeterde UX en extra veiligheid te bieden, moet Bob twee dingen doen: specificeer welke velden aan de gebruiker moeten worden weergegeven en geef er een mooie, expliciete weergavenaam voor.
Als je als ontwikkelaar met Bob mee wilt doen en het voor jouw app wilt doen, je hebt hier alle documentatie, en het komt in wezen neer op het maken van een pull-verzoek om uw contract op de witte lijst te zetten in Ledger's dApps Asset Registry via een JSON-bestand met daarin:
- Selectors om aan te geven welke velden het apparaat Alice moet tonen,
- Label elke selector met een weergavenaam.
Dit is geen cosmetica, het is een goede gewoonte
Door uw slimme contract op de witte lijst te zetten en aan te geven hoe Ledger-apparaten uw berichten kunnen weergeven, verbetert u niet alleen de gebruikerservaring aanzienlijk bij de interactie met uw applicatie, maar nog belangrijker: u beschermt ons allemaal tegen oplichting en helpt bij het opbouwen van goede gewoonten in de web3 ecosysteem.
We mogen nooit iets ondertekenen dat we niet begrijpen.
Wij kunnen dit niet zonder u doen. Help ons om van duidelijke ondertekening de norm te maken.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoAiStream. Web3 gegevensintelligentie. Kennis versterkt. Toegang hier.
- De toekomst slaan met Adryenn Ashley. Toegang hier.
- Koop en verkoop aandelen in PRE-IPO-bedrijven met PREIPO®. Toegang hier.
- Bron: https://www.ledger.com/blog/securing-message-signing
- :is
- :niet
- :waar
- $UP
- 1
- 2016
- 22
- 220
- a
- vermogen
- in staat
- Over
- over het
- absoluut
- Bereiken
- over
- adres
- tegenstander
- algoritme
- Alles
- toelaten
- Het toestaan
- toestaat
- al
- ook
- bedragen
- an
- en
- Nog een
- elke
- iedereen
- gebruiken
- Aanvraag
- goedkeuring
- ZIJN
- Zilver
- AS
- aanwinst
- At
- machtiging
- gebaseerde
- BE
- omdat
- geweest
- vaardigheden
- Begin
- wezen
- Betere
- tussen
- Beetje
- blockchain
- blockchain netwerk
- bob
- bouw
- maar
- by
- CAN
- verzorging
- tegemoet te komen
- kansen
- verandering
- Wisselaar
- duidelijk
- coinbase
- Coinbase Wallet
- komt
- algemeen
- Communicatie
- complex
- toestemming
- content
- inhoud
- verband
- contract
- onder controle te houden
- Camper ombouw
- Wij creëren
- cryptogeld
- DApps
- gegevens
- dagen
- beslissing
- Verdediging
- gedetailleerd
- Ontwikkelaar
- ontwikkelaars
- apparaat
- systemen
- anders
- digitaal
- Display
- weergeven
- do
- documentatie
- Nee
- Dont
- beneden
- elk
- gemakkelijk
- ecosysteem
- EIP
- einde
- Milieu
- essentieel
- in wezen
- ethereum
- Zelfs
- Behalve
- verwachtingen
- ervaring
- blootgestelde
- extra
- extra beveiliging
- feit
- Velden
- Dien in
- gericht
- Voor
- smeden
- formulier
- formulieren
- Naar voren
- oppompen van
- vol
- geheel
- Bovendien
- spel
- game-changer
- verzamelen
- krijgen
- gif
- gaan
- goed
- toe te kennen
- hand
- gelukkig
- Hard
- Hebben
- hulp
- het helpen van
- haar
- hier
- HEX
- zijn
- Hoe
- Echter
- HTTPS
- leesbare
- i
- idee
- Identiteit
- if
- belang
- verbeteren
- verbeterd
- verbetering
- het verbeteren van
- in
- omvat
- aangeven
- wat aangeeft
- -industrie
- informatie
- op de hoogte
- interactie
- interoperabele
- geïntroduceerd
- Introduceert
- Introductie
- IT
- artikelen
- mee
- jpg
- json
- voor slechts
- sleutel
- blijven
- Grootboek
- Lengte
- niveaus
- Life
- LINK
- Elke kleine stap levert grote resultaten op!
- lang
- maken
- maken
- malware
- manier
- Match
- max-width
- Maximaliseren
- zinvolle
- middel
- Bericht
- berichten
- Metadata
- MetaMask
- vermist
- gemengd
- meer
- naam
- inheemse
- behoeften
- netwerk
- nooit
- New
- mooi
- geen
- nu
- of
- vaak
- on
- EEN
- Slechts
- ondoorzichtig
- operatie
- Operations
- optimalisatie
- or
- Overige
- uit
- over
- het te bezitten.
- paar
- Papier
- deelnemers
- toestemming
- perspectief
- Plato
- Plato gegevensintelligentie
- PlatoData
- punt
- arm
- mogelijk
- mogelijk
- praktijk
- Precies
- principes
- privaat
- private Key
- probleem
- voorstel
- beschermen
- Bewijzen
- bewijst
- zorgen voor
- mits
- publiek
- public Key
- doel
- tarief
- Lees
- vast
- echte leven
- echte wereld
- register
- vertegenwoordigt
- te vragen
- nodig
- verkregen
- veilig
- dezelfde
- oplichting
- Geheim
- beveiligen
- veiligheid
- zien
- ziet
- dienen
- reeks
- vormen
- ze
- Bermuda's
- moet
- tonen
- teken
- Gesigneerd
- aanzienlijk
- het ondertekenen van
- sinds
- slim
- slim contract
- So
- iets
- specifiek
- specificatie
- gespecificeerd
- Spot
- standaard
- bepaald
- blijven
- Stap voor
- Verhaal
- Draad
- structuur
- gestructureerde
- ingediend
- dergelijk
- Super
- ondersteuning
- ondersteunde
- Ondersteuning
- Nemen
- tech
- termen
- neem contact
- dat
- De
- hun
- Ze
- Deze
- ze
- ding
- spullen
- denken
- dit
- die
- toch?
- niet de tijd of
- naar
- ook
- Transacties
- overdracht
- overgedragen
- Transparantie
- transparant
- twee
- type dan:
- begrijpen
- helaas
- eenheid
- onbeperkt
- us
- .
- gebruikt
- Gebruiker
- Gebruikerservaring
- gebruiksvriendelijke
- gebruikers
- gebruik
- doorgaans
- ux
- waarde
- controleren
- via
- Portemonnee
- Portemonnees
- willen
- was
- we
- Web3
- Web3-ecosysteem
- welkom
- GOED
- waren
- Wat
- Wat is
- wanneer
- welke
- whitelist
- WIE
- wil
- Met
- zonder
- wereld
- zou
- geschreven
- jaar
- u
- Your
- zephyrnet