
èªåçšã®å®å šã£ãœããã¹ã¯ãŒããžã§ãã¬ãŒã¿ãŒïŒWindowsãbat圢åŒïŒ
Last update 4-16-2025
â» ã³ãŒãã®çæã«ã¯ClaudeïŒ3.7 SonnetïŒããã³ãŒãã®è©äŸ¡ã«ã¯ClaudeãšChatGPT o3ãå©çšããŸããïŒåœåã誀ã£ãŠo1ãšæžããŠããŸããïŒã
â» çæAIã«é¢é£ãã話é¡ã§ã¯ãªãã®ã§ãå¥ã®ã¢ã«ãŠã³ããäœã£ãŠåæ²ãããããããŸããã
â 1. ç®ç
ãäžèšã®çç±ãããæå ã§å®è¡ã§ããå®å šãªãã¹ã¯ãŒããžã§ãã¬ãŒã¿ãŒã欲ãããŠäœããŸããïŒçµç·¯ã¯å²æïŒã
Webãã©ãŠã¶ã®ãã¹ã¯ãŒããžã§ãã¬ãŒã¿ãŒã¯ä»»æã®ã¿ã€ãã³ã°ã§å©çšã§ããªãïŒã¯ãïŒ
ãã¹ã¯ãŒãçæã®ããã«ã€ã³ã¿ãŒãããäžã®ãµãŒãã¹ã䜿ããããªãïŒå¿µã®ããçªå察çã¯ããŠããããæéããããè¯ãæ¹æ³ãšã¯èšããªãïŒ
第äžè ã®ã¢ããªã«ãäŸåããããªãïŒãšèããïŒ
å®è¡ããŠããã«è¡šç€ºããŠããããã ãã§è¯ãïŒæ©ãå®ãããŸãïŒ
ïŒã³ãŒããçµãŸãªããŠãäœãæšæºã§ãã£ãæ°ããããå¿ããŠããïŒ
â 2. èšèš
ãClaudeãChatGPTãçšããŠãäžèšã®æµãã§ãã©ãã·ã¥ã¢ããããŸããïŒåœ±é¿ã®å°ããä¿®æ£ãé€ãïŒã
ã³ãã³ãããã³ããã®ç»é¢äžã«ãã©ã³ãã ãã€é·ãè±æ°åãããªãæååãåºåãããã
èšå·ãèŠæ±ãããµãŒãã¹ãžã®å¯ŸçãšããŠæåã远å ïŒå šéšã§ã¯ãªãèªåã§éžæïŒããŠã䜿çšããæåã79çš®é¡ã«å¢ããã
å®å šè©äŸ¡ãè¡ããGet-Randomã®ä»£ããã«RNGCryptoServiceProviderãææ¡ãããã®ã§å€æŽããã
ä»»æã®ç®æãåãåã£ãéã«æåæ°ãæ°ããã®ãæéãªã®ã§ãæåæ°ã決ãæã¡ããŠè€æ°åãåºåãããã倿Žããã
â 3. æçµçãªã³ãŒã
ãäžèšã®ã³ãŒããããã¹ããšãã£ã¿ã§ä¿åãããpass_gen.batãçã®ä»»æã®ãã¡ã€ã«åã«å€æŽããŠãã ãããWindows 10ãš11ã§åäœç¢ºèªãè¡ããŸããã
@echo off
echo Generating secure passwords with different lengths...
echo.
powershell -ExecutionPolicy Bypass -Command "$numPasswords = 4; $chars = (48..57)+(65..90)+(97..122)+(33..38)+(40..41)+42+43+(44..47)+95+124+126; $charArray = $chars | ForEach-Object { [char]$_ }; $len = $charArray.Length; $rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider; $totalChars = (16*$numPasswords) + (20*$numPasswords) + (24*$numPasswords) + (28*$numPasswords); $bigResult = ''; $count = 0; while ($count -lt $totalChars) { $byteVal = New-Object byte[] 1; $rng.GetBytes($byteVal); $val = [int]$byteVal[0]; $max = [Math]::Floor(256 / $len) * $len; if ($val -lt $max) { $index = $val %% $len; $bigResult += $charArray[$index]; $count++ } }; echo '16 characters passwords:'; for ($i = 0; $i -lt $numPasswords; $i++) { echo $bigResult.Substring($i*16, 16) }; echo '' ;echo '20 characters passwords:'; $offset = 16*$numPasswords; for ($i = 0; $i -lt $numPasswords; $i++) { echo $bigResult.Substring($offset + $i*20, 20) }; echo '' ;echo '24 characters passwords:'; $offset = (16*$numPasswords) + (20*$numPasswords); for ($i = 0; $i -lt $numPasswords; $i++) { echo $bigResult.Substring($offset + $i*24, 24) }; echo '' ; echo '28 characters passwords:'; $offset = (16*$numPasswords) + (20*$numPasswords) + (24*$numPasswords); for ($i = 0; $i -lt $numPasswords; $i++) { echo $bigResult.Substring($offset + $i*28, 28) }"
echo.
echo Password generation complete. Press Enter to exit...
pause>nulãå®è¡ãããšã16æåã20æåã24æåã28æåã®ãã¹ã¯ãŒãã4åãã€åºåããŸããåºåã®åæ°ãå€ããããšãã¯ã$numPasswords = 4ãã®å€ã倿ŽããŠãã ããã
ã仿§ã®å€æŽãè¡ãããå Žåã¯ãChatGPTãClaudeãGrokçã«äœãæ¿ããããŠã¿ãŠãã ãããããã«æ°èŠã®ãã£ããã§ã³ãŒãã確èªããããšãç¢ºå®æ§ãããé«ãŸããŸãã念ãå ¥ãããæ¹ã¯ãChatGPT o3ïŒâŠã¯ãããããªã®ã§o4-mini-highïŒçã®é«åºŠãªæšè«ããå©çšãã ããã
ãçæã¯PowerShellã䜿çšããŠããããã1è¡ã«ãŸãšããŠãããŸãããŸãããŠãŒã¶ãŒæš©éã§ãåããšèšãããŸãããæªç¢ºèªã§ãã
â 4. å®è¡äŸ
ãå®è¡ãããšãŠã€ã³ããŠãåºçŸããŠãäžèšç»é¢ã®ãããªè¡šç€ºã§æ¢ãŸããŸãã奜ã¿ã®ç®æãã³ããŒããŠãå©çšãã ãããåœç¶ãªãããäžèšã«è¡šç€ºãããæååã䜿çšããããšã¯å³çŠã§ãã
ã䜿çšã§ããªãèšå·ãå«ãŸããŠããŸã£ãå Žåã¯ãé·ãã®ãã¹ã¯ãŒãããäžèŠãªæåãåé€ãããšè¯ãã§ããããããã§ãè¶³ããªãå Žåã¯åºåãçŽãããæ¬¡ã®è¡ã®å é ããé ã«æŸã£ãŠãã ããïŒæ£æçã§ã¯ãªããæ©æ¢°çã«è¡ãããšã倧äºïŒã

â 5. ãã¹ã¯ãŒãã®å®å šæ§ã®è©äŸ¡ïŒä»®ïŒ
ãChatGPT o3ã«ã³ãŒããæž¡ããŠè©äŸ¡ãããŸãããã©ã³ãã ãªæåã§æ§æããããã¹ã¯ãŒãã®å Žåã䜿çšããæåã79çš®é¡ãšé·ãã16ïœ28æåã§ã¯ãç·åœããæ»æã«å¯ŸããŠïŒã®ã¿ïŒååãªåŒ·åºŠããããšã¿ãããŸãã
16æå(çŽ100ããã)ã§ãçžåœåŒ·å
äžè¬çãªWebãµãŒãã¹ã§ã®å©çšãå人çšãã¡ã€ã«ã®ä¿è·ãªã©ãå€ãã®çšéã«ã¯åå以äžã®åŒ·åºŠãšèããããŸãã
20æå(çŽ126ããã)以äžã¯ããã«å®å šããŒãžã³ã倧ãã
20æåããäžã¯ 2^100 ãåªã«è¶ ããç·åœãã空éã«ãªããã³ã³ãã¥ãŒã¿ãŒã§ã®ãã«ãŒããã©ãŒã¹æ»æã¯äºå®äžäžå¯èœãªé åã«ãªã£ãŠãããŸããé·ãã®ãã¹ã¯ãŒããæ±ãããµãŒãã¹ãç°å¢ã§ããã°ã20æå以äžãæšå¥šãããšå®å¿ã§ãã
24æå(çŽ151ããã)ã»28æå(çŽ176ããã)ã¯æ¥µããŠå ç¢
ãããã¯ãå°æ¥ã®èšç®æ©ãªãœãŒã¹å¢å€§ããããçšåºŠèæ ®ããŠããäžéšã®åœå®¶ã¬ãã«æ»æãæ³å®ããªãéãã¯éå°ãªãŸã§ã«å®å šãªåŒ·åºŠãšãªãã§ãããã
ãããããšããåäœãåºãŠããŸããããããã¯ãã¹ã¯ãŒãã®ãšã³ããããŒã§ããlogâ ([character set size] * [password length])ãã§èšç®ã§ããŸããããšãã°ãæ¬åŒ§å ã®å€ïŒçµã¿åããã®åæ°ïŒã256ã§ããã°ããšã³ããããŒã¯8 bitsãšãªããŸãã
79 (set sizes) ã®å ŽåïŒ
16 (length) ã§ 100.86 bits
20 (length) ã§ 126.08 bits
24 (length) ã§ 151.29 bits
28 (length) ã§ 176.51 bits
ãäžèšã¯ãæ¬èšäºã®ãã¹ã¯ãŒããžã§ãã¬ãŒã¿ãŒãçæãããã¹ã¯ãŒãã®ãšã³ããããŒïŒçè«å€ïŒã§ãã79çš®é¡ã®æåãçšããã©ã³ãã ãªæååãåºåããŸãã®ã§ãããã¹ã¯ãŒãã16æåã®å Žåããã¹ã¯ãŒãã®çµã¿åããã®åæ°ã¯2ã®100.86ä¹åããããšããããšã«ãªããŸãã
ãäžèšã¯èšç®ã«äœ¿ã£ãããããã¡ã€ã«ã§ããé·ãã8æåãã32æåãŸã§ã®ãšã³ããããŒãèšç®ããŸããæåã®çš®é¡ã®æ°ã¯ã79ã®éšåãæžãæ¿ãããšå€æŽã§ããŸãã
@echo off
echo Calculating password entropy for character set with 79 characters...
echo.
powershell -ExecutionPolicy Bypass -Command "$charsetSize = 79; echo 'Password length | Entropy (bits)'; echo '---------------|---------------'; for ($length = 8; $length -le 32; $length++) { $entropy = [Math]::Log($charsetSize, 2) * $length; $formattedEntropy = '{0:F2}' -f $entropy; echo ('{0,14} | {1,15}' -f $length, $formattedEntropy) }"
echo.
echo Entropy calculation complete. Press any key to exit...
pause > nulãããããã¡ã€ã«ããPowerShellãåŒã³åºããšä»ã®ããã°ã©ãã³ã°èšèªã«äŸåããªããªãã®ã§ïŒWindowsã«ã¯äŸåããïŒãç°¡åãªåŠçã®å Žåã¯è¯ãã§ãããã³ãŒãã¯LLMãäœã£ãŠãããŸããã
â 6. ãã¹ã¯ãŒãã®å®å šæ§ã®è©äŸ¡ïŒæªå®ã®å®ïŒ
ãéæ¿ãšãèšãããNISCã®è³æã確èªããŠã¿ããšããã端çãªçµè«ã衚ããå³ã«ãã®ãããªèšè¿°ããããŸããã
ãã°ã€ã³çšãã¹ã¯ãŒãã¯ãé·ãããããšã§ããå®å šã«
ãæ°åïŒè±å€§æåïŒè±å°æåãã®ïŒæ¡ã ãšâçŽ 218 å éã
ãæ°å+è±å€§æå+è±å°æåãã®12æ¡ã ãšâçŽ32åéã
åãæåçš®ã§ãããã¹ã¯ãŒããé·ãèšå®ããããšã§æšèªããã«ãããªããŸãã
https://security-portal.nisc.go.jp/guidance/handbook.html
第äžç« 3.2 ãã¹ã¯ãŒãã®å®å šæ§ãé«ãã
ãã
ã以åã¯ããã¹ã¯ãŒãã®æåã¯äœçš®é¡ã®æåã§äœæå以äžãæšå¥šããšã®èšè¿°ããã£ãããã§ãããçŸåšã¯ãã®ãããªèšè¿°ãèŠã€ãããŸããã
ããšã¯ããããã¡ã€ã«ã®æå·åçã«ããããã¹ã¯ãŒãã¯çŸåããŸãããå€èŠçŽ èªèšŒãæ¡çšãããŠããªãïŒãŸãã¯å©çšããŠããªãïŒå Žé¢ãããããšæããŸãããã£ãŠãååãªåŒ·åºŠãæã£ããã¹ã¯ãŒããé©åãªæ¹æ³ã§ç®¡çããå¿ èŠæ§ã¯ãŸã 倱ãããŠããŸããïŒç®¡çã®æ¹æ³ã¯åèªã§ã確èªãã ããâŠïŒã
ãè¿å¹Žãã¬ã³ãã«ãªã£ãŠããã®ã¯ãç¬èªã®ã«ãŒã«ãçšããŠãæååãçµã¿åããããäžéšãç·šéãããããŠãé·ããã¹ã¯ãŒãäœæããæ¹æ³ã§ãããã ããããšããã¹ã¯ãŒããæšæž¬å°é£ã«ãªã£ããšããŠããäœããã®æ¹æ³ã§çãŸãããç¡å¹åããããããŠã¯æå³ããããŸããã
ãçŸä»£ã«ãããŠæšå¥šããããã¹ã¯ãŒãã®ããªã·ãŒã«ã€ããŠãä¿¡é Œã§ããããªãœãŒã¹ãç¡ãã調ã¹ãŠã¿ãŸããããããæ®å¿µãªãããWebäžã«ã¯æ§æ¥ã®ããªã·ãŒãæããäŸã°ãããåºãŠããŸããå€ãæ å ±ã¯èŠãªãããã«ããŸãããã
ãå人çã«ã¯ã79çš®é¡ã®èšå·èŸŒã¿ã®æåã䜿ã£ãã©ã³ãã ãªãã¹ã¯ãŒãã®å Žåã¯16æåã§å®çšã¬ãã«ïŒäžè¶³ã®ãªã匷床ïŒã18ïœ20æåã§ããã°å°æ¥ã«ããã£ãŠå®å šïŒéåžžã«åŒ·åºïŒãšãçŸæç¹ã§ã¯çµè«ã¥ããããšã«ããŸããçŸå®ãšããŠããããŸã§èŠæ±ãããäŸãããŸãç¡ãã®ãçç±ã®1ã€ã§ãã
ããŸããããšããã¹ã¯ãŒããçããããšããŠããç·åœããæ»æãæåãããããå ã«ã
ã¢ã«ãŠã³ããç¡å¹åãŸãã¯åé€ãããŠå©çšã§ããªããªã
ãã¹ã¯ãŒãã§å®ããã察象ã®è³å³æéãåãã
ãã¹ã¯ãŒãã§å®ãããå¯Ÿè±¡ã®æã¡äž»ããã®äžãå»ã
ã®ããããã«ãªããšèããŸãã
ãããå æžãªç· ãã«ãªã£ãŠããŸããŸããããçŸå®ãšããŠããã§ååã ãšæããŸããã§ãããïŒ
â 7. ãã®ä»
ãç§ãæžããä»ã®èšäºã¯ãã¡ãã¥ãŒãããã©ã£ãŠãã ããã
ãèšäºã«é¢ããããšã§äœããããŸããããXã®@riddi0908ãŸã§ãé¡ãããŸãã