SHA3, Cryptographic hash function

SHA3, Cryptographic hash function

現代暗号理論の輪講講義用のスライド.
SHA3,KECCAKのアルゴリズムや一方向ハッシュ関数への攻撃,一方向ハッシュ関数で解決できない課題について.
教科書:暗号技術入門 第3版(著:結城 浩)

35a1fed3213d925b4f5faeeb151e239d?s=128

Kensuke Kousaka

November 17, 2015
Tweet

Transcript

  1. ݱ୅҉߸ཧ࿦ SHA-3ͷબఆϓϩηε
 ~ Ұํ޲ϋογϡؔ਺ͰղܾͰ͖ͳ͍໰୊ 15M7112 ∁ࡔ ݡ༎ 1

  2. SHA-3ͷબఆϓϩηε NIST͕ެื͠ɼKECCAK͕બఆ͞Εͨ ͜ͷબఆϓϩηε͸ɼAESͱಉ͡ ࿈๜৘ใॲཧඪ४ن֨ FIPS 202ͱͳΔ 2

  3. KECCAK͕બ͹Εͨཧ༝ SHA-2ͱߏ଄͕શ͘ҟͳΔʢMDม׵Ͱͳ͍ʣ ߏ੒͕ΫϦʔϯͰɼղੳ͠΍͍͢ ༷ʑͳσόΠε্Ͱಈ͔ͤΔ ϋʔυ΢ΣΞ্Ͱ࣮૷ͨ͠ࡍʹߴ͍ੑೳΛࣔͨ͠ ଞͷ΋ͷʹൺ΂ͯηΩϡϦςΟϚʔδϯ͕ߴ͍ 3

  4. KECCAKʢένϟοΫʣ 4

  5. KECCAKͱ͸Կ͔ SHA-3ͱͯ͠બఆ͞ΕͨҰํ޲ϋογϡؔ਺ΞϧΰϦζϜ ϋογϡ஋ͷϏοτ͸೚ҙ௕Ͱੜ੒Ͱ͖Δ SHA-2ʹ߹Θͤͯ224ɼ256ɼ384ɼ512ͷ4छྨ͕نఆ ೖྗͷαΠζ੍ݶ͸ͳ͍ 5

  6. KECCAKͷߏ଄ εϙϯδߏ଄Λ༻͍Δ ೖྗϝοηʔδʹύσΟϯάΛࢪ͢ ٵऩϑΣʔζͱࡡग़ϑΣʔζΛܦͯϋογϡ஋ΛಘΔ ೖྗϝοηʔδΛεϙϯδʹٵऩͤ͞ɼߜΓग़͢ 6

  7. εϙϯδߏ଄ from “KECCAK and the SHA-3 Standardization”
 http://csrc.nist.gov/groups/ST/hash/sha-3/documents/Keccak-slides-at-NIST.pdf 7

  8. ٵऩϑΣʔζ b = r + cϏοτͷ಺෦ ঢ়ଶʹɼೖྗΛrϏοτ ͝ͱʹ෼ׂͨ͠ϒϩο ΫΛࠞͥࠐΈٵऩͤ͞ Δ

    ೖྗϒϩοΫ͕ਚ͖Δ ·Ͱ܁Γฦ͢ 8
  9. ࡡग़ϑΣʔζ ؔ਺fͷग़ྗͷ͏ͪrϏο τ෼Λࡡग़͢Δ ඞཁͳϏοτ਺ʹୡ͢ Δ·Ͱ܁Γฦ͢ 9

  10. ಺෦ঢ়ଶͷrͱc rɿͲΕ͚ͩͷ୯ҐͰٵऩͱࡡग़Λߦ͏͔ ϏοτϨʔτ cɿϝοηʔδ͕࣋ͭಛ௃Λ֎෦ʹ࿙Β͞ͳ͍౓߹͍ ΩϟύγςΟ 10

  11. σϡϓϨΫεߏ଄ 11

  12. ಺෦ߏ଄ 12

  13. 13

  14. ؔ਺KECCAK-f [b] εϥΠεͷຕ਺ = ෯b / 25 SHA-3Ͱ͸b = 1600ɼͭ·ΓεϥΠεͷຕ਺

    = 64 KECCAKͰ͸ɼεϥΠεͷܗ͸มԽ͠ͳ͍ ϚτϦϣʔγΧߏ଄ ຕ਺ͷগͳ͍KECCAKΛ࡞ͬͯ҉߸ղಡΛࢼΈΔ ΞϧΰϦζϜͷڧ͞Λ͔֬ΊΔݚڀ͕༰қ 14
  15. KECCAK-f [b]ͷத਎ θʢγʔλʣɼρʢϩʔʣɼπʢύΠʣɼχʢΧΠʣɼιʢΠΦλʣ ͜ΕΒ5εςοϓΛ1ϥ΢ϯυͱ͠ɼ12+2lʢΤϧʣϥ΢ϯυ
 ܁Γฦ͢ SHA-3ͷKECCAK-f [1600]ͷ৔߹ͷϥ΢ϯυ਺͸24
 ʢ12 + 2

    × 6ʣ KECCAKͷ࢓༷Ͱ͸2l = b / 25ɼb=1600ͷ৔߹ɼ
 26 = 1600 / 25ΑΓl = 6 15
  16. θεςοϓ ҐஔΛͣΒͨ͠2ຊͷΧ ϥϜͷ5bitΛXORͰ଍͠ ʢΣʣɼͦΕΛ໨తͷbit ʹXORͰ଍͠ࠐΉ 16

  17. ρεςοϓ γʔτ͝ͱʹɼϨʔϯ ํ޲ʢzํ޲ʣͷϏοτ ҠಈΛߦ͏ 17

  18. πεςοϓ εϥΠε͝ͱʹɼϏο τҠಈΛߦ͏ ӈਤͷ΋ͷΛɼશͯͷ εϥΠεʹߦ͏ 18

  19. χεςοϓ ϩ΢͝ͱʹɼӈਤͷΑ ͏ͳ࿦ཧճ࿏ʹΑΔԋ ࢉΛߦ͏ Լࡾ֯ͱࠇؙ͕NOTɼ ͦͷԼͷ΋ͷ͸AND 19

  20. ιεςοϓ ϥ΢ϯυఆ਺ͱεςʔτશମͷϏοτͷXORΛͱΔ ಺෦ঢ়ଶͷඇରশੑΛ࡞Δ 20

  21. KECCAK΁ͷ߈ܸ SHA-3ҎલɿMDม׵Λ࢖ͬͯϋογϡ஋ΛٻΊΔ SHA-1ʹର͠ཧ࿦తͳ߈ܸํ๏͕ൃݟ͞ΕΔ SHA-2΋SHA-1ͱಉ͡MDߏ଄ ߈ܸํ๏͕ݟ͔ͭΔ͔΋͠Εͳ͍… KECCAK͸MDߏ଄Ͱͳ͘εϙϯδߏ଄ SHA-1ͷ߈ܸ͸௨ͣ͡ɼ·ͩ߈ܸํ๏͸ݟ͔͍ͭͬͯͳ͍ 21

  22. ऑ͍KECCAK΁ͷ߈ܸίϯςετ ϥ΢ϯυ਺ΛݮΒͨ͠ऑ͍KECCAKΛ࣮૷ ෯b΋ม͑ͯ߈ܸΛߦ͏ ղੳ͠΍͍͢ऑ͍KECCAKʹΑͬͯɼ࣮ࡍʹ࢖ΘΕ ͍ͯΔSHA-3͕ͲΕ͚ͩ҆શ͔͕ݟੵ΋Γ΍͍͢ Ұํ޲ϋογϡؔ਺ͱͯ͠ղੳ͠΍͢͞͸޷·͍͠ 22

  23. ͲͷҰํ޲ϋογϡؔ਺Λ ࢖͑͹ྑ͍ͷ͔ MD5ɿ҆શͰ͸ͳ͘ɼ࢖༻ͯ͠͸͍͚ͳ͍ SHA-1ɿ৽͍͠༻్Ͱ࢖͏΂͖Ͱͳ͍ɼSHA-2΁Ҡߦ SHA-2ɿ࢖͍ͬͯͯ໰୊ͳ͍ SHA-3ɿ࢖͍ͬͯͯ໰୊ͳ͍ 23

  24. Ұํ޲ϋογϡؔ਺΁ͷ߈ܸ 24

  25. γφϦΦ-1 ߈ܸऀ͕ɼ͋Δਖ਼نͷϑΝΠϧʹରͯ͠৑௕ੑΛར༻ ͯ͠ಉ͡ϋογϡ஋Λ࣋ͭผͷϑΝΠϧΛ࡞Δ ِϑΝΠϧͷ಺༰Λগͣͭ͠ॻ͖׵͑ͯɼಉ͡ϋογϡ ஋ΛಘΒΕΔΑ͏ʹ͢ΔϒϧʔτϑΥʔεΞλοΫ Ұํ޲ϋογϡؔ਺ͷऑিಥ଱ੑΛഁΖ͏ͱ͢Δ 25

  26. γφϦΦ-1 SHA3-512ͷ৔߹ɼϋογϡ஋͸512bit 2512ճͷࢼߦΛ͢Ε͹ɼ໨తͷϑΝΠϧΛ࡞ΕΔ ݱ࣮తʹ͸ෆՄೳͳճ਺ ϋογϡ஋ͷϏοτ௕͕௕͍Ұํ޲ϋογϡؔ਺ ϒϧʔτϑΥʔεΞλοΫʹڧ͍ 26

  27. ݪ૾߈ܸͱୈೋݪ૾߈ܸ ݪ૾߈ܸ Ұͭͷϋογϡ஋ʹ͍ͭͯɼͦΕΛ࣋ͭϝοηʔ δΛͲͷΑ͏ͳ΋ͷͰ΋ྑ͍ͷͰݟ͚ͭΔ ୈೋݪ૾߈ܸ ͋Δϝοηʔδ1ʹ͍ͭͯɼͦͷϋογϡ஋ͱಉ͡ ϋογϡ஋Λ࣋ͭผͷϝοηʔδ2Λݟ͚ͭΔ 27

  28. γφϦΦ2 ߈ܸऀ͕ɼಉ͡ϋογϡ஋Λ࣋ͭೋͭͷϑΝΠϧΛ ࡞ΓɼยํΛਖ਼نϢʔβʹ౉͢ ਖ਼نϢʔβ͕ϋογϡ஋Λܭࢉޙɼ߈ܸऀ͕ϑΝΠ ϧΛ͢Γସ͑Δ 28

  29. γφϦΦ2 ಛఆͷϋογϡ஋Λੜ੒͢ΔϝοηʔδΛٻΊΔͷ Ͱ͸ͳ͘ɼಉ͡ϋογϡ஋Λ࣋ͭ2ͭͷϝοηʔδΛ ٻΊΔ ஀ੜ೔߈ܸ͋Δ͍͸িಥ߈ܸ Ұํ޲ϋογϡؔ਺ͷڧিಥ଱ੑΛഁΖ͏ͱ͢Δ 29

  30. ஀ੜ೔ΫΠζ ͋Δಛఆͷ೔ʹͪΛఆΊɼ2ਓ͕ͦͷ೔ʹੜ·ΕΔ Մೳੑ͸ߴ͘ͳ͍ 1೥ͷͲͷ೔Ͱ΋ߏΘͳ͍͔Βɼ2ਓ͕ಉ͡೔ʹੜ· ΕΔ Մೳੑ͸ҙ֎ʹߴ͍ 30

  31. ஀ੜ೔ΫΠζ Nਓશһͷ஀ੜ೔͕Ұக͠ͳ͍֬཰ΛٻΊɼ͜ΕΛ1 ͔ΒҾ͘ͱɼ͍ͣΕ͔ͷ೔ͰҰக͢Δ֬཰͕ٻ·Δ N=23ͷ࣌ɼ஀ੜ೔͕Ұக͢Δ֬཰͸2෼ͷ1Ҏ্ʹ ஀ੜ೔͕Ͳͷ೔Ͱ΋͍͍࣌ɼҰக͢Δ֬཰͕૝૾Ҏ ্ʹߴ͘ͳΔ͜ͱɿ஀ੜ೔ͷύϥυοΫε 31

  32. ஀ੜ೔ΫΠζͷҰൠԽ 1೥ͷ೔਺͕Y೔͋Δͱͯ͠ɼNਓάϧʔϓͷগͳ͘ͱ ΋2ਓͷ஀ੜ೔͕Ұக͢Δ֬཰͕2෼ͷ1Ҏ্ʹͳΔͨ Ίͷ࠷௿ͷN Y͕ඇৗʹେ͖͍࣌ɿ N ≒ √Y 32

  33. ஀ੜ೔߈ܸ ߈ܸऀ͕ೋछྨͷϑΝΠϧΛͦΕͧΕNݸ࡞੒͢Δ ૒ํͦΕͧΕͷϋογϡ஋Λൺֱ͠ɼҰக͢Δ΋ͷ͕ͳ ͍͔୳͢ Ұக͢Δ΋ͷ͕͋Ε͹ɼ߈ܸʹར༻͢Δ N͕େ͖͚Ε͹ɼඞཁͳ࣌ؒͱϝϞϦྔ͕ଟ͘ͳΔ N͸ɼϋογϡ஋ͷϏοτ௕ʹґଘ͢Δ 33

  34. ஀ੜ೔߈ܸ ਖ਼نϢʔβ͕༻͍ΔҰํ޲ϋογϡؔ਺͕MϏοτ௕ ͷϋογϡ஋Λ࣋ͭ ϋογϡ஋ͷͱΓ͏Δ͢΂ͯͷ਺͸ɼ2Mݸ N ≒ √Y = √2M=2M/2 N͕2M/2ͳΒ͹ɼ2෼ͷ1ͷ֬཰Ͱ஀ੜ೔߈ܸʹ੒ޭ

    34
  35. ࢼߦճ਺ͷൺֱ Ұํ޲ϋογϡؔ਺ͷϏοτ௕͕512bitͷ৔߹ ϒϧʔτϑΥʔεΞλοΫͷࢼߦճ਺ɿ2512ճ ஀ੜ೔߈ܸͷࢼߦճ਺ɿ2256ճ ஀ੜ೔߈ܸͷࢼߦճ਺͸ඇৗʹগͳ͍ 35

  36. Ұํ޲ϋογϡؔ਺Ͱ
 ղܾͰ͖ͳ͍՝୊ 36

  37. Ұํ޲ϋογϡؔ਺͕
 ग़དྷͳ͍͜ͱ ϑΝΠϧͷվ͟Μ͸ݕग़Ͱ͖Δ ͳΓ͢·͠͸ݕग़Ͱ͖ͳ͍ ͳΓ͢·͠Λݕূ͢ΔͨΊʹ͸ೝূ͕ඞཁ ϝοηʔδೝূίʔυɼσδλϧॺ໊ 37