Först, lite lingo. A "meddelande" är en kommunikationsenhet mellan två eller flera deltagare i ett blockkedjenätverk. Den kan innehålla alla typer av data och de används ofta för att få digitalt godkännande från en användare.
A "transaktion", å andra sidan, är en specifik typ av meddelande som innebär överföring av värde från en deltagare till en annan. Det innehåller vanligtvis information som avsändarens adress, mottagarens adress, mängden kryptovaluta som överförs och en digital signatur som styrker avsändarens behörighet för överföringen.
Användare kan redan rensa teckentransaktioner med sina Ledger-enheter, som beskrivs i detta inlägg, och vi har utökat denna goda praxis med samma principer till även meddelanden, så här.
Varför signerar vi meddelanden i web3?
Blockkedjor är baserade på "public key kryptografi", där användare äger en offentlig nyckel och en privat nyckel, som bildar ett par. Den offentliga nyckeln representerar ägarens identitet och den privata nyckeln är hemlig, vilket gör att de kan bevisa att de äger nyckelparet.
När du signerar ett meddelande använder du din privata nyckel i signeringsalgoritmen för att länka en signatur till meddelandet och den offentliga nyckeln. Ingen kan härleda din privata nyckel eller förfalska en giltig signatur åt dig. Men alla som känner till din offentliga nyckel kan enkelt verifiera att meddelandet signerades av din privata nyckel.
Lång historia kort, det är samma process och idé som att signera transaktioner, förutom att vi här fokuserar på att signera meddelanden som tjänar ett annat syfte: ersättning. Vi signerar meddelanden i kryptoapplikationer för att samla in användarens samtycke, precis som när du i verkligheten skulle använda din skriftliga signatur på ett papper. Det är kryptoversionen av "fiat-signering".
Vikten av EIP-712
Att signera meddelanden är ingen ny sak. Vi har kunnat signera meddelanden i flera år nu, och de kan ta olika former och former allteftersom de förbättras med tiden. Faktum är att Ethereums förbättringsförslag 191 (EIP-191) skickades in 2016 och introducerade en standard som tillåter mänskligt läsbara meddelanden som stöds av Ledger-enheter. Där EIP-191 dock kom till kort är att standarden inte strukturerar data. Det är bara en blurb av en obegränsad datalängd i slutet av meddelandet, vilket gör det svårt att använda. I praktiken är meddelanden ofta för långa och slutar med att trunkeras och resulterar i att användaren går miste om potentiellt viktig information; dålig UX.
Som sagt i början av Ethereums förbättringsförslag 712 (EIP-712): "Att signera data är ett löst problem om allt vi bryr oss om är bytestringar. Tyvärr bryr vi oss i den verkliga världen om komplexa meningsfulla budskap.” – Jag kunde inte hålla med mer. När meddelanden växte för att tillgodose mer komplexa operationer, var införandet av maskinskrivna datastrukturer i meddelanden enligt EIP-712 en välkommen förändring.
Vad detta betyder för användare är att nu utvecklare kan analysera data i meddelandet och veta vad som är vad, som nu kan exponeras för användaren. Att analysera innebär att kunna läsa innehållet, eftersom du vet hur det är uppbyggt. Det är en game changer när det gäller användarupplevelse men också ur ett säkerhetsperspektiv eftersom jag nu kan verifiera vad jag signerar.
Tillbaka i sammanhanget med vad meddelanden används för, om du ber Alice att ge dig specifik tillåtelse för innehållet i hennes plånbok, som apputvecklare, bör du vara väldigt tydlig om det för att maximera dina chanser för henne att fortsätta. Men det är mer än bara en omvandlingsfrekvensoptimering.
Om du tänker på säkerhet och försvar i en kontradiktorisk miljö, kommer en bedragare uppenbarligen att göra det meddelandet så ogenomskinligt som möjligt för att lura Alice att tillåta den skadliga operationen. Transparens och förmågan för Alice att dubbelkolla vad hon skriver på är absolut nödvändigt.
Och det är där EIP-712 kommer in. Före detta EIP var signerade meddelanden en ogenomskinlig hexadecimal sträng som visades för användaren med lite sammanhang om de föremål som utgör meddelandet.
Skulle du skriva under på detta? Har du någon aning om vad du godkänner här?
EIP-712-specifikationen introducerar maskinskrivna datastrukturer för meddelanden som gör att dessa kan analyseras av plånböcker och visas på ett användarvänligt sätt så att Alice kan fatta ett välgrundat beslut. Dessutom är det en standard och interoperabel i hela branschen: med stöd för EIP-712 kan ditt meddelande tolkas av Ledger, MetaMask, Rainbow, Argent, Coinbase Wallet, you name it.
Ledger-stöd för EIP-712
Först och främst, glada dagar, Ledger-enheter har inbyggt stöd för EIP-712-meddelanden, och som utvecklare kan du kontrollera exakt hur dina meddelanden visas på enheten.
Det finns i huvudsak tre nivåer av stöd för meddelanden på Ledger-enheter:
Nivå 1: Blindsignering
Om Bob, en apputvecklare, inte använder EIP-712-meddelanden, ber Bob i huvudsak Alice att signera en oläsbar hex-sträng: Bob ber Alice att signera något hon inte ens kan läsa, det är blindsignering.
Nivå 2: Transparent signering
Genom att implementera ett EIP-712-meddelande tar Bob ett steg framåt och går från en hexad sträng till läsbart innehåll. Det tillåter nu Alice att läsa innehållet i meddelandet, men eftersom det visar hela innehållet i meddelandet för henne är det svårt att upptäcka nyckelinformationen som blandas med teknisk information. Det är genomskinligt, men det är inte klart än.
Nivå 3: Klar signering
Eftersom enheten kan analysera innehållet i meddelandet, genom att indikera vad som ska visas och hur, kan vi uppnå tydlig signering. Så, förutsatt att Bob ställer in nödvändiga metadata, här är vad Alice skulle se på sin Ledger-enhet:
Mycket bättre än ett sexkantssnöre, eller hur?
En annan viktig punkt är att eftersom den visas på en helt säker, separat enhet som inte kan manipuleras, Alice är 100 % säker på att det hon ser på den enheten är det hon signerar: ingen skadlig programvara eller skadlig applikation kan ändra vad som visas för henne. Om det som visas på enheten inte stämmer överens med hennes förväntningar kan hon vara säker och neka att skriva under meddelandet.
För att ge denna förbättrade användarupplevelse och extra säkerhet till sina användare måste Bob göra två saker: ange vilka fält som ska visas för användaren och ange ett snyggt, tydligt visningsnamn för dem.
Om du som utvecklare vill gå med Bob och göra det för din app, du har all dokumentation här, och det handlar i huvudsak om att skapa en pull-begäran för att vitlista ditt kontrakt på Ledgers dApps Asset Registry via en JSON-fil som innehåller:
- Väljare för att indikera vilka fält enheten behöver för att visa Alice,
- Märk varje väljare med ett visningsnamn.
Det här är inte kosmetika, det är bra praxis
Genom att vitlista ditt smarta kontrakt och indikera hur Ledger-enheter kan visa dina meddelanden, förbättrar du inte bara användarupplevelsen avsevärt när du interagerar med din applikation, utan ännu viktigare, du skyddar oss alla från bedrägerier och hjälper till att bygga upp goda vanor i web3 ekosystem.
Vi ska aldrig skriva under på något vi inte förstår.
Vi kan inte göra det här utan dig, hjälp oss att göra tydlig signering till normen.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoAiStream. Web3 Data Intelligence. Kunskap förstärkt. Tillgång här.
- Minting the Future med Adryenn Ashley. Tillgång här.
- Köp och sälj aktier i PRE-IPO-företag med PREIPO®. Tillgång här.
- Källa: https://www.ledger.com/blog/securing-message-signing
- :är
- :inte
- :var
- $UPP
- 1
- 2016
- 22
- 220
- a
- förmåga
- Able
- Om oss
- om det
- absolut
- Uppnå
- tvärs
- adress
- kontradiktoriskt
- algoritm
- Alla
- tillåter
- tillåta
- tillåter
- redan
- också
- mängd
- an
- och
- Annan
- vilken som helst
- någon
- app
- Ansökan
- godkännande
- ÄR
- Argent
- AS
- tillgång
- At
- tillstånd
- baserat
- BE
- därför att
- varit
- innan
- Börjar
- Där vi får lov att vara utan att konstant prestera,
- Bättre
- mellan
- Bit
- blockchain
- blockchain-nätverk
- bob
- SLUTRESULTAT
- men
- by
- KAN
- vilken
- tillgodose
- chanser
- byta
- Växlare
- klar
- coinbase
- Coinbase Wallet
- kommer
- vanligen
- Kommunikation
- komplex
- samtycke
- innehåll
- innehåll
- sammanhang
- kontrakt
- kontroll
- Konvertering
- Skapa
- kryptovaluta
- DApps
- datum
- Dagar
- Beslutet
- Försvar
- detaljerad
- Utvecklare
- utvecklare
- anordning
- enheter
- olika
- digital
- Visa
- visning
- do
- dokumentation
- inte
- inte
- ner
- varje
- lätt
- ekosystemet
- EIP
- änden
- Miljö
- väsentlig
- väsentligen
- ethereum
- Även
- Utom
- förväntningar
- erfarenhet
- utsatta
- extra
- extra säkerhet
- Faktum
- Fält
- Fil
- fokusering
- För
- förfalska
- formen
- former
- Framåt
- från
- full
- fullständigt
- Vidare
- lek
- spel-växlare
- samla
- skaffa sig
- gif
- kommer
- god
- bevilja
- sidan
- lyckligt
- Hård
- Har
- hjälpa
- hjälpa
- här
- här.
- HEX
- hans
- Hur ser din drömresa ut
- Men
- HTTPS
- läsbar
- i
- Tanken
- Identitet
- if
- vikt
- förbättra
- förbättras
- förbättring
- förbättra
- in
- innefattar
- indikerar
- indikerar
- industrin
- informationen
- informeras
- interagera
- kompatibla
- introducerade
- Introducerar
- Beskrivning
- IT
- artikel
- delta
- jpg
- json
- bara
- Nyckel
- Vet
- Ledger
- Längd
- nivåer
- livet
- LINK
- liten
- Lång
- göra
- Framställning
- malware
- sätt
- Match
- max-bredd
- Maximera
- meningsfull
- betyder
- meddelande
- meddelanden
- metadata
- MetaMask
- saknas
- blandad
- mer
- namn
- nativ
- behov
- nät
- aldrig
- Nya
- trevligt
- Nej
- nu
- of
- Ofta
- on
- ONE
- endast
- opak
- drift
- Verksamhet
- optimering
- or
- Övriga
- ut
- över
- egen
- par
- Papper
- deltagare
- tillstånd
- perspektiv
- plato
- Platon Data Intelligence
- PlatonData
- Punkt
- dålig
- möjlig
- potentiellt
- praktiken
- exakt
- Principerna
- privat
- privat nyckel
- Problem
- process
- förslag
- skydda
- Bevisa
- bevisar
- ge
- förutsatt
- allmän
- Public Key
- Syftet
- Betygsätta
- Läsa
- verklig
- verkliga livet
- verkliga världen
- register
- representerar
- begära
- Obligatorisk
- resulterande
- säker
- Samma
- bedrägerier
- Secret
- säkra
- säkerhet
- se
- ser
- tjänar
- in
- former
- hon
- Kort
- skall
- show
- signera
- signerad
- signifikant
- signering
- eftersom
- smarta
- smart kontrakt
- So
- något
- specifik
- specifikation
- specificerade
- Spot
- standard
- anges
- bo
- Steg
- Historia
- Sträng
- struktur
- strukturerade
- lämnats
- sådana
- super
- stödja
- Som stöds
- Stödjande
- Ta
- tech
- villkor
- än
- den där
- Smakämnen
- deras
- Dem
- Dessa
- de
- sak
- saker
- tror
- detta
- de
- fastän?
- tid
- till
- alltför
- Transaktioner
- överföring
- överförd
- Öppenhet
- transparent
- två
- Typ
- förstå
- tyvärr
- enhet
- obegränsat
- us
- användning
- Begagnade
- Användare
- Användarupplevelse
- användarvänligt
- användare
- med hjälp av
- vanligen
- ux
- värde
- verifiera
- via
- plånbok
- Plånböcker
- vill
- var
- we
- Web3
- Web3 ekosystem
- välkommen
- VÄL
- były
- Vad
- Vad är
- när
- som
- vitlista
- VEM
- kommer
- med
- utan
- världen
- skulle
- skriven
- år
- dig
- Din
- zephyrnet