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

encryption

 encryption

Hirokazu Maruta

March 03, 2022
Tweet

More Decks by Hirokazu Maruta

Other Decks in Science

Transcript

  1. ࣗݾ঺հ https://github.com/mochisuna • ؙా୓࿨ʢ·ΔͨͻΖ͔ͣʣ • Twitter: @mochi_suna • ओʹαʔόʔαΠυΤϯδχΞ •

    झຯɿϐΞϊɺϘυήɺΞΠίϯ࡞੒ʢΧούʣɺϓϨθϯ • ࣗಈԽେ޷͖ɻख࡞ۀ͖Β͍ • githubɿ @mochisuna
  2. 81438162575788886766923577992357799761466612018296721242362536256184293 57069352457338978305971235639587050589890751497599290026879543541629595 92635382962929999373527393893015272028273730979383739039731352452762289 78273826989822154612213136061942130302141133310346191812161211316661312 01213147641231316644363838839939653563739348463763839331543288789762383 98563738365433423534644888463839384643839396476573748938457345564245126 34844668758248726826859992922649392276265849264516138123892991049225475 36852165445266876331694975626214662621647516621654962162336214611564862 15622262254897462256624662062148316547254564902302454621245456232245162 31242456512434518164012651251812424321651845424612432464915548961562265

    40431451494816121614652254654546432451891591646484645464242115159121215 12512462155666156124173641635467148361593823787985896185613764728526928 789895656425257381651935613893981991374836873823541837167837898784e7654 34576345637173823138479813768765238613741311236937264827654778277325473 89892815242254251552253613131331511313143646519194546121649460060457379 04647674872778721829547482997923937452456353215212517628516424172154621 85215216524128156631535133635135624373234146484945914624245144655937545 24315155236472864625463258642165376526875214636421645296605158216631616 52986915561678675254116565125134664256670262166165145634667412563523120 00214153442514256547456176523156416857441156514555136515571345216351461 34235531457514555135253466527524543412352416451251485413551355251511561 71956616756817356813613736137253824162482752642783523816583271845624165 54631567452166375415676516659156451553145235234613252553232516852127126 45162157232131522136725132143364221234162322654656432322163726142321427 82631674245423512542541436542154615244235542594181494224535650656526246 39606225635206461462565251661258214063232062267640333141325426372633225 33482372736524321232563425383425332436237028563074332531002322305236045 23214566316478571435215145571630232235224232436247022602702856079625164 32235723674724715613526215523165518237142314221623715637261634153471
  3. ҉߸Խࣗମ͸لݩલ͔Β͋Δ • ҉߸ = cryptographyʢӳޠʣ • kryptosʢӅΕΔʣ + graphosʢॻ͘ʣ •

    ༨ஊ • ݪࢠͷΫϦϓτϯʢKrʣͷޠݯ΋kryptos • ΞϧΰϯʹӅΕͯݟ͔ͭΒͳ͔ͬͨͨΊ
  4. ܉༻҉߸ʹؔ͢Δ6ͭͷϧʔϧ ͔ͳΓࡶʹҎԼ 1. ҉߸ํࣜ͸ݱ࣮తʹٯม׵ෆೳ 2. ҉߸ํࣜࣗମ͸ൿີͰ͋Δ͜ͱ͕ඞཁͳ͍ 3. 伴͸จॻΛݟͳ͘ͱ΋఻ୡɾهԱͰ͖มߋՄೳ 4. ిؾ௨৴ʹదͨ͠΋ͷͰ͋Δ͜ͱ

    5. ܞଳՄೳͰӡൖ΍ૢ࡞͕গਓ਺ͰՄೳ 6. ࢖͍΍͘͢ख͕͔͔ؒΒͣɺଟ਺ͷنଇΛकΔ ඞཁ΋ͳ͍ ͜ͷϧʔϧʹ͍ͭͯ ߟ͑ΒΕ͍ͯΔͷ͕ݱ୅త҉߸
  5. • ҉߸Խɾ෮߸Ͱಉ͡伴Λ࢖͏ ڞ௨伴҉߸ ҉߸ํࣜ ᶃ伴ͷૹ෇ ૹ৴ऀ ड৴ऀ ฏจ ᶄ伴Λ࢖ͬͯ ҉߸Խ

    ൿີ伴 ड৴ऀ ҉߸จ ൿີ伴 ฏจ 伴Λ࢖ͬͯ෮߸ ҉߸จ ෮߸ํࣜ ෮߸ ҉߸Խ
  6. • ҉߸Խɾ෮߸Ͱಉ͡伴Λ࢖͏ • 伴ͷऔΓѻ͍Λ৻ॏʹߦͳ͏ඞཁ͕͋Δ ڞ௨伴҉߸ ҉߸ํࣜ ᶃ伴ͷૹ෇ ૹ৴ऀ ड৴ऀ ฏจ

    ᶄ伴Λ࢖ͬͯ ҉߸Խ ൿີ伴 ड৴ऀ ҉߸จ ൿີ伴 ฏจ 伴Λ࢖ͬͯ෮߸ ҉߸จ ෮߸ํࣜ ෮߸ ҉߸Խ
  7. • ҉߸Խɾ෮߸ͰҟͳΔ伴Λ࢖͏ • ެ։伴Ͱ҉߸Խ ެ։伴҉߸ ड৴ऀ ҉߸จ ෮߸ํࣜ ෮߸ ҉߸ํࣜ

    ᶃެ։伴ͷૹ෇ ૹ৴ऀ ड৴ऀ ฏจ ᶄެ։伴Λ ࢖ͬͯ ҉߸Խ ެ։伴 ҉߸จ ҉߸Խ ൿີ伴 ެ։伴 ൿີ伴
  8. • ҉߸Խɾ෮߸ͰҟͳΔ伴Λ࢖͏ • ެ։伴Ͱ҉߸Խ / ൿີ伴Ͱ෮߸ ެ։伴҉߸ ड৴ऀ ҉߸จ ൿີ伴

    ฏจ ൿີ伴Λ࢖ͬͯ෮߸ ෮߸ํࣜ ෮߸ ҉߸ํࣜ ᶃެ։伴ͷૹ෇ ૹ৴ऀ ड৴ऀ ฏจ ᶄެ։伴Λ ࢖ͬͯ ҉߸Խ ެ։伴 ҉߸จ ҉߸Խ ൿີ伴 ެ։伴
  9. ΞϧΰϦζϜʢࡶʹʣ 32bitͰ෼ׂ ฏจ ҉߸จ 64bitຖʹ෼ׂ CJU5FYU CJUΛฒ΂ସ͑ʢॳظసஔʣ ্ҐCJU ԼҐCJU CJUΛฒ΂ସ͑ʢ࠷ऴసஔʣ

    ॖ໿సஔʢCJUʣ 8ͷഒ਺bitΛॖ໿ ԼҐCJU ্ҐCJU ԼҐCJU ্ҐCJU 28bitͰ෼ׂ ॖ໿సஔʢCJUʣ #JUTIJGU ҉߸Խؔ਺ ×16ճ ҉߸Խ伴
  10. ར఺ • ࣮૷͕؆୯ • Bitԋࢉ • Bitγϑτ • ςʔϒϧࢀরఔ౓ •

    伴ͷϏοτ௕͕nʹର͠O(2n)ͷࢼߦճ਺ • 20ੈل౰࣌ͱͯ͠͸࠷ڧͷ҉߸ͩͬͨ
  11. ShiftRows • 4Byte୯ҐͷߦΛࠨγϑτ͢Δ • ҎԼ͸ྫ     

                              
  12. ݪཧ • ૉҼ਺෼ղͱϑΣϧϚʔͷখఆཧΛར༻ • ҉߸Խʢฏจm͔Β҉߸จc Λ࡞੒ʣ C = Me (mod

    n) • ෮߸ʢ҉߸จc͔ΒݩͷฏจmΛ֫ಘʣ M = Cd (mod n) • ҉߸Խ͸୭Ͱ΋Ͱ͖Δ͕෮߸͸ຊਓ͔͠Ͱ͖ͳ͍
  13. ΞϧΰϦζϜ ૹ৴ऀ ड৴ऀ Q Rͷ࣌ ެ։伴OQR ПO Q R 

    ПOͱޓ͍ʹૉͳࣗવ਺ F FE㲇 NPEП O Λຬͨ͢ ൿີ伴E ൿີ伴
  14. ΞϧΰϦζϜ ૹ৴ऀ ड৴ऀ Q Rͷ࣌ ެ։伴OQR ПO Q R 

    ПOͱޓ͍ʹૉͳࣗવ਺ F FE㲇 NPEП O Λຬͨ͢ ൿີ伴E ൿີ伴 OQR F ެ։伴
  15. ΞϧΰϦζϜ ૹ৴ऀ ड৴ऀ Q Rͷ࣌ ެ։伴OQR ПO Q R 

    ПOͱޓ͍ʹૉͳࣗવ਺ F FE㲇 NPEП O Λຬͨ͢ ൿີ伴E ൿີ伴 OQR F ެ։伴 ެ։伴 ૹ৴
  16. ΞϧΰϦζϜ ૹ৴ऀ ड৴ऀ ฏจʢM=63ʣ Q Rͷ࣌ ެ։伴OQR ПO Q R

     ПOͱޓ͍ʹૉͳࣗવ਺ F FE㲇 NPEП O Λຬͨ͢ ൿີ伴E ൿີ伴 OQR F ެ։伴 ެ։伴 ૹ৴
  17. ΞϧΰϦζϜ ૹ৴ऀ ड৴ऀ ฏจʢM=63ʣ ҉߸จʢC=33ʣ Q Rͷ࣌ ެ։伴OQR ПO Q

    R  ПOͱޓ͍ʹૉͳࣗવ਺ F FE㲇 NPEП O Λຬͨ͢ ൿີ伴E ൿີ伴 OQR F ެ։伴 ެ։伴 ૹ৴ .ͷͱ͖ ҉߸จ $.F NPEO    ҉߸Խ
  18. ΞϧΰϦζϜ ૹ৴ऀ ड৴ऀ ฏจʢM=63ʣ ҉߸จʢC=33ʣ Q Rͷ࣌ ެ։伴OQR ПO Q

    R  ПOͱޓ͍ʹૉͳࣗવ਺ F FE㲇 NPEП O Λຬͨ͢ ൿີ伴E ൿີ伴 OQR F ެ։伴 ެ։伴 ૹ৴ .ͷͱ͖ ҉߸จ $.F NPEO    ҉߸Խ ฏจʢM=63ʣ .$E NPEO     ෮߸
  19. ໰୊ p=37, q=71, e=79Ͱ͋Δͱ͖҉߸จʮ904ʯΛղಡͤΑ • ৚݅ • pq=n • m(p-1)(q-1)

    ≡ -1(mod e)ͱͳΔΑ͏ͳ࠷খͷࣗવ ਺mΛ༻ҙ͢Δͱൿີ伴d = (m(p-1)(q-1)+1)/e • ҉߸จcʹ͍ͭͯce ≡ M(mod n) • M͕ฏจͱͳΔ
  20. ਓ͕ؒ΍Δ಺༰͡Όͳ͍Ͱ͢ ൿີ伴ͷܭࢉ • m(p-1)(q-1) ≡ -1(mod e) • m(37-1)(71-1) ≡

    78(mod 79) • 2520m ≡ 78(mod 79) → 2520ͷഒ਺ͷ͏ͪ79ͰׂΔͱ78͋·Δ਺
  21. ൿີ伴͕ٻ·ͬͨʂ • d = 319ͩͬͯΑ • ෮߸͠Α͏ • ce ≡

    M(mod n)Λຬͨ͢M͕ٻ·Ε͹OK 904319 ≡ M(mod 2627) 914ͷ319৐Λ2627Ͱׂͬͨ͋·Γ
  22. ૉҼ਺෼ղͰ͖Δɾɾɾʁ pq = 1143368469Λຬͨ͢ p, qΛٻΊΑ • p =19059 •

    q = 59991 ্ܻ͕͕Ε͹ίϯϐϡʔλʔͰ΋ݫ͍͠ 10ܻ
  23. ݎ࿚͞ • ૉҼ਺෼ղͷಛੑΛར༻͍ͯ͠Δ • ط஌ͷύϥϝʔλʹΑΔܭࢉ͸؆୯ • e৐ܭࢉ౳΋PCతʹ͸༰қ • ະ஌ͷύϥϝʔλʹΑΔղಡ͸ࠔ೉ •

    P vs NP໰୊Λղ͘͜ͱͱಉٛ • ϛϨχΞϜݒ৆ۚ໰୊ʢະղܾ໰୊ʣ ݱ ୅ ʹ ͓ ͍ ͯ ͸ ߈ ུ ͸ ೉ ͠ ͍
  24. 81438162575788886766923577992357799761466612018296721242362536256184293 57069352457338978305971235639587050589890751497599290026879543541629595 92635382962929999373527393893015272028273730979383739039731352452762289 78273826989822154612213136061942130302141133310346191812161211316661312 01213147641231316644363838839939653563739348463763839331543288789762383 98563738365433423534644888463839384643839396476573748938457345564245126 34844668758248726826859992922649392276265849264516138123892991049225475 36852165445266876331694975626214662621647516621654962162336214611564862 15622262254897462256624662062148316547254564902302454621245456232245162 31242456512434518164012651251812424321651845424612432464915548961562265

    40431451494816121614652254654546432451891591646484645464242115159121215 12512462155666156124173641635467148361593823787985896185613764728526928 789895656425257381651935613893981991374836873823541837167837898784e7654 34576345637173823138479813768765238613741311236937264827654778277325473 89892815242254251552253613131331511313143646519194546121649460060457379 04647674872778721829547482997923937452456353215212517628516424172154621 85215216524128156631535133635135624373234146484945914624245144655937545 24315155236472864625463258642165376526875214636421645296605158216631616 52986915561678675254116565125134664256670262166165145634667412563523120 00214153442514256547456176523156416857441156514555136515571345216351461 34235531457514555135253466527524543412352416451251485413551355251511561 71956616756817356813613736137253824162482752642783523816583271845624165 54631567452166375415676516659156451553145235234613252553232516852127126 45162157232131522136725132143364221234162322654656432322163726142321427 82631674245423512542541436542154615244235542594181494224535650656526246 39606225635206461462565251661258214063232062267640333141325426372633225 33482372736524321232563425383425332436237028563074332531002322305236045 23214566316478571435215145571630232235224232436247022602702856079625164 32235723674724715613526215523165518237142314221623715637261634153471
  25. 81438162575788886766923577992357799761466612018296721242362536256184293 57069352457338978305971235639587050589890751497599290026879543541629595 92635382962929999373527393893015272028273730979383739039731352452762289 78273826989822154612213136061942130302141133310346191812161211316661312 01213147641231316644363838839939653563739348463763839331543288789762383 98563738365433423534644888463839384643839396476573748938457345564245126 34844668758248726826859992922649392276265849264516138123892991049225475 36852165445266876331694975626214662621647516621654962162336214611564862 15622262254897462256624662062148316547254564902302454621245456232245162 31242456512434518164012651251812424321651845424612432464915548961562265

    40431451494816121614652254654546432451891591646484645464242115159121215 12512462155666156124173641635467148361593823787985896185613764728526928 789895656425257381651935613893981991374836873823541837167837898784e7654 34576345637173823138479813768765238613741311236937264827654778277325473 89892815242254251552253613131331511313143646519194546121649460060457379 04647674872778721829547482997923937452456353215212517628516424172154621 85215216524128156631535133635135624373234146484945914624245144655937545 24315155236472864625463258642165376526875214636421645296605158216631616 52986915561678675254116565125134664256670262166165145634667412563523120 00214153442514256547456176523156416857441156514555136515571345216351461 34235531457514555135253466527524543412352416451251485413551355251511561 71956616756817356813613736137253824162482752642783523816583271845624165 54631567452166375415676516659156451553145235234613252553232516852127126 45162157232131522136725132143364221234162322654656432322163726142321427 82631674245423512542541436542154615244235542594181494224535650656526246 39606225635206461462565251661258214063232062267640333141325426372633225 33482372736524321232563425383425332436237028563074332531002322305236045 23214566316478571435215145571630232235224232436247022602702856079625164 32235723674724715613526215523165518237142314221623715637261634153471 ͜͜ʹ͋ΔeΛج४ʹύϥϝʔλ͕෼͔ΕͯΔʁ
  26. 81438162575788886766923577992357799761466612018296721242362536256184293 57069352457338978305971235639587050589890751497599290026879543541629595 92635382962929999373527393893015272028273730979383739039731352452762289 78273826989822154612213136061942130302141133310346191812161211316661312 01213147641231316644363838839939653563739348463763839331543288789762383 98563738365433423534644888463839384643839396476573748938457345564245126 34844668758248726826859992922649392276265849264516138123892991049225475 36852165445266876331694975626214662621647516621654962162336214611564862 15622262254897462256624662062148316547254564902302454621245456232245162 31242456512434518164012651251812424321651845424612432464915548961562265

    40431451494816121614652254654546432451891591646484645464242115159121215 12512462155666156124173641635467148361593823787985896185613764728526928 789895656425257381651935613893981991374836873823541837167837898784e7654 34576345637173823138479813768765238613741311236937264827654778277325473 89892815242254251552253613131331511313143646519194546121649460060457379 04647674872778721829547482997923937452456353215212517628516424172154621 85215216524128156631535133635135624373234146484945914624245144655937545 24315155236472864625463258642165376526875214636421645296605158216631616 52986915561678675254116565125134664256670262166165145634667412563523120 00214153442514256547456176523156416857441156514555136515571345216351461 34235531457514555135253466527524543412352416451251485413551355251511561 71956616756817356813613736137253824162482752642783523816583271845624165 54631567452166375415676516659156451553145235234613252553232516852127126 45162157232131522136725132143364221234162322654656432322163726142321427 82631674245423512542541436542154615244235542594181494224535650656526246 39606225635206461462565251661258214063232062267640333141325426372633225 33482372736524321232563425383425332436237028563074332531002322305236045 23214566316478571435215145571630232235224232436247022602702856079625164 32235723674724715613526215523165518237142314221623715637261634153471 ύϥϝʔλB ύϥϝʔλA
  27. 81438162575788886766923577992357799761466612018296721242362536256184293 57069352457338978305971235639587050589890751497599290026879543541629595 92635382962929999373527393893015272028273730979383739039731352452762289 78273826989822154612213136061942130302141133310346191812161211316661312 01213147641231316644363838839939653563739348463763839331543288789762383 98563738365433423534644888463839384643839396476573748938457345564245126 34844668758248726826859992922649392276265849264516138123892991049225475 36852165445266876331694975626214662621647516621654962162336214611564862 15622262254897462256624662062148316547254564902302454621245456232245162 31242456512434518164012651251812424321651845424612432464915548961562265

    40431451494816121614652254654546432451891591646484645464242115159121215 12512462155666156124173641635467148361593823787985896185613764728526928 789895656425257381651935613893981991374836873823541837167837898784e7654 34576345637173823138479813768765238613741311236937264827654778277325473 89892815242254251552253613131331511313143646519194546121649460060457379 04647674872778721829547482997923937452456353215212517628516424172154621 85215216524128156631535133635135624373234146484945914624245144655937545 24315155236472864625463258642165376526875214636421645296605158216631616 52986915561678675254116565125134664256670262166165145634667412563523120 00214153442514256547456176523156416857441156514555136515571345216351461 34235531457514555135253466527524543412352416451251485413551355251511561 71956616756817356813613736137253824162482752642783523816583271845624165 54631567452166375415676516659156451553145235234613252553232516852127126 45162157232131522136725132143364221234162322654656432322163726142321427 82631674245423512542541436542154615244235542594181494224535650656526246 39606225635206461462565251661258214063232062267640333141325426372633225 33482372736524321232563425383425332436237028563074332531002322305236045 23214566316478571435215145571630232235224232436247022602702856079625164 32235723674724715613526215523165518237142314221623715637261634153471 ύϥϝʔλB ύϥϝʔλA
  28. 81438162575788886766923577992357799761466612018296721242362536256184293 57069352457338978305971235639587050589890751497599290026879543541629595 92635382962929999373527393893015272028273730979383739039731352452762289 78273826989822154612213136061942130302141133310346191812161211316661312 01213147641231316644363838839939653563739348463763839331543288789762383 98563738365433423534644888463839384643839396476573748938457345564245126 34844668758248726826859992922649392276265849264516138123892991049225475 36852165445266876331694975626214662621647516621654962162336214611564862 15622262254897462256624662062148316547254564902302454621245456232245162 31242456512434518164012651251812424321651845424612432464915548961562265

    40431451494816121614652254654546432451891591646484645464242115159121215 12512462155666156124173641635467148361593823787985896185613764728526928 789895656425257381651935613893981991374836873823541837167837898784e7654 34576345637173823138479813768765238613741311236937264827654778277325473 89892815242254251552253613131331511313143646519194546121649460060457379 04647674872778721829547482997923937452456353215212517628516424172154621 85215216524128156631535133635135624373234146484945914624245144655937545 24315155236472864625463258642165376526875214636421645296605158216631616 52986915561678675254116565125134664256670262166165145634667412563523120 00214153442514256547456176523156416857441156514555136515571345216351461 34235531457514555135253466527524543412352416451251485413551355251511561 71956616756817356813613736137253824162482752642783523816583271845624165 54631567452166375415676516659156451553145235234613252553232516852127126 45162157232131522136725132143364221234162322654656432322163726142321427 82631674245423512542541436542154615244235542594181494224535650656526246 39606225635206461462565251661258214063232062267640333141325426372633225 33482372736524321232563425383425332436237028563074332531002322305236045 23214566316478571435215145571630232235224232436247022602702856079625164 32235723674724715613526215523165518237142314221623715637261634153471 918ܻ 1137ܻ
  29. ͳΜͳΒ3ܻͰ΋Ϡό͍ • d = 319ͩͬͯΑ • ෮߸͠Α͏ • ce ≡

    M(mod n)Λຬͨ͢M͕ٻ·Ε͹OK 904319 ≡ M(mod 2627) 914ͷ319৐Λ2627Ͱׂͬͨ͋·Γ
  30. RSAͰ͋ΔՄೳੑ͸ߴ͍ • ࠷ॳʹ൴Β͕ղ͍͍ͯͨ౴͑ • 1977೥ʹݒ৆ۚ෇͖Ͱܝࡌ͞ΕͨRSA҉߸จ ͷ౴͕͑ “The ~ ossifrage”·Ͱͷ෦෼ The

    magic words are squeamish ossifrage. To know is to know that you know nothing That is the true meaning of knowledge