下記カンファレンスでの発表資料です。 https://builderscon.io/builderscon/tokyo/2019/session/c9da9bfb-c97c-4f93-a496-ff83b3ca61bc
WebAuthn/FIDOͷUXపఈղઆ~࣮αʔϏεͷಋೖΠϝʔδΛఴ͑ͯ~͍ͱ͏Γΐ͏!SJUPVCVJMEFSTDPOUPLZP
View Slide
͍ͱ͏Γΐ͏• (ג)ϛΫγΟ ΤϯδχΞ - Identity / Platform / Payment?• OpenID ϑΝϯσʔγϣϯɾδϟύϯ ΤόϯδΣϦετ• Blog : ritou.hatenablog.com• Twitter : @ritou (ळాͷೣ)• ˌidcon, #iddance!2
WebAuthnؔ࿈ͷൃද!3https://speakerdeck.com/ritou
ຊͷલʹ• ࠓΘΕ͍ͯΔϢʔβʔೝূ• FIDO/WebAuthn֓ཁ!4
ύεϫʔυೝূ• ࣝใ (SYK:Something You Know) Λར༻• ཁ͕݅ຬͨ͞ΕΔͳΒࢸߴͷೝূํࣜ• Ϣʔβʔ• αʔϏε!5
ύεϫʔυೝূʹ͓͚Δཁ݅• Ϣʔβʔ• ਪଌෆՄೳͳจࣈྻΛੜ• αʔϏεຖʹҟͳΔจࣈྻΛཧ• ֘αʔϏεʹͷΈೖྗ!6
ύεϫʔυೝূͷݱঢ়• Ϣʔβʔ• ਪଌෆՄೳͳจࣈྻΛੜ -> ؆୯ɺਪଌՄೳ• αʔϏεຖʹҟͳΔจࣈྻΛཧ -> ͍ճ͠• ֘αʔϏεʹͷΈೖྗ -> ॊೈͳରԠ!7
ύεϫʔυೝূʹ͓͚Δཁ݅• αʔϏε• ਪଌෆՄೳͳจࣈྻΛڐ༰• ύεϫʔυΛ҆શʹཧ• ༷ʑͳڴҖͷରࡦ!8
ύεϫʔυೝূͷݱঢ়• αʔϏε• ਪଌෆՄೳͳจࣈྻΛڐ༰ -> ӳ࠷େ8จࣈ• ύεϫʔυΛ҆શʹཧ -> ͦͷ··อଘ/࿙Ӯ• ༷ʑͳڴҖͷରࡦ -> Ϧετ߈ܸରࡦͳͲ!9
ύεϫʔυೝূͷݱঢ়• ͲͪΒཁ݅Λຬ͍ͨͯ͠ͳ͍• ݪҼਓྨͷεϖοΫෆ(1ͿΓ2ճ)!10
ύεϫʔυೝূͷݱঢ়• Ϣʔβʔϋʔυ/ιϑτΣΞͷαϙʔτ͕ඞཁ• ύεϫʔυೖྗΦϖϨʔλͱͯ͠༏लͰͳ͍• αʔϏεͷίετόΧʹͳΒͳ͍• Ϧετ߈ܸରࡦΠλνͬ͜͝ʹʁ• ໌Δ͍ະདྷ͕ݟ͑ͳ͍ೝূํࣜɺΊͪΌ͑ʁ!11
࣍ͷҰख• 2(ஈ֊|ཁૉ)ೝূͱݺΕΔՃೝূ• ϫϯλΠϜύεϫʔυ• खݩͷεϚϗ/σόΠεͰڐՄ!12
ϫϯλΠϜύεϫʔυೝূ• ϫϯλΠϜύεϫʔυΛར༻• ϝʔϧ/SMSʹΑΓૹ• ιϑτ/ϋʔυΣΞͰੜ• όοΫΞοϓίʔυ͔Β!13
ϫϯλΠϜύεϫʔυೝূͷΩϞ• ϫϯλΠϜύεϫʔυΛར༻• ϝʔϧ/SMSʹΑΓૹ -> ௨৴࿏ͱૹड৴• ιϑτ/ϋʔυΣΞͰੜ -> 伴ͷཧ• όοΫΞοϓίʔυ͔Β -> ίʔυҰཡͷཧ!14
ϫϯλΠϜύεϫʔυೝূͷΩϞ• ϫϯλΠϜύεϫʔυΛར༻ (※ࣗಈೖྗ͋Γ)• ϝʔϧ/SMSʹΑΓૹ -> Ϣʔβʔ͕ೖྗ• ιϑτ/ϋʔυΣΞͰੜ -> Ϣʔβʔ͕ೖྗ• όοΫΞοϓίʔυ͔Β -> Ϣʔβʔ͕ೖྗ!15
ϫϯλΠϜύεϫʔυͱϑΟογϯά߈ܸ!16ϑΟογϯάϝʔϧɺϝοηʔδϑΟογϯάαΠτʢFYBNQMFJOGPʣਖ਼نͷαΠτFYBNQMFDPN*%ύεϫʔυϫϯλΠϜύεϫʔυऔಘͨ͠*%ύεϫʔυϫϯλΠϜύεϫʔυ
खݩͷσόΠεͰڐՄ• खݩͷσόΠεʹ௨• ϩοΫղআͱΈ߹Θͤ• σόΠεઐ༻ΞϓϦͷϓογϡͳͲͰ࣮ݱ!17
ՃೝূͷޮՌ• ϫϯλΠϜύεϫʔυ• ϑΟογϯάαΠτ͕ಉظతʹਖ਼نͷαΠτʹΞΫηε͢ΔͱೝূΛಥഁ͞ΕΔՄೳੑ• खݩͷσόΠεͰڐՄ• ͳΜͰ͔ΜͰڐՄͨ͠ΒNG• ϑΟογϯάαΠτ͕ಉظతʹਖ਼نͷαΠτʹΞΫηε͢Δͱؾ͔ͳ͍ͰڐՄͯ͠͠·͏Մೳੑ!18
FIDO / WebAuthn ֓ཁ
FIDO(First IDentity Online)• ϩʔΧϧೝূΛར༻• ύεϫʔυੜମใ͕௨৴࿏ΛྲྀΕͳ͍• (ੜମೝূʹݶΒͣ)༷ʑͳೝূํࣜͱͷΈ߹Θ͕ͤՄೳ• ެ։伴҉߸ํࣜΛ༻͍ͨ̎ͭͷػೳ• ొ : ॺ໊ͱެ։伴ใΛૹ৴• ೝূ : ॺ໊Λૹ৴!20
FIDOͷϢʔεέʔε!21• ύεϫʔυϨεೝূͱͯ͠ (ॴ࣋+ϩʔΧϧೝূ)• Ճೝূͱͯ͠ (ॴ࣋)• ࠶ೝূͷํ๏ͱͯ͠
FIDO2 Project• FIDO2 : WebΞϓϦέʔγϣϯ͔ΒFIDO• WebAuthn (Web Authentication API)• FIDOΛར༻͢ΔαʔϏε͕ݺͼग़͢JavaScript API• CTAP (Client To Authenticator Protocol)• ηΩϡϦςΟΩʔͱΓͱΓ͢ΔͨΊͷ༷• ϒϥβ͕࣮!22
WebAuthn(WebAuthentication API)• 2019/3/4 W3Cקࠂ https://www.w3.org/TR/webauthn/• ఆٛ͞Ε͍ͯΔ2ͭͷAPI• navigator.credentials.create() : ొ• navigator.credentials.get() : ೝূ!23
WebAuthn - ొਓ!24• Relying Party : WebΞϓϦ• Authenticator : ηΩϡϦςΟΩʔɺσόΠε• Client : Webϒϥβ
WebAuthn - ొਓ!25IUUQTHJIZPKQEFWDPMVNOOFXZFBSXFCBVUIO QBHF
WebAuthn - ొਓ!26IUUQTHJIZPKQEFWDPMVNOOFXZFBSXFCBVUIO QBHF
WebAuthn - ొϑϩʔ!271. ొ༻ύϥϝʔλ࡞ (RPใ,Ϣʔβʔใ,ϩʔΧϧೝূͷ༗ແͳͲ)3. Authenticator/PlatformͷػೳΛݺͼग़͢2. JS APIͷݺͼग़͠4.ϩʔΧϧೝূ伴ϖΞੜॺ໊࡞5. ৽͍͠ެ։伴ͱॺ໊6. JS API͔ΒͷΓ 7.֤छݕূެ։伴ͷอଘAuthenticator(SecurityKey etc…)Client(ϒϥβ)Relying Party(αʔϏε)
ొ༻ύϥϝʔλͷࢦఆྫ!28• Attachment : Authenticatorͷछྨ• User Verification : ϩʔΧϧೝূͷཁٻ• Require ResidentKey : ϢʔβʔใΛอଘ
Attachment : Undefined(macOS + Google Chrome)!29Ϣʔβʔ͕ར༻͢Δ"VUIFOUJDBUJPSΛબ
Platform Authenticator(macOS + Google Chrome)!30
Cross-Platform Authenticator(macOS + Google Chrome)!31
Attachment : Undefined(Windows10 + MS Edge)!328JOEPXT)FMMP༏ઌ Ωϟϯηϧˠ$SPTT1MBUGPSN
ొ༻ύϥϝʔλͷࢦఆྫ!33• Attachment : Authenticatorͷछྨ• User Verification : ϩʔΧϧೝূͷཁٻ• Require ResidentKey : ϢʔβʔใΛอଘ
AuthenticatorͱϩʔΧϧೝূ!34'*%0ηΩϡϦςΟΩʔσόΠεʛ#JP1BTT'*%0cඈఱδϟύϯ IUUQTGUTBGFDPKQQSPEVDUTGJEP
AuthenticatorͱϩʔΧϧೝূ!35%JTDPWFS:VCJ,FZTc4USPOH5XP'BDUPS"VUIFOUJDBUJPOGPS4FDVSF-PHJOc:VCJDP IUUQTXXXZVCJDPDPNQSPEVDUTZVCJLFZIBSEXBSF
User Verification : Required(macOS + Google Chrome)!36ϩʔΧϧೝূͷͳ͍σόΠεͰ1*/ͷར༻͕Մೳ
User Verification : Required(Windows10 + MS Edge)!37
ొ༻ύϥϝʔλͷࢦఆྫ!38• Attachment : Authenticatorͷछྨ• User Verification : ϩʔΧϧೝূͷཁٻ• Require ResidentKey : ϢʔβʔใΛอଘ
Require ResidentKey : True(macOS + Google Chrome)!3969͕มΘΔ߹
WebAuthn - ೝূϑϩʔ!40Authenticator(SecurityKey etc…)Client(ϒϥβ)Relying Party(αʔϏε)1. ೝূ༻ύϥϝʔλ࡞ (ެ։伴ใ,ϩʔΧϧೝূͷ༗ແͳͲ)3. Authenticator/PlatformͷػೳΛݺͼग़͢2. JS APIͷݺͼग़͠4.ϩʔΧϧೝূॺ໊࡞5. ॺ໊6. JS API͔ΒͷΓ 7.֤छݕূೝূॲཧ
ೝূ༻ύϥϝʔλͷࢦఆྫ!41• AllowCredentials : ެ։伴ͷࢦఆ• ͋Γ : RP͕อ͍࣋ͯ͠Δެ։伴Λࢦఆ• ͳ͠(ۭ) : Authenticator ʹอଘ͞Ε͍ͯΔใΛར༻
allowCredentialsࢦఆ͋Γ(macOS + Google Chrome)!42ࢦఆͨ͠ެ։ݤʹඥͮ͘"VUIFOUJDBUPSΛཁٻ
allowCredentialsࢦఆ͋Γ(Windows10 + MS Edge)!43
ೝূ༻ύϥϝʔλͷࢦఆྫ!44• AllowCredentials : ެ։伴ͷࢦఆ• ͋Γ : RP͕อ͍࣋ͯ͠Δެ։伴Λࢦఆ• ͳ͠(ۭ) : Authenticator ʹอଘ͞Ε͍ͯΔใΛར༻ -> Resident Key
allowCredentialsࢦఆͳ͠(macOS + Google Chrome)!45ϩʔΧϧೝূอଘ͞Ε͍ͯΔϢʔβʔใ͔Βબ
allowCredentialsࢦఆͳ͠(macOS + Google Chrome)!46ηΩϡϦςΟΩʔͷ߹࠷ޙʹϢʔβʔใબ
allowCredentialsࢦఆͳ͠(Windows10 + MS Edge)!478JOEPXT)FMMPͰϢʔβʔબϩʔΧϧೝূ
allowCredentialsࢦఆͳ͠(Windows10 + MS Edge)!48ηΩϡϦςΟΩʔͷ߹ϩʔΧϧೝূޙϢʔβʔબ
WebAuthnͷϑΟογϯάੑ(Ճೝূ)!49ϑΟογϯάϝʔϧɺϝοηʔδϑΟογϯάαΠτʢFYBNQMFJOGPʣਖ਼نͷαΠτFYBNQMFDPN*%ύεϫʔυΞαʔγϣϯॺ໊ͳͲऔಘͨ͠*%ύεϫʔυΞαʔγϣϯ
WebAuthnͷϑΟογϯάੑ(Ճೝূ)!50ϑΟογϯάϝʔϧɺϝοηʔδϑΟογϯάαΠτʢFYBNQMFJOGPʣਖ਼نͷαΠτFYBNQMFDPN*%ύεϫʔυΞαʔγϣϯॺ໊ͳͲऔಘͨ͠*%ύεϫʔυΞαʔγϣϯPSJHJO୯ҐͰ伴ϖΞΛੜ͍ͯ͠ΔͷͰϑΟογϯάαΠτʹϩάΠϯͰ͖ͳ͍
WebAuthnͷϑΟογϯάੑ(Ճೝূ)!51ϑΟογϯάϝʔϧɺϝοηʔδϑΟογϯάαΠτʢFYBNQMFJOGPʣਖ਼نͷαΠτFYBNQMFDPN*%ύεϫʔυΞαʔγϣϯॺ໊ͳͲऔಘͨ͠*%ύεϫʔυΞαʔγϣϯPSJHJO୯ҐͰ伴ϖΞΛੜ͍ͯ͠ΔͷͰϑΟογϯάαΠτʹϩάΠϯͰ͖ͳ͍ϑΟογϯάαΠτ͚ͷΞαʔγϣϯΛਖ਼نͷαΠτʹૹͬͯݕূࣦഊ͢Δ
࠷ۙͷFIDO/WebAuthnͷରԠঢ়گ!52• Android• Authenticator: Android 7.0~, Security Key• Client: Chrome, Firefox• Windows 10• Authenticator: Windows Hello, SecurityKey• Client : Microsoft Edge, Chrome, Firefox…
WebAuthnͷ࣮ʹ͍ͭͯ!53• ͜͜Ͱհ͠·ͤΜ
͍Α͍ΑຊFIDO / WebAuthn UX
հ͢ΔϢʔεέʔε• Ճͷೝূํࣜͱͯ͠: ύεϫʔυೝূ + FIDO• ϝΠϯͷೝূํࣜͱͯ͠: ύεϫʔυೝূ or FIDO!55
Dropbox
Dropbox - ొ!57ઃఆલʹύεϫʔυ֬ೝΛཁٻ
Dropbox - ొ!58σόΠεใʹର͢ΔΞΫηεڐՄ֬ೝΛཁٻ "UUFTUBUJPOOPOF
Dropbox - ొ!59໊લΛ͚ͭͯྃ
Dropbox - ೝূ!60ύεϫʔυೝূͷޙʹೝূΛཁٻ
Dropbox - ೝূ!61ιʔγϟϧϩάΠϯޙʹೝূΛཁٻ
Dropboxͷಋೖྫ• ̎ஈ֊ೝূͷ2ͭҎ߱ͷೝূํࣜͱͯ͠ઃఆ• ར༻ՄೳͳAuthenticatorʹ੍ݶͳ͠• ొॲཧޙʹ໊લΛઃఆ• ύεϫʔυೝূ͚ͩͰͳ͘ɺιʔγϟϧϩάΠϯͷޙʹཁٻ͞ΕΔ!62
GitHub
GitHub - ొ!64ొॲཧͷલʹ໊લΛઃఆͤ͞Δ
GitHub - ొ!651MBUGPSN"VUIFOUJDBUPSར༻Մೳ
GitHub - ೝূ!66ύεϫʔυೝূޙʹར༻
GitHub - ೝূ!67ύεϫʔυ֬ೝ࣌ʹηΩϡϦςΟΩʔΛར༻Մೳ
GitHubͷಋೖྫ• ̎ཁૉೝূͷ2ͭҎ߱ͷೝূํࣜͱͯ͠ઃఆ• ར༻ՄೳͳAuthenticatorʹ੍ݶͳ͠• ొॲཧલʹ໊લΛઃఆ• ύεϫʔυೝূͷޙ͚ͩͰͳ͘ɺ࠶ೝূ࣌ʹηΩϡϦςΟΩʔΛ༻͍ͨೝূ͕Մೳ!68
Google
Google - ొ!70"OESPJEҎ߱ͷσόΠεΛ؆୯ʹઃఆͰ͖Δ
Google - ొ!71$SPTT1MBUGPSN"VUIFOUJDBUPS 5JUBOFUDʜొՄೳ
Google - ೝূ!72ύεϫʔυೝূޙʹՃೝূΛཁٻ
Google - ೝূ!73εϚϗͰڐՄ͢Δͱೝূ͕ྃ
Google - ೝূ!74ηΩϡϦςΟΩʔΛબޙɺλοϓ͢Δͱྃ
Googleͷಋೖྫ• ̎ஈ֊ೝূͷ2ͭҎ߱ͷೝূํࣜͱͯ͠ར༻Մೳ• Cross-platform Authenticator• Androidར༻Մೳ• ϖΞϦϯάͳ͠ͷBluetoothଓ(caBLE)• ͍ۙ͏ͪʹ࠶ೝূ࣌ʹར༻ՄೳʹͳΓͦ͏!75
ʮՃೝূͱͯ͠ͷಋೖʯͷϙΠϯτ• ෳͷೝূํࣜΛఏڙ : ʮ٧Έʹ͍͘ʯΈ• Authenticatorͷ੍ݶ• ໊લͷઃఆ• ೝূཁٻͷλΠϛϯά• ύεϫʔυೝূ / ιʔγϟϧϩάΠϯͷޙ• ύεϫʔυ֬ೝͷସͱͯ͠!76
հ͢ΔϢʔεέʔε• Ճͷೝূํࣜͱͯ͠: ύεϫʔυೝূ + FIDO• ϝΠϯͷೝূํࣜͱͯ͠: ύεϫʔυೝূ or FIDO!77
Yahoo! JAPAN
Yahoo! JAPAN - ొ!79"OESPJE$ISPNFڥʹݶఆ
Yahoo! JAPAN - ొ!804.4ϝʔϧ֬ೝίʔυͱͷซ༻Մೳ
Yahoo! JAPAN - ೝূ!81Ϣʔβʔࣝผޙɺ"OESPJE$ISPNFͳΒೝূཁٻ
Yahoo! JAPANͷಋೖྫ• Android + Chrome ͱݴ͏Έ߹Θͤʹݶఆ• ͦΕҎ֎ͷڥͰϝʔϧ / SMSͰͷ֬ೝίʔυૹ৴Λར༻• ϢʔβʔࣝผޙʹೝূํࣜΛग़͠Θ͚• ొޙͷ࠶ೝূͰಉ͡ೝূํࣜ!82
Microsoft
Microsoft - ొ!848JOEPXT)FMMP͕ಈ࡞͢ΔڥͰ͋Ε$SPTT1MBUGPSN"VUIFOUJDBUPSར༻Մೳ
Microsoft - ొ!856TFS7FSJGJDBUJPOSFRVJSFE
Cross-Platform Authenticator!86ͪΖΜ8JOEPXT)FMMP୯ମͰొՄೳ
Microsoft - ೝূ!87Ϣʔβʔࣝผલʹೝূཁٻ 3FTJEFOU,FZ
Microsoftͷಋೖྫ• Windows Hello͕͑Δڥ + MS Edgeݶఆ• Windows Hello୯ମ• USB/NFCͳηΩϡϦςΟΩʔར༻Մೳ• αΠϯΠϯΦϓγϣϯͱͯ͠Ϣʔβʔࣝผલʹཁٻ• Resident KeyʹΑΔϢʔβʔબ!88
Nulab(ψʔϥϘΞΧϯτ)
ψʔϥϘΞΧϯτ - ొ!90྆ํͷ"VUIFOUJDBUPSʹରԠ
ψʔϥϘΞΧϯτ - ొ!91ొॲཧྃ࣌ʹ໊લΛઃఆ
ψʔϥϘΞΧϯτ - ೝূ!92ϝΞυͰࣝผޙʹ8FC"VUIOͷೝূཁٻ
ψʔϥϘΞΧϯτͷಋೖྫ• ϝΠϯͷೝূํࣜͱͯ͠ύεϫʔυೝূͱซ༻Մೳ• ར༻ՄೳͳAuthenticatorʹ੍ݶͳ͠• ෳొՄೳɺϢʔβʔ໊͕લΛ͚ͭΔ• Ϣʔβʔࣝผޙʹೝূཁٻ!93
ʮϝΠϯͷೝূํࣜͱͯ͠ͷಋೖʯͷϙΠϯτ• UserVerificationඞਢ• αϙʔτڥ(Authenticator/Client)ͷ੍ݶ• ੍ݶ͋Γ = ϝϯςφϯε͕ඞཁ• ੍ݶͳ͠ = FIDO2ରԠڥͳΒউखʹରԠՄೳ• ೝূཁٻͷλΠϛϯά• ϝΞυͰࣝผޙʹઃఆͱڥͷఆ• ResidentKeyΛར༻ͯ͠Ϣʔβʔબ!94
ύεϫʔυϨεʹ͚ͯ
ύεϫʔυϨεͷಓ• ৽نαʔϏεͰύεϫʔυೝূΛಋೖ͠ͳ͍• WebAuthn/FIDO͕͑ͳ͍ڥͷέΞ• طଘͷαʔϏε͔ΒύεϫʔυೝূΛऔΓআ͘1. ґଘΛͳ͘͢2. (ڧ੍͘͠ҙͰ)ແޮԽ!96
ύεϫʔυೝূͷґଘͱ• ৽نొϑϩʔ• ύεϫʔυΛઃఆ͔ͯ͠Βϝʔϧ/SMS֬ೝ• ϩάΠϯͰ͖ͳ͍ϦϯΫ• ύεϫʔυϦηοτϑϩʔ• ઃఆมߋͳͲॏཁͳॲཧ• ύεϫʔυ֬ೝ!97
ύεϫʔυೝূͷґଘΛऔΓআ͘• ৽نొϑϩʔ• ΫϨσϯγϟϧઃఆͱϝʔϧ/SMS֬ೝͷ• ΫϨσϯγϟϧઃఆ෦Λ֦ுՄೳʹ͢Δ• ϩάΠϯͰ͖ͳ͍ϦϯΫ• ผͷೝূํࣜઃఆมߋͷ༠ಋ• ઃఆมߋͳͲॏཁͳॲཧ• ෳͷೝূํࣜΛڐ༰!98
ψʔϥϘΞΧϯτͷ৽نొ• ࠷ॳʹύεϫʔυઃఆ• ґଘΛऔΓআͨ͘Ίʹ• ϝΞυ֬ೝΛઌʹʁ!99
Dropboxͷύεϫʔυ֬ೝ• ηΩϡϦςΟػೳͷલʹύεϫʔυཁٻ• ґଘΛऔΓআͨ͘Ίʹ• ઃఆࡁΈͷೝূํࣜʹ߹Θͤͨ࠶ೝূ• υϝΠϯ/originཧ!100
Yahoo! JAPANͷ࠶ೝূ• ύεϫʔυΛ֬ೝ͍ͯͨ͠ͱ͜ΖͰϝΠϯͷೝূํࣜΛཁٻ• SMS / Email• WebAutnn• υϝΠϯ͕౷Ұ!101
ύεϫʔυೝূͷແޮԽ• ύεϫʔυΛΘͳ͍ʹϦετ߈ܸΛड͚ͳ͍• Yahoo! JAPAN / ψʔϥϘΞΧϯτ!102
Yahoo! JAPANͷύεϫʔυೝূແޮԽ!103ϝʔϧιϑτͳͲͷύεϫʔυผ్ઃఆՄೳ
ψʔϥϘΞΧϯτͷύεϫʔυআ!1048FC"VUIOରԠڥͰ͔͠Θͳ͍ͳΒআՄೳ
·ͱΊ
ࠓճͷ༰• WebAuthnΛಋೖͨ͠αʔϏεͷUXΛհͨ͠• ࣮αʔϏεͷಋೖ࣌ͷϙΠϯτΛཧͨ͠• ύεϫʔυೝূ͕͋ΔαʔϏεͷಋೖ• ύεϫʔυϨεͷҠߦ!106
• ࣭͝ɺײͳͲ͓͓ͪͯ͠Γ·͢• ϒϩάͰͷݴٴͳͲ• Twitter ͷϋογϡλά or ϝϯγϣϯ• ஏ͔͚ͣ͠ΕDMͰ!107͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠