次世代の認証(WebAuthn/FIDO2)について説明を試みる

265edb69bfcd5cac012ad5a14f2e6e2f?s=47 OSCA
November 09, 2018

 次世代の認証(WebAuthn/FIDO2)について説明を試みる

2018年11月09日(金) に開催された「WEBエンジニア勉強会 #10」で 、Web Authentication (WebAuthn) / FIDO2 について発表しました。

265edb69bfcd5cac012ad5a14f2e6e2f?s=128

OSCA

November 09, 2018
Tweet

Transcript

  1. 04$" ᖛ໺Ұೋࡾ  !FOHJOFFS@PTDB ࣍ੈ୅ͷೝূʹ͍ͭͯઆ໌ΛࢼΈΔ 8FC"VUIFOUJDBUJPO"1*'*%0 8&#ΤϯδχΞษڧձ

  2. ࣗݾ঺հ © OSCA 04$"ᖛ໺Ұೋࡾ ͸·ͷ͔ͣ;Έ  4*FS໷ܠࣸਅՈ * ʮ8&#ΤϯδχΞษڧձʯΛओ࠵ *

    +BWB 1)1ܥͷ8&#ΤϯδχΞ * ਓ޻஌ೳ "* ͷ։ൃ΋΍ͬͯΔ * ݸਓͰ΋714आΓͯ8&#αʔϏεΛӡӦ͢Δͷ͕झຯ * ເͷࠃɹెาݍ಺ॅΈ * !FOHJOFFS@PTDB!PTDBQIPUP!EJTOFZ@PTDB
  3. © OSCA ͲΜͳ͜ͱ࿩͢ͷʁ

  4. ʮύεϫʔυೝূʯͷ՝୊Λղܾ͢Δ࣍ੈ୅ͷೝূ © OSCA ΞΧ΢ϯτ ύεϫʔυ ϩάΠϯ 8&#ͷੈքʹ͓͍ͯ΋ύεϫʔυΛར༻ͨ͠ೝূʹมΘ Δɺ৽͍͠ೝূٕज़͕ීٴ͠͸͡ΊΑ͏ͱ͍ͯ͠·͢ɻ

  5. ʮύεϫʔυೝূʯͷ՝୊Λղܾ͢Δ࣍ੈ୅ͷೝূ © OSCA ෼ͱ͍͏୹͍࿮ͷதͰɺ ʮͲΜͳ΋ͷͳͷ͔ʯͱ͍͏֓ཁΛ͓఻͍͑ͨ͠ͱࢥ͍·͢ɻ

  6. © OSCA ࠓ೔࿩͢͜ͱʹؔ࿈͢Δχϡʔε

  7. © OSCA ೥݄೔1VCMJDLFZ ύεϫʔυʹґଘ͠ͳ͍ೝূʮ8FC"VUIOʯΛ$ISPNF'JSFGPY&EHF͕࣮૷։ ࢝ɺ8$͕ඪ४Խɻ8FC͸ύεϫʔυʹґଘ͠ͳ͍ΑΓ҆શͰศརͳ΋ͷ΁ IUUQTXXXQVCMJDLFZKQCMPHXFCBVUIODISPNFGJSFGPYFEHFXDXFCIUNM l(PPHMFɺ.P[JMMBɺϚΠΫϩιϑτ͕ ʮ8FC"VUIOʯͷ࣮૷Λ։࢝ɻ͜ΕʹΑ ͬͯʮ'*%0ʯͷීٴ͕ظ଴͞Εɺ8FC ϒϥ΢β͔Βࢦ໲ೝূ΍إೝূͳͲͰ؆

    ୯ʹ8FCαΠτ΁ͷϩάΠϯ΍ࢧ෷͍ͷ ঝೝͱ͍ͬͨૢ࡞͕࣮ݱ͞Εͦ͏ͩɻz
  8. © OSCA ೥݄೔*5NFEJBΤϯλʔϓϥΠζ ʮ'JSFGPYʯެ։ɺύεϫʔυʹґଘ͠ͳ͍ೝূʮ8FC"VUIOʯΛαϙʔτ IUUQXXXJUNFEJBDPKQFOUFSQSJTFBSUJDMFTOFXTIUNM l৽͍͠ηΩϡϦςΟػೳͱͯ͠ɺύεϫ ʔυʹґଘ͠ͳ͍ೝূํ๏ͷʮ8FC "VUIFOUJDBUJPOʢ8FC"VUIOʣʯΛα ϙʔτͨ͠ɻz

  9. © OSCA ೥݄೔;%/FU+BQBO ʮ(PPHMF$ISPNFʯ҆ఆ൛ϦϦʔεʮ4QFDUSFʯ؇࿨ࡦɺʮ8FC"VUIOʯର ԠͳͲ IUUQTKBQBO[EOFUDPNBSUJDMF l݅ͷηΩϡϦςΟमਖ਼Λࢪͨ͠΄ ͔ɺύεϫʔυʹґଘ͠ͳ͍৽ͨͳೝূ ํࣜʮ8FC"VUIOʯʹσϑΥϧτͰରԠ ͢Δɻ

    தུ ࢦ໲΍εϚʔτϑΥϯʹอ ଘ͞Εͨإը૾ͷΑ͏ͳੜମೝূ৘ใɺ ͋Δ͍͸:VCJLFZͷೝূσόΠεͷΑ͏ ͳ64#ϋʔυ΢ΣΞΛར༻ͯ͠΢Σϒα ΠτʹαΠϯΞοϓ͢ΔखஈΛఏڙ͢ Δɻz
  10. © OSCA ೥݄೔1VCMJDLFZ ϚΠΫϩιϑτɺ8FC"VUIOΛ&EHFʹ࣮૷ɻύεϫʔυෆཁɺੜମೝূ΍1*/Ͱ 8FCαΠτ΁ϩάΠϯՄೳʹɻ೥ळͷ8JOEPXTΞοϓσʔτͰ IUUQTXXXQVCMJDLFZKQCMPHXFCBVUIOFEHFQJOXFCXJOEPXT@IUNM lϚΠΫϩιϑτ͸ɺ೥݄ࠒʹ༧ ఆ͞Ε͍ͯΔ8JOEPXTͷେܕΞοϓ σʔτʢ34ʣʹ޲͚ͯ։ൃதͷ࠷৽Ϗ ϧυɺ8JOEPXTCVJMEͰɺ

    ύεϫʔυෆཁͰ8FCαΠτʹϩάΠϯ Ͱ͖Δඪ४࢓༷ʮ8FC"VUIOʯΛ .JDSPTPGU&EHFʹ࣮૷ͨ͜͠ͱΛ໌Β ͔ʹ͠·ͨ͠ɻz
  11. © OSCA ೥݄೔1VCMJDLFZ $ISPNF͔Βɺ8FC"VUIOͰ.BDͷ5PVDI*%ͱ"OESPJEͷࢦ໲ೝূ͕σϑΥϧ τͰར༻Մೳʹɻ8FCαΠτ΁ͷϩάΠϯ΋λονͰ IUUQTXXXQVCMJDLFZKQCMPHDISPNF@XFCBVUIONBDUPVDIJEBOESPJEIUNM l(PPHMF͸݄ʹϦϦʔεͨ͠$ISPNF Ͱ8FC"VUIO΁ͷରԠΛߦ͍·ͨ͠ ͕ɺ݄ʹϦϦʔε͞ΕΔ$ISPNF Ͱ͸࣮૷ΛਐԽͤ͞ɺσϑΥϧτͰ.BD

    ͷ5PVDI*%ͱ"OESPJEͷࢦ໲ೝূʹରԠ ͢Δ͜ͱΛ໌Β͔ʹ͠·ͨ͠ɻz
  12. © OSCA ೥݄೔Ϡϑʔגࣜձࣾ Ϡϑʔɺ৽ͨͳ΢Σϒೝূͷن֨ʮ'*%0ʯͷ'*%0$FSUJGJFEʢೝఆʣΛࠃ಺ا ۀͰ།ҰऔಘɹύεϫʔυΛ࢖Θͳ͍҆શͳϩάΠϯ؀ڥͷ࣮ݱʹલਐ IUUQTBCPVUZBIPPDPKQQSSFMFBTFB lϠϑʔגࣜձࣾ͸ɺੜମೝূͳͲͷ࣍ੈ ୅ೝূͷඪ४ԽΛఏএ͢Δۀքஂମ '*%0ʢϑΝΠυʣΞϥΠΞϯεͷ৽ͨͳ ن֨ʮ'*%0ʯͷೝఆΛɺ೥݄ʹ

    ੈքͰॳΊͯ։࠵͞Εͨʮ'*%0ʯೝఆ ςετʹ͓͍ͯɺ͜ͷͨͼऔಘͨ͜͠ͱ Λ͓஌Βͤ͠·͢ɻࠃ಺اۀͰ͸།Ұͷ ೝఆऔಘͱͳΓ·͢ɻz
  13. © OSCA ೥݄೔Ϡϑʔגࣜձࣾ Ϡϑʔɺ"OESPJEεϚʔτϑΥϯͷ΢Σϒϒϥ΢βʔ্ͰͷϩάΠϯ͕ࢦ໲ೝূͳ ͲͷੜମೝূʹରԠ IUUQTBCPVUZBIPPDPKQQSSFMFBTFB l"OESPJEεϚʔτϑΥϯͷ΢Σϒϒϥ΢ βʔ্ʹ͓͍ͯɺϠϑʔͷαʔϏεʹࢦ ໲ೝূͳͲͷੜମೝূΛ࢖༻ͯ͠ϩάΠ ϯͰ͖ΔΑ͏ʹͳΓ·ͨ͠ɻz

    l·ͣ͸"OESPJEͷ୅දతͳ΢Σϒϒϥ΢ βʔͰ͋Δʮ(PPHMF$ISPNFʯʹରԠ ͍ͨ͠·͢ɻຊػೳ͸ɺ:BIPP+"1"/ *%ʹϩάΠϯ্ͨ͠Ͱɺੜମೝূͷઃఆ ʹɺ࢖༻͢Δ"OESPJEεϚʔτϑΥϯΛ ొ࿥͢Δ͜ͱͰར༻Ͱ͖·͢ɻz
  14. © OSCA χϡʔε͔ΒಡΈऔΕΔ͜ͱ͸ʁ

  15. ֤छϒϥ΢β͕ʮ8FC"VUIOʯʹରԠ © OSCA ೥݄೔ 'JSFGPY ೥݄೔ (PPHMF$ISPNF ·΋ͳ͘ .JDSPTPGU&EHF

  16. ֤छϒϥ΢β͕ʮ8FC"VUIOʯʹରԠ © OSCA ೥݄೔ 'JSFGPY ೥݄೔ (PPHMF$ISPNF ·΋ͳ͘ .JDSPTPGU&EHF ύεϫʔυ͕ෆཁͷ

    ೝূํࣜΒ͍͠
  17. Ϡϑʔגࣜձࣾࠃ಺།Ұͷ'*%0ೝఆऔಘ © OSCA

  18. © OSCA '*%0ΞϥΠΞϯε

  19. '*%0ΞϥΠΞϯε 'BTU*%FOUJUZ0OMJOF"MMJBODF © OSCA ੜମೝূΛϕʔεͱͨ͠ศརͰ҆શͳΦϯϥΠϯೝূΛ࣮ݱ ͢ΔͨΊʹɺ೥ʹ݁੒͞Εͨۀքஂମɻ <Ճໍஂମൈਮ> .JDSPTPGU (PPHMF "NB[PO

    .BTUFS$BSE 7*4"  ෋࢜௨ υίϞ -*/& େ೔ຊҹ࡮ ָఱ ࡾඛ6'+ Ϡϑʔ
  20. 8FC"VUIO΁ͷي੻ © OSCA 8$ʹ'*%0ͷ8FC"1*෦෼Λఏग़ɻ 8$8FC"VUIFOUJDBUJPOϫʔΩϯάάϧʔϓൃ଍ɻ 8FC"VUIFOUJDBUJPO 8FC"VUIO "1*קࠂީิʹɻ

  21. © OSCA ࢓૊Έͷ֓ཁ

  22. ύεϫʔυೝূͷ՝୊ © OSCA ଟ͘ͷ8&#αΠτͰར༻͞Ε͍ͯΔʮύεϫʔυೝূʯ͸ɺ ࣍ͷΑ͏ͳ՝୊͕͋Γ·͢ɻ ✓ ͓͔֮͑ͯͳ͍ͱ͍͚ͳ͍ ֮͑ΒΕͳ͍  ✓

    ೖྗ͕໘౗͍͘͞ ✓ ࿙Ӯ͠΍͍͢ ✓ ࠶ར༻͕Մೳ རศੑ ҆શੑ
  23. ύεϫʔυೝূͷ՝୊ © OSCA ʮΞΧ΢ϯτʯͱʮύεϫʔυʯͷೝূͰ͸ɺωοτϫʔΫ தΛʮύεϫʔυʯ͕ྲྀΕͯ͠·͍ͬͯΔɻ tGb9T3hM!gLaThB14P ೝূ

  24. ύεϫʔυೝূͷ՝୊ © OSCA ΋ͬͱzศརzͰz҆શzͳ࢓૊Έ͕͋Ε͹ྑ͍ͷʹɾɾɾ

  25. ৽͍͠ೝূͷ࢓૊Έ ֓ཁ © OSCA ➢ ύεϫʔυ େ੾ͳ΋ͷ ΛωοτϫʔΫதʹྲྀ͞ͳ͍ɻ tGb9T3hM!gLaThB14P

  26. ৽͍͠ೝূͷ࢓૊Έ ֓ཁ © OSCA ➢ ύεϫʔυ େ੾ͳ΋ͷ ΛωοτϫʔΫதʹྲྀ͞ͳ͍ɻ ➢ ೝূ͸σόΠεଆͷzศརͳํ๏lͰߦ͏ɻ

    tGb9T3hM!gLaThB14P ೝূ
  27. ৽͍͠ೝূͷ࢓૊Έ ֓ཁ © OSCA ➢ ύεϫʔυ େ੾ͳ΋ͷ ΛωοτϫʔΫதʹྲྀ͞ͳ͍ɻ ➢ ೝূ͸σόΠεଆͷzศརͳํ๏zͰߦ͏ɻ

    ➢ ೝূ݁ՌΛαʔόʔʹૹ৴͢Δɻ tGb9T3hM!gLaThB14P ೝূ݁Ռ ೝূ
  28. ৽͍͠ೝূͷ࢓૊Έ ֓ཁ © OSCA ͜͜·Ͱͷઆ໌͚ͩͩͱ ʮೝূ݁ՌΛӕ͔ͭΕͨΒͲ͏͢ΔΜͩʁʯ ͱࢥ͑ͯ͠·͏͚Ͳɺͦ͜͸͔ͬ͠Γߟ͑ΒΕ͍ͯΔɻ

  29. © OSCA ࢓૊Έ ৄࡉ

  30. ొ৔͢Δ΋ͷ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ʮೝূثʯʮϒϥ΢βʯʮαʔόʔʯ
  31. ొ৔͢Δ΋ͷ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ʮೝূثʯʮϒϥ΢βʯʮαʔόʔʯ ࢦ໲ηϯλʔ Χϝϥ 64#Ωʔ ͳͲ
  32. ొ৔͢Δ΋ͷ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ʮೝূثʯʮϒϥ΢βʯʮαʔόʔʯ 8FC"VUIOʹ ରԠͨ͠ϒϥ΢β
  33. ొ৔͢Δ΋ͷ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ೝূثͷʮൿີ伴ʯʮެ։伴ʯ ެ։伴҉߸ํࣜ ൿີ伴 ެ։伴
  34. ొ৔͢Δ΋ͷ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ೝূثͷʮൿີ伴ʯʮެ։伴ʯ ެ։伴҉߸ํࣜ ൿີ伴 ެ։伴 ೝূثݻ༗ͷ ൿີ伴ɾެ։伴Λ࣋ͭ
  35. ԡ͓͑ͯ͘͞΂͖ͭͷॲཧ © OSCA  ೝূʹར༻͢Δೝূثͷొ࿥  ೝূثΛར༻ͨ͠ೝূ

  36. ೝূʹར༻͢Δೝূثͷొ࿥ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ϩάΠϯೝূͳͲͰར༻͍ͨ͠ೝূثΛɺ αʔϏεΛఏڙ͍ͯ͠Δαʔόʔʹొ࿥͠·͢ɻ
  37. ೝূʹར༻͢Δೝূثͷొ࿥ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ϩάΠϯೝূͳͲͰར༻͍ͨ͠ೝূثΛɺ αʔϏεΛఏڙ͍ͯ͠Δαʔόʔʹొ࿥͠·͢ɻ ࠓޙར༻͢Δೝূث Λڭ͑ͯʔʂ
  38. ೝূʹར༻͢Δೝূثͷొ࿥ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ϩάΠϯೝূͳͲͰར༻͍ͨ͠ೝূثΛɺ αʔϏεΛఏڙ͍ͯ͠Δαʔόʔʹొ࿥͠·͢ɻ ೝূث͝ͱͷॴఆͷ खஈͰɺϢʔβݕূ
  39. ೝূʹར༻͢Δೝূثͷొ࿥ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ϩάΠϯೝূͳͲͰར༻͍ͨ͠ೝূثΛɺ αʔϏεΛఏڙ͍ͯ͠Δαʔόʔʹొ࿥͠·͢ɻ ൿີ伴ɾެ։伴͕ੜ ੒͞ΕΔ ൿີ伴 ެ։伴
  40. ೝূʹར༻͢Δೝূثͷొ࿥ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ϩάΠϯೝূͳͲͰར༻͍ͨ͠ೝূثΛɺ αʔϏεΛఏڙ͍ͯ͠Δαʔόʔʹొ࿥͠·͢ɻ ެ։伴ͳͲΛؚΉ৘ ใΛૹΓฦ͢ɻ ൿີ伴 ެ։伴
  41. ೝূʹར༻͢Δೝূثͷొ࿥ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ϩάΠϯೝূͳͲͰར༻͍ͨ͠ೝূثΛɺ αʔϏεΛఏڙ͍ͯ͠Δαʔόʔʹొ࿥͠·͢ɻ Ϣʔβ৘ใͱެ։伴 Λඥ͚ͮΔɻ ʮྃղʂొ࿥ͨ͠ʂʯ ൿີ伴 ެ։伴
  42. ೝূʹར༻͢Δೝূثͷొ࿥ © OSCA ҎޙɺରʹͳΔʮൿີ伴ʯͰॺ໊͞Εͨσʔλ͸ɺ ొ࿥͞Εͨೝূث͔Βͷσʔλͩͱ͍͏͜ͱʹͳΔɻ ެ։伴҉߸ํࣜͷಛ௃ʹΑΓ

  43. ೝূثΛར༻ͨ͠ೝূ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ೝূ࣌͸ɺొ࿥ࡁΈͷೝূث͔Βͷ݁ՌΛ৴པ͢Ε͹ྑ͍ɻ ൿີ伴 ެ։伴 ೝূΑΖ͘͠
  44. ೝূثΛར༻ͨ͠ೝূ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ೝূ࣌͸ɺొ࿥ࡁΈͷೝূث͔Βͷ݁ՌΛ৴པ͢Ε͹ྑ͍ɻ ൿີ伴 ެ։伴 ೝূث͝ͱͷॴఆͷ खஈͰɺϢʔβݕূ
  45. ೝূثΛར༻ͨ͠ೝূ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ೝূ࣌͸ɺొ࿥ࡁΈͷೝূث͔Βͷ݁ՌΛ৴པ͢Ε͹ྑ͍ɻ ൿີ伴 ެ։伴 ೝূثͰͷೝূ݁Ռ Λൿີ伴Λར༻ͯ͠ॺ ໊͢Δɻ ೝূ݁Ռ
  46. ೝূثΛར༻ͨ͠ೝূ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ೝূ࣌͸ɺొ࿥ࡁΈͷೝূث͔Βͷ݁ՌΛ৴པ͢Ε͹ྑ͍ɻ ൿີ伴 ެ։伴 ॺ໊͞Εͨೝূ݁Ռ ΛૹΓฦ͢ɻ ೝূ݁Ռ
  47. ೝূثΛར༻ͨ͠ೝূ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ೝূ࣌͸ɺొ࿥ࡁΈͷೝূث͔Βͷ݁ՌΛ৴པ͢Ε͹ྑ͍ɻ ൿີ伴 ެ։伴 ެ։伴Λར༻ͯ͠ɺ ೝূ݁ՌΛݕূ͠ɺ ໰୊ͳ͚Ε͹ϢʔβΛ ಛఆͰ͖Δɻ ೝূ݁Ռ
  48. © OSCA ීٴʹ޲͚ͯ

  49. ීٴʹ޲͚ͯ © OSCA ϒϥ΢β Web Authentication API αʔόʔ ೝূث "VUIFOUJDBUPS

    ϒϥ΢β͚͕ͩ8FC"VUIOʹରԠ͢Ε͹ྑ͍༁Ͱ͸ͳ͘ɺ ೝূثɾαʔόʔ΋ରԠͨ͠΋ͷ͕ඞཁͰ͋Δɻ
  50. © OSCA ·ͱΊɾॴײ

  51. ·ͱΊ © OSCA ➢ ֤ϒϥ΢βͰ8FC"VUIFOUJDBUJPO"1* 8FC"VUIO  ͷ࣮૷͕ਐΊΒΕ͍ͯΔ͜ͱͰɺϒϥ΢βͰ'*%0ೝূ͕ ࣮ݱͰ͖ΔΑ͏ʹͳ͖ͬͯͨɻ ➢

    ࠃ಺Ͱ͸Ϡϑʔ͕͍ͪૣ͘ରԠΛߦͬͨɻ ➢ ೥͕ʮݩ೥ʯʹͳΔ͔΋ʂʁ
  52. ؾʹͳ͍ͬͯΔ఺ © OSCA ➢ 8FC"VUIO '*%0 ΁ͷରԠίετ ✓ ʮ΢ν΋ରԠ͍ͨ͠ʯͱͳͬͨͱ͖ɺͲͷ͘Β͍େมͳͷ͔ʁ ✓

    '*%0ن֨ͷ೉қ౓͸ʁ
  53. ૉࡐར༻ 4*-)06&55&*--645 IUUQTXXXTJMIPVFUUFJMMVTUDPN © OSCA