ããã·ã¥ãå®éã«ãã£ãŠããããš
ããã·ã¥é¢æ°ã¯ä»»æã®å ¥åïŒ1æåã§ã10GBã®ãã¡ã€ã«ã§ãïŒãåãåããåºå®é·ã®åºåïŒããã€ãžã§ã¹ããïŒãçæããŸããSHA-256ã¯å ¥åãµã€ãºã«é¢ä¿ãªãåžžã«64åã®16鲿åãåºåãåãå ¥åã¯åžžã«åãããã·ã¥ãè¿ããŸããã1ãããå€ãããšåºåã¯å®å šã«ç°ãªããŸããããããéªåީ广ãã
éèŠãªç¹æ§ïŒããã·ã¥ã¯äžæ¹åãSHA-256ããã·ã¥ããå ã®å ¥åãéç®ããããšã¯ã§ããŸãããããããã¹ã¯ãŒãä¿åã«æçšãªçç±ã§ãããã¹ã¯ãŒãã§ã¯ãªãããã·ã¥ãä¿åããããŠãŒã¶ãŒããã°ã€ã³ããæãå ¥åãããã·ã¥ããŠæ¯èŒããã
SHA-256ã¯SHA-2ãã¡ããªãŒã®äžéšã§ãFIPS 180-4ïŒNISTçºè¡ïŒã§å®çŸ©ããããã³ã€ã³ãã€ãã³ã°ãTLSèšŒææžãGitã³ããã IDãã»ãšãã©ã®API眲åã¹ããŒã ã§äœ¿çšãSHA-1ã¯ã»ãã¥ãªãã£é¢ã§ã¯éæšå¥šïŒ2017幎ã«Googleã®SHAtteredãããžã§ã¯ããè¡çªãçºèŠïŒã ããGitãªããžã§ã¯ãããã·ã¥ã®ãããªéã»ãã¥ãªãã£çšéã§ã¯äŸç¶äœ¿çšã
äœ¿ãæ¹
- 1å ¥åãã£ãŒã«ãã«ããã¹ãã貌ãä»ããŸãã¯å ¥åã
- 2ãã¹ãŠã®ããã·ã¥ã¢ã«ãŽãªãºã ãåæã«èšç®ããããå ã«éžã¶å¿ èŠãªãã
- 3å¿ èŠãªããã·ã¥ãã¯ã³ã¯ãªãã¯ã§ã³ããŒã
- 4ãã¡ã€ã«ããã·ã¥ã®å Žåããã¡ã€ã«å 容ã貌ãä»ãããCLIããŒã«sha256sumã䜿çšã
䜿çšå Žé¢
ããŠã³ããŒãåŸã®ãã¡ã€ã«æŽåæ§æ€èšŒ
ISOããã€ããªãããŠã³ããŒãããïŒå ¬éè ãSHA-256ããã·ã¥ãæ²èŒããŠããããã¡ã€ã«å 容ãããã«è²Œãä»ããŠïŒãŸãã¯CLIã§sha256sumïŒæ¯èŒãããã·ã¥ãäžèŽããã°ã転éäžã«ãã¡ã€ã«ãç Žæãæ¹ãããããŠããªãã
API眲åçæã®ãããã°
å€ãã®APIïŒAWSãStripeãwebhookïŒã¯HMAC-SHA256眲åãèŠæ±ããã眲åãäžèŽããªãæã眲å察象æååãããã«è²Œãä»ããŠäžéããã·ã¥å€ãã¹ãããããšã«æ€èšŒã
ãã¹ã¯ãŒããæŒæŽ©ããŒã¿ããŒã¹ã«å«ãŸããã確èª
HaveIBeenPwnedã®APIã¯SHA-1ãã¬ãã£ãã¯ã¹ãããã³ã°ïŒk-å¿åæ§ïŒã䜿çšããã¹ã¯ãŒããSHA-1ã§ããã·ã¥ããæåã®5æåãAPIã«éããå®å šãªããã·ã¥ãã¬ã¹ãã³ã¹ã«å«ãŸããã確èªããã®ããŒã«ã§æåã®SHA-1ãååŸã
ã³ã³ãã³ãããæ±ºå®çIDãçæ
æ¯ååãã³ã³ãã³ãã®äžæIDãå¿ èŠïŒã³ã³ãã³ããSHA-256ã§ããã·ã¥ãåãã³ã³ãã³ã = åãããã·ã¥ = åãIDãã³ã³ãã³ãã¢ãã¬ããµãã«ã¹ãã¬ãŒãžããã£ãã·ã¥ããŒãéè€æé€ã§äœ¿çšã
ç¥ã£ãŠããã¹ãããš
ãã¹ã¯ãŒãä¿åã«çŽ ã®ããã·ã¥ã䜿ããªã
SHA-256ã¯éãããã¹ã¯ãŒãã«ãšã£ãŠããã¯æªãããšãGPUãæã€æ»æè ã¯æ¯ç§æ°ååã®SHA-256ããã·ã¥ã詊ããããã¹ã¯ãŒãã«ã¯bcryptãscryptãArgon2ã䜿ããæå³çã«é ãïŒ1ããã·ã¥100ms+ïŒããã«ãŒããã©ãŒã¹ãéçŸå®çã«ããã
SHA-1ã¯ã»ãã¥ãªãã£çšéã§ã¯ç Žç¶»ããã§ãã¯ãµã ã«ã¯åé¡ãªã
Googleã2017幎ã«SHA-1è¡çªãå®èšŒïŒSHAtteredïŒãããžã¿ã«çœ²åãèšŒææžã«SHA-1ã䜿ããªãããšããããGitãªããžã§ã¯ãIDããã£ãã·ã¥ç¡å¹åã®ãããªéã»ãã¥ãªãã£çšéã«ã¯åé¡ãªãã誰ããã£ãã·ã¥ããŒãåœé ããããã«10äžãã«äœ¿ããªãã
åãå ¥å = åãããã·ã¥ãåžžã«
ããã·ã¥ã¯æ±ºå®çã仿¥"hello"ãSHA-256ã§ããã·ã¥ããŠã10幎åŸã«ããŠãåãåºåããããæ€èšŒã«æçšãªçç±ããããåäžãã¹ã¯ãŒããåäžããã·ã¥ãçæããããšãæå³ãããã ãããã¹ã¯ãŒãããã·ã¥åã«ã©ã³ãã ãªãœã«ãã远å ããã
ããã·ã¥é· â ã»ãã¥ãªãã£ã¬ãã«
SHA-256ã¯256ãããåºåã ã128ãããã®è¡çªèæ§ïŒèªçæ¥æ»æïŒãæäŸãSHA-512ã¯512ãããåºåã§256ãããã®è¡çªèæ§ãã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯SHA-256ã§ååãããã
äŸ
åçŽãªæååã®SHA-256
å®çªãã¹ãã"hello"ãããã·ã¥ããŠå®è£ ãæ£ããã確èªã
Input
helloOutput
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b98241æåå€æŽ = å®å šã«ç°ãªãããã·ã¥
éªåީ广ã®ãã¢ã"hello" vs "Hello"ïŒå€§æåHïŒã
Input
HelloOutput
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969æ©èœ
- SHA-1ãSHA-256ãSHA-384ãSHA-512ãåæèšç®
- Web Crypto API䜿çšãæå·åŠçã«æ£ç¢ºãªå®è£
- å ¥åäžã«ãªã¢ã«ã¿ã€ã ã§çµæè¡šç€ºããã¿ã³ã¯ãªãã¯äžèŠ
- åã¢ã«ãŽãªãºã ã®åºåãã¯ã³ã¯ãªãã¯ã³ããŒ
- 100%ãã©ãŠã¶å ã§åäœããããã¯ãŒã¯ãªã¯ãšã¹ããŒã
- ç¡æãç»é²äžèŠããã©ããã³ã°ãªã
ãããã質å
ããã·ã¥ãã埩å·ããŸãã¯éç®ã§ããïŒ
ã§ããªããããã·ã¥é¢æ°ã¯æ°åŠçã«äžæ¹åãåºåããå ¥åãèšç®ããããšã¯äžå¯èœãããã·ã¥ããã¯ã©ãã¯ãããå¯äžã®æ¹æ³ã¯ãäžèŽãããŸã§å ¥åãæšæž¬ããïŒãã«ãŒããã©ãŒã¹ïŒãäºåèšç®ããŒãã«ïŒã¬ã€ã³ããŒããŒãã«ïŒã䜿ãããšãã ããé·ãã©ã³ãã ãã¹ã¯ãŒããéèŠã
SHA-256ãšSHA-512ã©ã¡ãã䜿ãã¹ãïŒ
ã»ãšãã©ã®ç®çã«ã¯SHA-256ã§ååãSHA-512ã¯64ãããã·ã¹ãã ã§ããéããããé·ãããã·ã¥ãçæããããäž¡æ¹ãšãååãªã»ãã¥ãªãã£ãæäŸãç¹å®ã®çç±ïŒæ¢åã·ã¹ãã ã®èŠä»¶ã«åããããªã©ïŒããªãéãSHA-256ã䜿ãã
ãªãSHA-256ãçŽæ¥ãã¹ã¯ãŒãããã·ã¥ã«äœ¿ã£ãŠã¯ãããªãïŒ
éããããããçŸä»£ã®GPUã¯æ¯ç§çŽ100åã®SHA-256ããã·ã¥ãèšç®ã§ããã8æåãã¹ã¯ãŒãã¯çŽ6Ã10^15éãã§çŽ7æ¥ã§è§£èªå¯èœãbcrypt/Argon2ã¯æå³çã«é ãïŒ1ããã·ã¥çŽ100msïŒãåãæ»æã«æ°å幎ãããããã«ããã
ããã·ã¥ãšæå·åã®éãã¯ïŒ
æå·åã¯å¯éïŒéµãããã°ïŒãããã·ã¥ã¯äžå¯éãæå·åïŒå¹³æ â æå·æ â å¹³æãããã·ã¥ïŒå ¥å â ããã·ã¥ïŒæ»ããªãïŒãå ã®ããŒã¿ã埩å ããå¿ èŠãããã°æå·åãå ã®ããŒã¿ãä¿åããã«ããŒã¿ã®äžèŽãæ€èšŒããã ããªãããã·ã¥ã
SHA-1ã¯ãŸã å®å
šïŒ
ã»ãã¥ãªãã£çšéïŒçœ²åãèšŒææžïŒïŒå®å šã§ã¯ãªãã2017幎ã«è¡çªæ»æãå®èšŒããããéã»ãã¥ãªãã£çšéïŒãã§ãã¯ãµã ããã£ãã·ã¥ããŒãGitïŒïŒåé¡ãªããæ»æã«ã¯çŽ10äžãã«ã®èšç®ãªãœãŒã¹ãå¿ èŠã§ãæ¥åžžçãªãã§ãã¯ãµã çšéã«ã¯åœãŠã¯ãŸããªãéåžžã«ç¹å®ã®ã·ããªãªãå¿ èŠã
ãã³ããšé¢é£ã¯ãŒã¯ãããŒ
- å®å šãªãã¹ã¯ãŒããçæããŠããããã·ã¥ä¿åãããªãããã¹ã¯ãŒãçæããŒã«.
- ããã·ã¥ãšäžç·ã«ãŠããŒã¯IDãå¿ èŠã§ããïŒUUIDçæããŒã«.
- ããã·ã¥åºåãURLçµç±ã§å®å šã«éä¿¡ããããšããBase64ãšã³ã³ãŒãã䟿å©ã§ããBase64ãšã³ã³ãŒããŒ.
- ããã·ã¥å€ãå«ãJSONããŒã¿ã®æŽåœ¢ã«ãJSONãã©ãŒããã¿ãŒ.