Slide 1

Slide 1 text

҉߸௨՟ɾϒϩοΫ νΣʔϯΛͨ͠ͳΉ +4ϑϨϯζ !FSVLJUJ

Slide 2

Slide 2 text

!FSVLJUJ w લ৬͸΢Σϒܥͷ๭ࣾʢ΄΅όοΫΤϯυʣ w ϑϦʔϥϯεΤϯδχΞʢि͋ͨΓɾ೔·ͰͷҊ݅ͱ͔ͳΒ ͝૬ஊʹ৐Ε·͢ʣ w HJUIVC 2JJUBଞͰɺ!FSVLJUJͰ׆ಈ w 5ZQF4DSJQUେ޷͖ w KFTUͰ5%%େ޷͖ w ٕज़ॻϥΠςΟϯά΋ͨ͠ͳΉ

Slide 3

Slide 3 text

/FYU1VCMJTIJOH4BNQMF #BCFMͱ"45Λ ࢖͍ ͜ ͳ ͠ ͯ +BWB4DSJQU։ൃΛՃ଎ ʂ ΠϯϓϨεR&Dʦ NextPublishing ʧ E-Book / Print Book s e r i e s ٕ ज़ ॻ య ࠤʑ໦ ढ़հ ஶ ιʔεΛղੳ ɾ Ճ޻ͯ͠ੜ࢈ੑʹࠩΛ͚ͭΔ ʂ JavaScript ASTೖ໳ ٕ ज़ ॻ య 9784844398226 1922055018009 ISBN978-4-8443-9822-6 C2055 ¥1800E Ձ֨ 1800 ԁʴ੫ ຊॻ͸ॻళͳͲͰͷൢചՁ֨Λ߆ଋ͍ͯ͠·ͤΜɻ ٕज़ॻయ ٕज़ॻయ ٕज़ॻయ ٕज़ॻయ ঎ۀԽ ঎ۀԽ

Slide 4

Slide 4 text

ݱࡏൢചதͷຊ w ୯ஶ w IUUQTULSBCCJUIPVTFCPPUIQNJUFNT w IUUQTBN[OUP,Z.HS/ w IUUQTBN[OUP*U2):Q w ߹ಉࢽ w IUUQTBN[OUP,"/ZN

Slide 5

Slide 5 text

๻ͷϓϩάϥϛϯάɾ+4ཤྺ w ೥୅͔Β$ݴޠΛϝΠϯͱͯ͠ɺ೥͔Β3VCZ΋ซ ༻ͱ͍͏ܗͰͣͬͱ΍͖ͬͯͨ 1)1 +BWB 4DBMB (PͳͲ΋ʜ w ೥ࠒʹ΄Μͷগ͚ͩ͠+BWB4DSJQUΛ৮͔ͬͯΒ೥Ҏ্ +4Λ৮ͬͯͳ͔ͬͨ w &MFDUSPO$PGGFF4DSJQU͕͖͔͚ͬͰ+4΍Γ͸͡ΊΔ w $PGGFF4DSJQUˠ&4ˠ5ZQF4DSJQUYˠ&4 ˠXJUI'MPXˠ5ZQF4DSJQUY

Slide 6

Slide 6 text

+BWB4DSJQUͨʔͷ͠ʔʂ

Slide 7

Slide 7 text

ࠓ೔ͷ಺༰

Slide 8

Slide 8 text

҉߸௨՟ɾϒϩοΫνΣʔϯͷ ٕज़ΊͬͪΌָ͍͠ w CPU࡞Δͱָ͍͠Αʂ w ҉߸ٕज़ࣗମָ͕͍͠Αʂ w ϒϩοΫνΣʔϯٕज़΋ָ͍͠Αʂ

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

CPU

Slide 11

Slide 11 text

CPU͸ͨͷ͍͠୊ࡐͰ͋Δ w ॳ৺ऀ͕΍Δͷʹͪΐ͏Ͳྑ͍୊ࡐ w ΄Ͳ΄Ͳʹ࿅शʹͳͬͯɺ͔ͭ൓Ԡ͕ฦͬͯ͘ Δ͔Βָ͍͠ w )VCPUͱ͔৭ʑͳϘοτϑϨʔϜϫʔΫ΍ศར ͳϥΠϒϥϦ΋͋Δ w ͔͠΋࣮༻త

Slide 12

Slide 12 text

ͦ͜ͰUSBEFCPU w σʔλݚڀ΍τϨʔυͰ࣮རΛಘΒΕΔʢ໥͔Δ͜ͱΛอূ͠ ·ͤΜʣ w ૬৔΍ଞͷσʔλΛऔಘͯ͠ചΓങ͍ͷ஫จΛग़͢ w ๏ఆ௨՟҉߸௨՟ w ҉߸௨՟҉߸௨՟ w ෳ਺औҾॴؒͷ૬৔ͷ͔ࠩΒརӹΛ͑ΔʢࡋఆऔҾʣ

Slide 13

Slide 13 text

CPUMJCSBSZDMPVE w MJCSBSZ w IUUQTHJUIVCDPNDDYUDDYU w USBEJOHCPU w IUUQTHJUIVCDPNBTLNJLFHFLLP w IUUQTHJUIVCDPN%FWJB7JS[FOCPU w DMPVECPUTFSWJDF w IUUQTDSZQUPUSBEFSPSH w IUUQTDPJOUSBEFSDPKQ

Slide 14

Slide 14 text

ଞʹ΋ʜ w ϏοτίΠϯࣗಈࡋఆऔҾγεςϜΛ։ൃɾ τϨʔυͨ݁͠ՌRJJUB w IUUQTOPUFNVIBTIUBH#05 w ͳͲͳͲ

Slide 15

Slide 15 text

҉߸ٕज़

Slide 16

Slide 16 text

҉߸ٕज़ w ڞ௨ݤ҉߸ w ެ։ݤ҉߸ w ҉߸తϋογϡؔ਺ w ిࢠॺ໊ w ཚ਺ʢͭ͡͸Ԟ͕;͔͍ʣ

Slide 17

Slide 17 text

Φεεϝͷຊ w ҉߸ٕज़ೖ໳ୈ൛ൿີͷࠃͷΞϦε IUUQTBN[OUP,"W,)& w Ϛοϋ৽ॻ҉߸ٕज़Λ׬શʹཧղͨ͠ؾʹͳ ΕΔຊ IUUQTULSBCCJUIPVTFCPPUIQNJUFNT

Slide 18

Slide 18 text

ほんとは怖い 暗号技術独⾃実装

Slide 19

Slide 19 text

ͳͷͰ/PEFKT$SZQUP"1* w ϋογϡؔ਺ w ڞ௨ݤ҉߸ w Ұ෦ެ։ݤ҉߸ const crypto = require('crypto') // Crypto APIͰϋογϡؔ਺Λ࡞੒͢Δ const createHash = algorithm => buf => { assert(buf instanceof Buffer) const hash = crypto.createHash(algorithm) hash.write(buf) return hash.digest() } const sha256 = createHash('sha256')

Slide 20

Slide 20 text

ϥΠϒϥϦʢόΠϯσΟϯάʣ w PQFOTTM IUUQTHJUIVCDPNNHDSFBOPEFPQFOTTMXSBQQFS w #JUDPJO$PSFͰ࢖ΘΕͯΔϥΠϒϥϦ IUUQTHJUIVCDPNDSZQUPDPJOKTTFDQLOPEF

Slide 21

Slide 21 text

const {randomBytes} = require('crypto') const secp256k1 = require('secp256k1') /** * ପԁۂઢެ։伴҉߸ͷൿີ伴Λ࡞੒͢Δ * @returns {Buffer} ൿີ伴 */ const generatePrivateKey = () => { for (;;) { const privateKey = randomBytes(32) if (secp256k1.privateKeyVerify(privateKey)) { return privateKey } } } /** * ପԁۂઢެ։伴҉߸ͷެ։伴Λ࡞੒͢Δ * @param {Buffer} privateKey ൿີ伴 * @returns {Buffer} ެ։伴 */ const generatePublicKey = privateKey => { return secp256k1.publicKeyCreate(privateKey) }

Slide 22

Slide 22 text

ϒϩοΫνΣʔϯͷσʔλߏ ଄

Slide 23

Slide 23 text

σʔλߏ଄ w σʔλຊମʢϒϩϒʣ w ϒϩϒͷϋογϡ஋ʢϙΠϯλʣ ͋ΕʁͲ͔͜Ͱݟͨ͜ͱ͕͋Δͳʁ

Slide 24

Slide 24 text

commit deadbeaf00... prev deadbeaf00... commit 01234567ab... prev 01234567ab... commit 2233445566... prev 01234567ab... commit 7766554433... SHA-1 hash tree src/ 13579bdf.... tree src/ 02468ace.... blob hoge.js 0000000.... blob hoge.js 1111111.... ΄͔ʹ΋

Slide 25

Slide 25 text

#JUDPJOͷ৔߹ w ίΠϯͷૹ৴τϥϯβΫγϣϯ͚ͩΛԆʑஷ Ί͍ͯ͘ϥΠτΦϯϦʔͷσʔλߏ଄ w HJUͱҧͬͯྺ࢙͸Ұͭʹऩଋ͢Δ ঢ়گʹΑͬͯ͸SFPSH͕ൃੜͯ͠ɺྺ࢙͕վ ͟Μ͞ΕΔ͜ͱ͕ʜ

Slide 26

Slide 26 text

෼ࢄ߹ҙٕज़ͨͷ͍͠

Slide 27

Slide 27 text

طଘͷฏ࿨ͳ෼ࢄ߹ҙ w QIBTFDPNNJU ࢖ͬͪΌ͍͚ͳ͍΍ͭ w 1BYPT w 3BGU ͳͲͳͲ෼ࢄ%#Ͱ࢖ΘΕΔΑ͏ͳ΍ͭ

Slide 28

Slide 28 text

ࡶʹɺ1BYPTͱ͔3BGUͱ͔ w օ͕σʔλΛߋ৽͢ΔͱͰͨΒΊʹͳΔͷͰɺϦʔμʔ Λબग़͢Δ w ϦʔμʔͷΈ͕ߋ৽ϦΫΤετΛͱΓ·ͱΊͯɺߋ৽৘ ใΛൃߦ͢Δ w ߋ৽৘ใʹैͬͯɺݸʑͷϊʔυͷσʔλΛΞοϓσʔ τ͢ΔʢεςʔτϚγϯϨϓϦέʔγϣϯʣ w !LVNBHJ͞Μͷهࣄͱ͔εϥΠυͱ͔ݟΔͱษڧʹͳΔ

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

ϒϩοΫνΣʔϯͰͷ෼ࢄ߹ҙ 1P81SPPGPG8PSL w φΧϞτατγ͕ൃ໌ͨ͜͠ͱͰ11ͷ׬શ෼ࢄܕ҉߸௨ ՟͕࢝Ί࣮ͯ༻ԽͰ͖ͨ w ਓؒͷཉ๬ʹཱ٭ͨ͠ήʔϜཧ࿦ͱ֬཰࿦ʹΑΔ෼ࢄ߹ҙ w શੈքͷϋογϡܭࢉྗͰʢ͓͓Αͦʣ෼͔͔Δ૯౰ͨ ΓܭࢉΛ੒ޭͤ͞Δӡήʔ #JUDPJOͷτϥϯβΫγϣϯ͕ ঝೝ͞ΕΔͷΫι஗͍ʂʂʂ

Slide 31

Slide 31 text

ϚΠχϯά੒ޭ֬཰ ճ໨ ࢀߟճ ϚΠχϯά੒ޭ֬཰ ճ࿈ଓ ϚΠχϯά੒ޭ֬཰ ճ࿈ଓ ϚΠχϯά੒ޭ֬཰ ճ࿈ଓ PSQIBOFE CMPDL ฏۉ෼ ฏۉ෼ ฏۉ෼ ฏۉ෼ ฏۉ෼

Slide 32

Slide 32 text

ͦ͜Ͱʂ औҾߴ଎Խͷҝʹ޻෉͢ΔϞφ w ϒϩοΫੜ੒Λ෼͔ΒඵʹॖΊͯऔҾߴ ଎Խ͢ΔϞφ w ϒϩοΫ೉қ౓ͷઃఆΛϒϩοΫ͔Βϒ ϩοΫʹมߋͯ͠ྑ͍ײ͡ʹ͢ΔϞφ

Slide 33

Slide 33 text

" # औҾॴʹ ίΠϯചΓ·͢ ചͬͯ໯͔ͬͨΒ ઍສԁࢧ෷͏Αʂ " Ӆ͠ޱ࠲ʹ ίΠϯૹΓ·͢ ྺ࢙͕վ͟Μ͞Εͯ ઍສԁࣦͬͨʜʜ " " $ $ #

Slide 34

Slide 34 text

·ͱΊ

Slide 35

Slide 35 text

·ͱΊ w CPUΛͭ͘Δͷͨͷ͍͠ w ҉߸ٕज़ͨͷ͍͠ w ϒϩοΫνΣʔϯͷσʔλߏ଄ͨͷ͍͠ w ෼ࢄ߹ҙͨͷ͍͠ w ϒϩοΫνΣʔϯϓϩάϥϛϯά͸+4ͰͰ͖Δʂ IUUQTULSBCCJUIPVTFCPPUIQNJUFNT

Slide 36

Slide 36 text

+BWB4DSJQUͨʔͷ͠ʔʂ ϒϩοΫνΣʔϯ ͨʔͷ͠ʔʂ