ããã°ã©ã ãã使ããã¹ã¯ã¼ããã©ãä¿åããã
å¤é¨ãµã¼ãã¹ã«ã¢ã¯ã»ã¹ããããã°ã©ã ãæ¸ãå ´åããã®ãµã¼ãã¹ã®èªè¨¼æ¹å¼ã¯ä½ããèªè¨¼éµãã©ãä¿åããããã¨ããã®ã¯ã·ã¹ãã å ¨ä½ã®ã»ãã¥ãªãã£ãèããä¸ã§éè¦ãªè©±é¡ã§ãã
æ¨ä»ã®Webãµã¼ãã¹ã§ããã°ãã¯ã©ã¤ã¢ã³ããã¨ã«æ¨©éãçµã£ãã¢ã¯ã»ã¹ãã¼ã¯ã³ãçºè¡ããä¸ä¸ãã¼ã¯ã³ãæ¼ããå ´åã«ã¯æ¼ãããã¼ã¯ã³ã®ã¿ãç¡å¹åãããããªä»çµã¿ãæä¾ããã¦ããããã¾ããããããä»çµã¿ãããã°éµã®åãåãã«ã¤ãã¦æ©ãå¿ è¦ã¯ãªãã§ãããã
ä¸æ¹ããã¹ã¯ã¼ãèªè¨¼ã®ãµã¼ãã¹ãããã°ã©ã ããå©ç¨ããå ´åããã®ãã¹ã¯ã¼ããã©ã管çããã°ããã®ã§ãããããä¾ãã°éè¡ã®ããããã³ãã³ã°ã·ã¹ãã ã«èªåãã°ã¤ã³ããããã°ã©ã ãæ¸ãå ´åã«ãããã°ã©ã ãå©ç¨ããIDã»ãã¹ã¯ã¼ããå¹³æã§ä¿åãããã¨ã«åé¡ã¯ãªãã®ã§ããããã
ãã®åé¡ã«ã¤ãã¦ã®è°è«ãç§ã¯ã»ã¨ãã©è¦ããã¨ãããã¾ããããé¢ä¿ããããªæç« ãOWASPã§è¦ã¤ãã¾ããã
ãã®æç« ã«ããã°ãããã¹ã¯ã¼ããå¹³æã®ãã¬ã¼ã³ããã¹ãã§ä¿åãã¦ã¯ãããªããBASE64ã®ãããªå¯éãªã¨ã³ã³ã¼ãã£ã³ã°ããã¡ã ãã¨ã®ãã¨ã§ããæ示çã«ã¯æ¸ãã¦ããªãã®ã§ãããå¯è½ãªããã¹ã¯ã¼ãã¯ä¿åããªãæ¹ãè¯ããä¿åãããªãæå·åãã¹ããã¨ãããã¨ã®ããã§ãã
ãã¹ã¯ã¼ãå¹³æä¿åã®ãªã¹ã¯ãèãã
ããã«ãã¦ãããã¹ã¯ã¼ããæå·åããã¦ããã¨ä½ãã©ãã»ã©å®å ¨ã«ãªãã®ã§ããããã
ä»®ã«ããã¹ã¦ã®ãã¼ã«ã«ãã¡ã¤ã«ãé²è¦§å¯è½ãªèå¼±æ§ããã£ãã¨ããã¨ããã¹ã¯ã¼ããæå·åããã¦ããã¨ãã¦ã大ããæå³ã¯ããã¾ãããã¨ããã®ããããã°ã©ã ããæå·æã復å·ã§ããã¨ãããã¨ã¯å ±ééµãã·ã¹ãã ã®ã©ããã«ä¿åããã¦ããã¯ãã§ããããæ»æè ãå ±ééµã使ã£ã¦å¹³æãå ¥æã§ãã¦ãã¾ãããã§ãã
ã¨ãªãã¨ãOWASPã®ææã¯ãã¼ã«ã«ãã¡ã¤ã«ã®ãã¡ä¸é¨ã®ã¿ãæ¼æ´©ãããããªå ´åã¸ã®å¯¾çã ã¨èãããã¾ãããã®ç¨®ã®æ¼æ´©ã®å ¸åä¾ã¯ã·ã§ã«ãã¼ããã¯ï¼çã¿è¦ï¼ã§ã¯ãªãã§ããããã
PASSWORD = foobar # æã PASSWORD = Zm9vYmFyCg== # BASE64ãä¾ç¶æã
ä¸è¨ã®ããã«å¹³æãã¹ã¯ã¼ãããã¡ã¤ã«ã«ä¿åãã¦ãã¦ããã®ãã¡ã¤ã«ãç·¨éä¸ã«èª°ããå¾ããéãããã£ãããéæªãåçãæ®ããã¦ãã¾ã£ããããªå ´åãèããã¨ãã·ã¹ãã ã«èå¼±æ§ããªãã¦ããã¹ã¯ã¼ããæ¼æ´©ããå¯è½æ§ã¯ååã«ããã¾ãã
PASSWORD = sj3OFgKZbHCpEaVB1zHz0Pd3amUcTIvDOoDK9Mdk6PlT6A== # å°ãå®å
¨
ãã®ããã«ãã¹ã¯ã¼ããæå·åãã¦ããã°ãæå·æã¨å ±ééµã®ä¸¡æ¹ãçã¿è¦ãããªãéããã¹ã¯ã¼ãã¯æ¼æ´©ãã¾ããããã®ããã«èããã¨OWASPã®ææã¯ååæå³ãããããã«æãã¾ãã
ãªãã¡ãã£ã¦æå·åã©ã¤ãã©ãªãä½ã£ã
ç§ã¯éè¡ã«èªåãã°ã¤ã³ããããã°ã©ã ãæ¸ãã¦ãããå½åã¯ãã¹ã¯ã¼ããå¹³æã§ä¿åãã¦ããã®ã§ãããä¸è¨ã®ããã«èãã¦ãã¹ã¯ã¼ãæå·åã©ã¤ãã©ãªãä½æãã¾ããã
ããã¯Node.jsç¨ã©ã¤ãã©ãªã§ãã©ã³ãã çæãããã¹ã¯ã¼ããå ã«CBCã¢ã¼ãã¤ãã®å ±ééµæå·ï¼ããã©ã«ãã¯AESï¼ã§æå·åã»å¾©å·ãè¡ãã¾ããnpmã«å ¬éãã¦ããã¾ãã®ã§ã³ãã³ãä¸çºã§è©¦ãã¾ãã
$ npm install @hnw/easyaes
使ãæ¹ã¨ãã¦ã¯ãã¾ãæåã«ãã¹ã¯ã¼ããçæãã¾ãï¼æåã§ä½ã£ã¦ãããã§ãï¼ã
$ $(npm bin)/easyaes --keygen > $HOME/.easyaes
次ã«ãæå·åãããæååãæ¨æºå ¥åçµç±ã§å ¥åãã¦æå·æãå¾ã¾ãã
$ $(npm bin)/easyaes --encrypt foobar #æ¨æºå ¥åããå ¥åããå¹³æãå®éã«ã¯ã¨ã³ã¼ããã¯ããã¾ãã sj3OFgKZbHCpEaVB1zHz0Pd3amUcTIvDOoDK9Mdk6PlT6A== #åºåãããæå·æ
ãã®æå·æã¯æ¬¡ã®ããã«JavaScriptãã復å·ã§ãã¾ãã
const EasyAes=require("@hnw/easyaes"); cipher = new EasyAes(); console.log(cipher.decrypt('sj3OFgKZbHCpEaVB1zHz0Pd3amUcTIvDOoDK9Mdk6PlT6A==')); // foobar
ãã®ããã«æå·åããå¤ãè¨å®ãã¡ã¤ã«ã§ä½¿ã£ããã³ãã³ãã©ã¤ã³ãªãã·ã§ã³ããä¸ããããã¦ããããã¢ããªã±ã¼ã·ã§ã³å ã§å¾©å·ããã°ã·ã§ã«ãã¼ããã¯ã«å¯¾ãã¦ã»ãã¥ã¢ã«ãªãããã§ãã
ããã¯ã»ãã¥ãªãã£ã®è¦³ç¹ã§ã¯ä¿éºç対çã§ãããªãã®ã§ãããç²¾ç¥çãªå®å¿åº¦ã¯ããªãé«ã¾ãããã«æãã¦ãã¾ããã¨ããã®ããä¸é¨éè¡ã§ã¯ãã¾ã ã«ãã¹ã¯ã¼ãé·ã8æåã¾ã§ã«å¶éããã¦ããã®ã§ãå¹³æã§ä¿åããã¨ã·ã§ã«ãã¼ããã¯ã®ãªã¹ã¯ãé常ã«é«ãã®ã§ãã
ãã£ã¨ããã¢ãªã½ãªã¥ã¼ã·ã§ã³ããã
ç§ã®å ´åã¯ãã©ã¤ãã¼ãç¨éãã¤ç®¡çè ãç§ã ãã®ç°å¢ã ã£ãã®ã§ä¸è¨ã®å®è£ ã§å¿ è¦ååã ã¨èãã¦ãã¾ããããã£ã¨ã·ãªã¢ã¹ãªç¶æ³ã§ã¯ãã£ã¨çé¢ç®ã«éµã管çãã¹ãã§ãã
ãã¨ãã°ãä»äºã§ã»ãã¥ã¢ã«éµã管çããç®çã§ããã°AWS KMSã¨ãHashiCorp Vaultãªã©ã使ãã®ãè¯ãã§ãããããããã®ã½ãªã¥ã¼ã·ã§ã³ã¯ã¢ã¯ã»ã¹ã³ã³ããã¼ã«ãç´°ããå¶å¾¡ã§ããããã°ãåãããããã®ãè¯ãç¹ã ã¨æãã¾ãã
ã¾ãããã·ã³èµ·åç´å¾ã ãã¯ãã¹ã¯ã¼ãå ¥åãè¦æ±ãã¦ã以éã¯å ¥åããããã¹ã¯ã¼ããã¡ã¢ãªä¸ã«æå·åãã¦ä¿åãã¦ãããªã©ã®é¸æè¢ãããã§ãããã
ã¾ã¨ã
ãã¹ã¯ã¼ããå¹³æä¿åããããã¯ãã·ãªããªãã¡ãã£ã¦æå·åãã©ã¤ãã©ãªãä½ãã¾ãããã·ã§ã«ãã¼ããã¯å¯¾çãããã«ãããªãã¾ããããçããã¹ã¯ã¼ããæ証çªå·ãããã¹ããã¡ã¤ã«ã«ä¿åãããããªå ´åã¯ç¹ã«æç¨ã ã¨æãã¦ãã¾ãã
念ã®ããè£è¶³ãã¦ãã¾ãã¨ãéè¡ãã¹ã¯ã¼ãã®ãããªéè¦ãªæ å ±ãæ±ãå ´åã«ä¸çªå¤§åãªã®ã¯ãã·ã³èªä½ã®ã»ãã¥ãªãã£ã¬ãã«ãé«ããããã¨ã§ããä¾ãã°ãç§ãªãã°ãã¼ãã«IPã¢ãã¬ã¹ãæã£ã¦ãããã·ã³ãå ±ç¨ãã·ã³ã§ã¯ãã¹ã¯ã¼ãã®ãã¼ã«ã«ä¿åã¯é¿ãã¾ã1ãæ¬ç¨¿ã§ç´¹ä»ããã©ã¤ãã©ãªã¯ååå®å ¨ãªç°å¢ã§æ´ã«å®å¿ãå¾ãããã®ãã®ã§ããããã®åæããªãã¨ç¡æå³ã ã¨ããç¹ã«ã注æãã ããã
-
å人çã«ã¯ãç§èªèº«ã管çãã¦ããå® å NATç°å¢ã§ããã°ååã»ãã¥ã¢ã ã¨èãã¦ãã¾ãããä½ããã£ã¦ã»ãã¥ã¢ã¨èãããã®ç·å¼ãã¯é£ããã¨ããã§ããITãªãã©ã·ã¼ãé«ãã¤ããã®äººã§ããã«ã¦ã§ã¢ãã¤ã³ã¹ãã¼ã«ãã¦ãã¾ãå¯è½æ§ã¯ããããã§ãã©ããªç°å¢ã§ãããã¨éè¡ãã¹ã¯ã¼ãã¬ãã«ã®éè¦æ å ±ã¯ã¹ãã¬ã¼ã¸ã«ä¿åããªããã¨ããèãæ¹ãããã¨æãã¾ãã↩