Først litt lingo. EN "beskjed" er en kommunikasjonsenhet mellom to eller flere deltakere i et blokkjedenettverk. Den kan inneholde alle typer data, og de brukes ofte for å få digital godkjenning fra en bruker.
A "transaksjon", på den annen side, er en spesifikk type melding som innebærer overføring av verdi fra en deltaker til en annen. Det inkluderer vanligvis informasjon som avsenderens adresse, mottakerens adresse, mengden kryptovaluta som overføres, og en digital signatur som beviser avsenderens autorisasjon for overføringen.
Brukere kan allerede fjerne signeringstransaksjoner ved å bruke Ledger-enhetene sine, som beskrevet i dette innlegget, og vi har utvidet denne gode praksisen ved å bruke de samme prinsippene til også å gjelde meldinger, her er hvordan.
Hvorfor signerer vi meldinger i web3?
Blokkjeder er basert på "offentlig nøkkelkryptering", der brukere eier en offentlig nøkkel og en privat nøkkel, som danner et par. Den offentlige nøkkelen representerer eierens identitet, og den private nøkkelen er hemmelig, slik at de kan bevise at de eier nøkkelparet.
Når du signerer en melding, bruker du din private nøkkel i signeringsalgoritmen for å koble en signatur til meldingen og den offentlige nøkkelen. Ingen kan utlede din private nøkkel, eller forfalske en gyldig signatur for deg. Imidlertid kan alle som kjenner din offentlige nøkkel enkelt bekrefte at meldingen ble signert med din private nøkkel.
Lang historie kort, det er den samme prosessen og ideen som å signere transaksjoner, bortsett fra at vi her fokuserer på å signere meldinger som tjener et annet formål: godtgjørelse. Vi signerer meldinger i kryptoapplikasjoner for å samle brukersamtykke, akkurat som når du i det virkelige liv ville bruke din skriftlige signatur på et papir. Det er kryptoversjonen av "fiat-signering".
Viktigheten av EIP-712
Å signere meldinger er ikke noe nytt. Vi har vært i stand til å signere meldinger i årevis nå, og de kan ha forskjellige former og former ettersom de forbedres over tid. Faktisk Ethereum forbedringsforslag 191 (EIP-191) ble sendt inn i 2016 og introduserte en standard som tillater menneskelig lesbare meldinger som støttes av Ledger-enheter. Der EIP-191 kom til kort, er at standarden ikke strukturerer dataene. Det er bare en blurb av en ubegrenset lengde med data på slutten av meldingen, noe som gjør det vanskelig å bruke. I praksis er meldinger ofte for lange og ender opp med å bli avkortet og resulterer i at brukeren går glipp av potensielt nøkkelinformasjon; dårlig UX.
Som nevnt i begynnelsen av Ethereum forbedringsforslag 712 (EIP-712): «Å signere data er et løst problem hvis alt vi bryr oss om er bytestringer. Dessverre i den virkelige verden bryr vi oss om komplekse meningsfulle meldinger.» – Jeg kunne ikke vært mer enig. Etter hvert som meldinger vokste for å imøtekomme mer komplekse operasjoner, var introduksjonen av maskinskrevne datastrukturer i meldinger som spesifisert i EIP-712 en velkommen endring.
Hva dette betyr for brukere, er at nå kan utviklere analysere dataene i meldingen og vite hva som er hva, som nå kan eksponeres for brukeren. Parsing betyr å kunne lese innholdet, fordi du vet hvordan det er bygget opp. Det er en game changer når det gjelder brukeropplevelse, men også fra et sikkerhetsperspektiv siden jeg nå kan bekrefte hva jeg signerer.
Tilbake i sammenheng med hva meldinger brukes til, hvis du ber Alice om å gi deg spesifikk tillatelse til innholdet i lommeboken hennes, som apputvikler, bør du være veldig eksplisitt om det for å maksimere sjansene dine for at hun kan fortsette. Men det er mer enn bare en konverteringsfrekvensoptimalisering.
Hvis du tenker på sikkerhet og forsvar i et motstridende miljø, vil en svindler åpenbart gjøre meldingen så ugjennomsiktig som mulig for å lure Alice til å tillate den ondsinnede operasjonen. Åpenhet og muligheten for Alice til å dobbeltsjekke hva hun signerer er helt avgjørende.
Og det er her EIP-712 kommer inn. Før denne EIP var signerte meldinger en ugjennomsiktig sekskantstreng som ble vist til brukeren med liten kontekst om elementene som utgjør meldingen.
Vil du signere dette? Har du noen anelse om hva du godkjenner her?
EIP-712-spesifikasjonen introduserer maskinskrevne datastrukturer for meldinger som gjør at disse kan analyseres av lommebøker og vises på en brukervennlig måte slik at Alice kan ta en informert beslutning. Videre er det en standard og interoperabel på tvers av bransjen: Med støtte for EIP-712, kan meldingen din analyseres av Ledger, MetaMask, Rainbow, Argent, Coinbase Wallet, you name it.
Ledger-støtte for EIP-712
Først av alt, glade dager, Ledger-enheter har innebygd støtte for EIP-712-meldinger, og som utvikler kan du kontrollere nøyaktig hvordan meldingene dine vises på enheten.
Det er i hovedsak tre nivåer av støtte for meldinger på Ledger-enheter:
Nivå 1: Blind signering
Hvis Bob, en apputvikler, ikke bruker EIP-712-meldinger, ber Bob egentlig Alice om å signere en uleselig sekskantstreng: Bob ber Alice signere noe hun ikke engang kan lese, det er blindsignering.
Nivå 2: Gjennomsiktig signering
Ved å implementere en EIP-712-melding tar Bob et skritt fremover og går fra en sekskantstreng til lesbart innhold. Den lar nå Alice lese innholdet i meldingen, men fordi den viser hele innholdet i meldingen til henne, er det vanskelig å se nøkkelinformasjonen som er blandet med teknisk informasjon. Det er gjennomsiktig, men det er ikke klart ennå.
Nivå 3: Klar signering
Siden enheten kan analysere innholdet i meldingen, ved å indikere hva som skal vises og hvordan, kan vi oppnå tydelig signering. Så, forutsatt at Bob angir de nødvendige metadataene, er dette hva Alice ville se på Ledger-enheten hennes:
Mye bedre enn en sekskantstreng er det ikke?
Et annet viktig poeng er at siden det vises på en fullstendig sikker, separat enhet som ikke kan tukles med, Alice er 100 % sikker på at det hun ser på den enheten er det hun signerer: ingen skadelig programvare eller ondsinnet applikasjon kan endre hva som vises til henne. Hvis det som vises på enheten ikke samsvarer med forventningene hennes, kan hun være trygg og avvise å signere meldingen.
For å gi denne forbedrede brukeropplevelsen og ekstra sikkerheten til brukerne sine, må Bob gjøre to ting: spesifiser hvilke felt som skal vises til brukeren og gi dem et fint, eksplisitt visningsnavn.
Hvis du som utvikler vil bli med Bob og gjøre det for appen din, du har all dokumentasjonen her, og det koker egentlig ned til å lage en pull-forespørsel for å hvitliste kontrakten din på Ledgers dApps Asset Registry via en JSON-fil som inneholder:
- Velgere for å indikere hvilke felt enheten trenger for å vise Alice,
- Merk hver velger med et visningsnavn.
Dette er ikke kosmetikk, det er god praksis
Ved å hviteliste smartkontrakten din og indikere hvordan Ledger-enheter kan vise meldingene dine, forbedrer du ikke bare brukeropplevelsen betraktelig når du samhandler med applikasjonen din, men enda viktigere, beskytter du oss alle mot svindel og bidrar til å bygge gode vaner i web3 økosystem.
Vi bør aldri signere noe vi ikke forstår.
Vi kan ikke gjøre dette uten deg, hjelp oss å gjøre klar signering til normen.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoAiStream. Web3 Data Intelligence. Kunnskap forsterket. Tilgang her.
- Minting the Future med Adryenn Ashley. Tilgang her.
- Kjøp og selg aksjer i PRE-IPO-selskaper med PREIPO®. Tilgang her.
- kilde: https://www.ledger.com/blog/securing-message-signing
- :er
- :ikke
- :hvor
- $OPP
- 1
- 2016
- 22
- 220
- a
- evne
- I stand
- Om oss
- om det
- absolutt
- Oppnå
- tvers
- adresse
- motstandere
- algoritme
- Alle
- tillate
- tillate
- tillater
- allerede
- også
- beløp
- an
- og
- En annen
- noen
- noen
- app
- Søknad
- godkjenning
- ER
- Argent
- AS
- eiendel
- At
- autorisasjon
- basert
- BE
- fordi
- vært
- før du
- Begynnelsen
- være
- Bedre
- mellom
- Bit
- blockchain
- blockchain nettverk
- bob
- bygge
- men
- by
- CAN
- hvilken
- imøtekomme
- sjansene
- endring
- Veksler
- fjerne
- coinbase
- Coinbase Wallet
- kommer
- vanligvis
- Kommunikasjon
- komplekse
- samtykke
- innhold
- innhold
- kontekst
- kontrakt
- kontroll
- Konvertering
- Opprette
- cryptocurrency
- DApps
- dato
- Dager
- avgjørelse
- Forsvar
- detaljert
- Utvikler
- utviklere
- enhet
- Enheter
- forskjellig
- digitalt
- Vise
- visning
- do
- dokumentasjon
- ikke
- ikke
- ned
- hver enkelt
- lett
- økosystem
- EIP
- slutt
- Miljø
- avgjørende
- hovedsak
- ethereum
- Selv
- Unntatt
- forventninger
- erfaring
- utsatt
- ekstra
- ekstra sikkerhet
- Faktisk
- Felt
- filet
- fokusering
- Til
- smi
- skjema
- skjemaer
- Forward
- fra
- fullt
- fullt
- Dess
- spill
- game-changer
- samle
- få
- gif
- skal
- god
- innvilge
- hånd
- lykkelig
- Hard
- Ha
- hjelpe
- hjelpe
- her
- her.
- HEX
- hans
- Hvordan
- Men
- HTTPS
- lesbar
- i
- Tanken
- Identitet
- if
- betydning
- forbedre
- forbedret
- forbedring
- bedre
- in
- inkluderer
- indikerer
- indikerer
- industri
- informasjon
- informert
- samhandler
- interoper
- introdusert
- Introduserer
- Introduksjon
- IT
- varer
- bli medlem
- jpg
- JSON
- bare
- nøkkel
- Vet
- Ledger
- Lengde
- nivåer
- Life
- LINK
- lite
- Lang
- gjøre
- Making
- malware
- måte
- Match
- max bredde
- Maksimer
- meningsfylt
- midler
- melding
- meldinger
- metadata
- metamask
- mangler
- blandet
- mer
- navn
- innfødt
- behov
- nettverk
- aldri
- Ny
- fint
- Nei.
- nå
- of
- ofte
- on
- ONE
- bare
- ugjennomsiktig
- drift
- Drift
- optimalisering
- or
- Annen
- ut
- enn
- egen
- par
- Papir
- deltakere
- tillatelse
- perspektiv
- plato
- Platon Data Intelligence
- PlatonData
- Point
- dårlig
- mulig
- potensielt
- praksis
- nettopp
- prinsipper
- privat
- private Key
- Problem
- prosess
- forslag
- beskytte
- Bevis
- beviser
- gi
- forutsatt
- offentlig
- offentlig Key
- formål
- Sats
- Lese
- ekte
- ekte liv
- virkelige verden
- registret
- representerer
- anmode
- påkrevd
- resulterende
- trygge
- samme
- svindel
- Secret
- sikre
- sikkerhet
- se
- Sees
- betjene
- sett
- figurer
- hun
- Kort
- bør
- Vis
- undertegne
- signert
- betydelig
- signering
- siden
- Smart
- smart kontrakt
- So
- noe
- spesifikk
- spesifikasjon
- spesifisert
- Spot
- Standard
- uttalte
- opphold
- Trinn
- Story
- String
- struktur
- strukturert
- innsendt
- slik
- Super
- støtte
- Støttes
- Støtte
- Ta
- tech
- vilkår
- enn
- Det
- De
- deres
- Dem
- Disse
- de
- ting
- ting
- tror
- denne
- De
- selv om?
- tid
- til
- også
- Transaksjoner
- overføre
- overføres
- Åpenhet
- gjennomsiktig
- to
- typen
- forstå
- dessverre
- enhet
- ubegrenset
- us
- bruke
- brukt
- Bruker
- Brukererfaring
- brukervennlig
- Brukere
- ved hjelp av
- vanligvis
- ux
- verdi
- verifisere
- av
- lommebok
- Lommebøker
- ønsker
- var
- we
- Web3
- Web3 økosystem
- velkommen
- VI VIL
- var
- Hva
- Hva er
- når
- hvilken
- hviteliste
- HVEM
- vil
- med
- uten
- verden
- ville
- skrevet
- år
- du
- Din
- zephyrnet