Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ブロックチェーン時代の認証 / Authentication in the Blockchain Era

Ryo Manzoku
August 30, 2019

ブロックチェーン時代の認証 / Authentication in the Blockchain Era

Ryo Manzoku

August 30, 2019
Tweet

More Decks by Ryo Manzoku

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ • ຬ଍ ྄ ʢManzoku Ryoʣ • double jump.tokyoגࣜձࣾ
 ϦʔυΤϯδχΞ

    • ϒϩοΫνΣʔϯήʔϜઐۀ։ൃձࣾ • ΠϯϑϥɺϒϩοΫνΣʔϯɺ
 όοΫΤϯυ • GolangɺPythonɺSolidity  
  2. ϒϩοΫνΣʔϯήʔϜ • 2017.11 CryptoKitties ϦϦʔε • 2017.12 Etheremon ϦϦʔε •

    2018.06 ͘Γ΀ಲ ϦϦʔεʢ೔ຊൃʣ • 2018.11 MyCryptoHeroes ϦϦʔεʢ೔ຊൃʣ • 2019.06 CryptoSpells ϦϦʔε ʢ೔ຊൃʣ • 2019.?? ????  
  3. ͳͥήʔϜʹϒϩοΫνΣʔϯΛ࢖͏ͷʁ ήʔϜ × ίϯϐϡʔλ ϏσΦήʔϜ 1980೥୅ Πϯλʔωοτ ΦϯϥΠϯήʔϜ 2000೥୅ ίϛϡχςΟ

    ιʔγϟϧήʔϜ 2010೥୅ Τίϊϛʔʢܦࡁੑʣ ϒϩοΫνΣʔϯήʔϜ 2020೥୅ × × ×
  4. ༷ʑͳʮϒϩοΫνΣʔϯʯ • ʮϒϩοΫνΣʔϯʯͱ͍͏ݴ༿͸จ຺ʹΑ͔ͬͯΘΔ • ٕज़ͷ࿩ • ҉߸௨՟ͷ࿩ • ϒϩοΫνΣʔϯωοτϫʔΫͷ࿩ •

    ϒϩοΫνΣʔϯωοτϫʔΫʹ΋छྨ͕͋Δ • ύϒϦοΫνΣʔϯ • ίϯιʔγΞϜνΣʔϯ • ϓϥΠϕʔτνΣʔϯ  
  5. Ethereum • ϒϩοΫνΣʔϯΛ࢖ͬͨ෼ࢄΞϓϦέʔγϣϯϓϥο τϑΥʔϜ • EVMͰ࣮ߦ͞ΕΔSmartContractΛSolidityݴޠͰهड़ • ݡ͍ܖ໿ • EIP/ERCͱ͍͏ίϛϡχςΟओಋͷඪ४ن֨

    • ެ։҉߸伴ʹΑΔΞΧ΢ϯτػೳͱڧྗͳܾࡁج൫ • τϥϯβΫγϣϯΛൃߦ͢Δʹ͸ख਺ྉΛࢧ෷͏ඞཁ͕ ͋Δ • Miner͸τϥϯβΫγϣϯख਺ྉͱϚΠχϯάใुΛಘΔ  
  6. ϒϩοΫνΣʔϯ͸վ͟ΜෆՄೳ • ϊʔυӡӦऀ͸ࣗ෼ͷརӹͷͨΊϒϩοΫΛੜ੒͢Δ • ϒϩοΫੜ੒ͷΠϯηϯςΟϒઃܭ • ୭͔ͷҙࢥͰɺվ͟Μ͸ෆՄೳ • ͳ͔ͬͨ͜ͱʹͰ͖ͳ͍ •

    ͋Δਓ͕ൃߦͨ͠τϥϯβΫγϣϯ΋ిࢠॺ໊ʹΑͬͯͳ Γ͢·͠Ͱ͖ͳ͍ • 10ETHૹͬͨͷʹɺ1ETH͔͠ͳ͍ʂΈ͍ͨͳ͜ͱ͸ى ͜Γಘͳ͍  
  7. ϒϩοΫνΣʔϯ͸ ʰϦΞϧʱ • ϒϩοΫνΣʔϯͰ͸աڈͷ৘ใͷվ͟Μ͸ࠔ೉ͰෆՄٯ • ݱ࣮ੈքʹ͓͚Δ࣌ؒͷྲྀΕͱಉ͡ • ϒϩοΫνΣʔϯͰॴ༗৘ใ͕͋Δ͜ͱͰॴ༗͍ͯ͠Δ σδλϧΞηοτΛࣗ༝ʹѻ͑Δ •

    ݱ࣮ੈքʹ͓͚ΔϞϊͷॴ༗ͱಉ͡ • αʔϏεఏڙऀʹΑΔ؅ཧ͕ࠔ೉ʹͳΔ • ϒϩοΫνΣʔϯʹΑͬͯΠϯλʔωοτ͕ෆࣗ༝ʹͳΔ ͜ͱͰݱ࣮ੈքʹ͍ۙͮͨ • ͭ·ΓϦΞϧ  
  8. ϒϩοΫνΣʔϯʹ͓͚Δެ։伴҉߸ٕज़ • جຊతʹɺପԁۂઢ҉߸ʢElliptic Curve Cryptography:ECCʣΛ࢖ͬͨପԁۂઢDSAʢElliptic Curve Digital Signature Algorithm: ECDSAʣ͕༻͍ΒΕΔ

    • ۂઢ͸ɺsecp256k1͕༻͍ΒΕΔ͜ͱ͕ଟ͍ • Bitcoin͕࠾༻ɺEthereum΋௥ै • NISTʹ࠾༻͞Ε͓ͯΒͣɺSECGʹ࠾༻͞Ε͍ͯΔύϥ ϝʔλ • ҉߸/෮߸ʢRSAʣͰ͸ͳ͘ిࢠॺ໊  
  9. ΞυϨεͱτϥϯβΫγϣϯ • ൿີ伴ʹରԠ͢Δެ։伴ʹϋογϡؔ਺Λ͔͚ͨ΋ͷΛ ΞυϨεͱݺͿɻ • ϒϩοΫνΣʔϯ্Ͱ͸ɺΞΧ΢ϯτ = ΞυϨε • ϒϩοΫνΣʔϯ্΁ൃߦ͢Δॲཧͷ୯ҐΛτϥϯβΫ

    γϣϯͱݺͿ • ॲཧ಺༰ʹൿີ伴Ͱిࢠॺ໊͢Δ͜ͱͰɺ͋Δτϥϯβ Ϋγϣϯ͕ͲͷΞυϨε͔Βൃߦ͞Εͨ΋ͷ͔Λ୭Ͱ΋ ݕূͰ͖Δ  
  10. தԝूݖͳWeb͔Βͷ୤٫ • Web 2.0 ͷΠϯλʔωοτͰ͸ɺதԝूݖͳαʔϏεΛ ௨ͯ͡ݸͱݸ͕΍ΓͱΓͰ͖ΔΑ͏ʹͳͬͨ • ϒϩά΍ಈըɺςΩετνϟοτ΍Ի੠ • ௨՟ͷ΍ΓͱΓ΋αʔϏε͕΍ͬͯ͘ΕΔ

    • XXX Pay • ҰํͰɺϓϥΠόγʔ΍σʔλ͸αʔϏεఏڙऀʹΑΓ ؅ཧ͞Ε͍ͯΔ • ϒϩοΫνΣʔϯ/Ethereumͷొ৔ͰΞϓϦέʔγϣϯ ͸ඇதԝूݖతʹ࣮ߦͰ͖ΔΑ͏ʹͳͬͨ  
  11. Ethereum Wallet • Ethereumʹ͓͚Δ伴؅ཧͷ୯Ґɻ • ൿີ伴͚ͩͰ͸Կʹ΋࢖͑ͳ͍ͷͰҎԼͷػೳ͕ηοτ • ϊʔυ΁ͷ઀ଓ৘ใ • τϥϯβΫγϣϯͷੜ੒

    • τϥϯβΫγϣϯ΁ͷॺ໊ • ͦͷଞɺαʔϏε͔Βൿີ伴ΛӅṭͨ͠··ΞΫηε Ͱ͖ΔAPI • ෼ࢄͳWebΛ໨ࢦ͢ͷͰɺ͜ΕΒΛWebϒϥ΢βͰར༻ Ͱ͖Δඞཁ͕͋Δ  
  12. ඇதԝूݖతͱ͍͏΋ͷͷ • શͯΛϒϩοΫνΣʔϯ্Ͱॲཧ͢Δͷ͸೉͍͠ • εέʔϥϏϦςΟ໰୊ • ࣮ߦίετ͸ར༻ऀ͕ෛ୲ • ݱ࣮తʹ͸ɺΦϑνΣʔϯͱซ༻͢Δඞཁ͕͋Δ •

    Ͳ͜·ͰΦϑνΣʔϯΛ࢖͏͔͸޷Έ • ྫ͑͹ɺήʔϜʹ͓͍ͯ؅ཧऀෆࡏͰָ͍͔͠Ͳ͏͔ • ΦϑνΣʔϯΛར༻͢Δ৔߹͸ɺͳΜΒ͔ͷํ๏ͰΦϯ νΣʔϯͷΞΧ΢ϯτΛඥ෇͚Δํ๏͕ඞཁ • ͭ·ΓΦϑνΣʔϯͰͷೝূػೳ  
  13. ύεϫʔυೝূ • ਪଌෆՄೳͳจࣈྻʹ͢Δඞཁ͕͋Δ • αʔϏεؒͰಉ͡΋ͷΛ࢖͏΂͖Ͱ͸ͳ͍ • ྲྀग़͢Δ • ଟཁૉೝূͷಋೖ •

    ଟཁૉೝূΛ࢖্ͬͨͰϦΧόϦʔͷ֬อ • ݁ՌɺهԱ͚ͩͰྑ͍͓खܰͳೝূͳͷʹϢʔβʔ΁ͷ ෛ୲͕େ͖͍  
  14. FIDO2/Web Authn • ύεϫʔυೝূ͔Βͷ୤٫Λ໨ࢦͯ͠FIDO Aliance͕ FIDO2ϓϩδΣΫτΛਐΊ͍ͯΔ • ϒϥ΢βͰͷFIDOೝূΛ࣮ݱ͢ΔͨΊͷWeb Authn 

     https://nulab.com/ja/blog/nulab/webauthn_demo/ https://techblog.yahoo.co.jp/advent-calendar-2018/webauthn/
  15. ID؅ཧ͔Βͷ෼ྨ • Centralized IdentityɿதԝूݖܕID • User-Centric IdentityɿϢʔβʔத৺ID • Self-Sovereign IdentityɿࣗݾओݖܕID

    • ͜ͷลͷ෼໺ɺൃݴऀʹΑͬͯ݁ߏϒϨ͕͋Δ   ࢀߟ https://www.dappsway.com/entry/history-of-digital-id
  16. Self Sovereign IDentity ʢSSIDʣ • SSID͸ɺಛఆͷ؅ཧओମʹґଘͤͣɺϢʔβʔ͸ࣗ਎ͷ ΞΠσϯςΟςΟΛࣗΒͰ࡞Γग़͢͜ͱΛ໨తͱ͍ͯ͠Δ • ࣗ਎ͷΞΠσϯςΟςΟͷ؅ཧ͸ࣗ෼ࣗ਎Ͱ͢Δ •

    ଞਓʢ؅ཧऀʣʹ޷͖ʹ࢖ΘΕ͍͍ͯ΋ͷͰ͸ͳ͍ • ࣗ਎ͷ伴Λ࢖ͬͯॺ໊͠ɺެ։伴ʢΞυϨεʣʹΑͬͯݕ ূՄೳͳϒϩοΫνΣʔϯͰ͸ʁ • ࢀߟ https://www.jnsa.org/seminar/2018/0126/data/2-3.pdf  
  17. Ethereumʹ͓͚Δ೚ҙϝοηʔδͷॺ໊ • EIP-191 Signed Data Standard • EIPʹͯنఆ͞Εͨϝοηʔδॺ໊ͷඪ४࢓༷ • WalletΛܦ༝ͯ͠ɺ೚ҙͷϝοηʔδʹॺ໊͕Ͱ͖Δ

    • web3.jsͩͱweb3.eth.personal.sign(msg, address, pw)Ͱॺ ໊͕Ͱ͖Δ • ॺ໊ͱϝοηʔδ͔ΒΞυϨε͕ࢉग़Ͱ͖ΔͷͰαʔόʔ ͰݕূՄೳ  
  18. ͦ΋ͦ΋ΞΧ΢ϯτͷ৴པͱ͸ • KYC͢Δ͜ͱͰΞΧ΢ϯτͱݱ࣮Λ݁ͼ͚ͭΔ • ҰਓҰͭͷൿີ伴ΛKYC͢Δ • ϚΠφϯόʔΧʔυ • ݖརΛߪೖ͢Δ •

    ձһݖ • ͋Δఔ౓ͷ͓ۚΛ୲อʹ͢Δ • ΞΧ΢ϯτʹඥ෇͍ͨߦಈཤྺʹΑͬͯ৴པ͞ΕΔ΂͖ • ϒϩοΫνΣʔϯʹه࿥͞Ε͍ͯΔ • αʔϏεͷαʔό͕ه࿥͍ͯ͠Δ • SSIDͷߟ͑͸͜͜  
  19. ΞΧ΢ϯτͷ৴པ • KYC͢Δ͜ͱͰΞΧ΢ϯτͱݱ࣮Λ݁ͼ͚ͭΔ • ҰਓҰͭͷൿີ伴ΛKYC͢Δ • ϚΠφϯόʔΧʔυ • ݖརΛߪೖ͢Δ •

    ձһݖ • ͋Δఔ౓ͷ͓ۚΛ୲อʹ͢Δ • ΞΧ΢ϯτʹඥ෇͍ͨߦಈཤྺʹΑͬͯ৴པ͞ΕΔ΂͖ • ϒϩοΫνΣʔϯʹه࿥͞Ε͍ͯΔ • αʔϏεͷαʔό͕ه࿥͍ͯ͠Δ • SSIDͷߟ͑͸͜͜  
  20. KYCͱσδλϧΞΠσϯςΟςΟ • KYCʢKnow Your Customerʣ ਎ݩ֬ೝ • ΠϯελͱϦΞϧͷࣗ෼͸ಉ͔͡ʁ • ͦ΋ͦ΋ਓ͕ؒ࣋ͭΞΠσϯςΟςΟ͸1ͭͰ͋Δඞཁ͸ͳ

    ͍ͷͰ͸ʁ • KYCͱσδλϧͷΞΠσϯςΟςΟ͸͋·Γ૬ੑΑ͘ͳ͍ʁ • ΋ͪΖΜ޲͖ෆ޲͖ • KYCͰ΄͍͠ͷ͸ʮ1ਓ1ͭʯͰ͋ͬͯɺʮݸਓ৘ใʯͰ͋Δ ඞཁ͸ͳ͍৔߹΋͋Δ • ͱ͸͍͑KYC͕੒Γཱͭͷ͸ࠃʹकΒΕ͍ͯΔ͔ΒͰ͢ΑͶ  
  21. ΞΧ΢ϯτͷ৴པ • KYC͢Δ͜ͱͰΞΧ΢ϯτͱݱ࣮Λ݁ͼ͚ͭΔ • ҰਓҰͭͷൿີ伴ΛKYC͢Δ • ϚΠφϯόʔΧʔυ • ݖརΛߪೖ͢Δ •

    ձһݖ • ͋Δఔ౓ͷ͓ۚΛ୲อʹ͢Δ • ΞΧ΢ϯτʹඥ෇͍ͨߦಈཤྺʹΑͬͯ৴པ͞ΕΔ΂͖ • ϒϩοΫνΣʔϯʹه࿥͞Ε͍ͯΔ • αʔϏεͷαʔό͕ه࿥͍ͯ͠Δ • SSIDͷߟ͑͸͜͜  
  22. ΞΧ΢ϯτͷ৴པ • KYC͢Δ͜ͱͰΞΧ΢ϯτͱݱ࣮Λ݁ͼ͚ͭΔ • ҰਓҰͭͷൿີ伴ΛKYC͢Δ • ϚΠφϯόʔΧʔυ • ݖརΛߪೖ͢Δ •

    ձһݖ • ͋Δఔ౓ͷ͓ۚΛ୲อʹ͢Δ • ΞΧ΢ϯτʹඥ෇͍ͨߦಈཤྺʹΑͬͯ৴པ͞ΕΔ΂͖ • ϒϩοΫνΣʔϯʹه࿥͞Ε͍ͯΔ • αʔϏεͷαʔό͕ه࿥͍ͯ͠Δ • SSIDͷߟ͑͸͜͜  
  23. ྫ͑͹ήʔϜ • Α͘΍Δखஈͱͯ͠ɺϩάΠϯϘʔφε΍৽نΞΧ΢ϯτ΁ ͷ༏۰ࢪࡦ͕͋Δ • ຖ೔ϩάΠϯ͢Δ͜ͱ΁ͷΠϯηϯςΟϒ • ॳճ1ϲ݄ແྉతͳ΋ͷ • ͭ·ΓΞΧ΢ϯτ୯Ґʹ1౓͚ͩڐ͞ΕΔΠϯηϯςΟϒ

    • ௿ίετͰແݶʹΞΧ΢ϯτ͕ੜ੒Ͱ͖Δ৔߹͸ɺ͜ͷख๏ ͸ةݥ • ैདྷ͜Ε͸ɺAppleɺGoogleͳͲ͕क͍ͬͯͨน • ैདྷͷΠϯηϯςΟϒઃܭ͕શ͘໾ʹཱͨͳ͍ੈք͕๚ ΕΔ  
  24. ྫ͑͹༧໿γεςϜ • நબͱ૬ੑ͕ѱ͍ • KYCͳ͍ঢ়ଶͰ͋Ε͹ɺΞΧ΢ϯτͷ਺͚ͩ༗རʹͳΔ • Ұਓͷਓ͕ෳ਺ͷΞΧ΢ϯτΛ͍࣋ͬͯΔ͔Ͳ͏͔͸ͦ Ε͸ͦΕͰWebશମͷ՝୊ • Fingerprintతͳ΍ͭ

    • ࡢࠓ͸Cookieͷ෩౰ͨΓ͕Α͘ͳ͍ • ҿ৯ళͰ͋Ε͹ॺ໊ͱॴ༗ͷূ໌ͳͷͰΘ͔Γ΍͍͢ • No ShowΈ͍ͨͳͷ͸ผͷ࿩ • ༗ޮͳΞΧ΢ϯτͱ͢Δ͔ → ձһݖͷ࿩ʹ໭Δ  
  25. 伴ͷฆࣦ = IDͷ૕ࣦʁ • ैདྷɺ؅ཧऀ͕ฆࣦʹ͍ͭͯόοΫΞοϓͯ͘͠Εͨ • ʮύεϫʔυ͕Θ͔Βͳ͍ํ͸ͪ͜Βʯ • ະདྷͷੈքͰ͸ɺ伴ͷฆࣦ͕ΞΠσϯςΟςΟͷ૕ࣦ •

    伴୅ߦαʔϏε • 伴Ͱ͸ͳ͘τʔΫϯʹΞΠσϯςΟςΟΛ΋ͨͤΔ • େ੾ͳͷ͸伴ࣗମͰ͸ͳ͘ॺ໊ͱެ։৘ใʢΞυϨεʣͳ ͷͰ͸ʁ • ॺ໊ as a serviceͷग़ݱ • ͢ͰʹEthereumʹ͸ContractWalletͱ͍͏΋ͷ͕͋Δ  
  26. ੜମ৘ใ • ੜମ৘ใ͔Β伴Λੜ੒͢Δٕज़͸͋ΔΒ͍͠ • https://it.impressbm.co.jp/articles/-/18043 • ͦ͏͍͏ͱ͜Ζ͔Βಥഁޱ • KYCͱΞΠσϯςΟςΟͷ࿩ʹ໭Δ •

    ֊૚తܾఆੑ΢ΥϨοτͱ૬ੑ͕Α͍͔΋Ͷ • ϚελʔͱͳΔ128bitsͷΤϯτϩϐʔ͔ΒͳΔγʔυ ஋͔Βɺm/i/0/kͷΑ͏ͳ֊૚ߏ଄Ͱܾఆ࿦తʹൿີ伴 Λੜ੒