¼«ÂÄÍî¤Êµ»½Ñ¼Ô¤ÎÆüµ­

´ðËܤ϶ô¤Ã¤Æ¤ë¤«°û¤ó¤Ç¤ë¤«¤Ç¤¹¤¬¡¢¤è¤¯¼ñÌ£¤Ç¥«¥é¥ª¥±¡¦PKI¡¦½ð̾¡¦Ç§¾Ú¡¦¥×¥í¥°¥é¥ß¥ó¥°¡¦¾ðÊ󥻥­¥å¥ê¥Æ¥£¤ò¤ä¤Ã¤Æ¤¤¤Þ¤¹¡£Î¹¹¥¤­¡£¥Æ¥ì¥Ó¹¥¤­¤Ç·ÝǽÄÌ

PKCS#5

POODLE¹¶·â¤Ë¤Ä¤¤¤ÆËÜÅö¤ËTLSv1.0¤Ê¤é°ÂÁ´¤Ê¤Î¤«¡©

POODLE¹¶·â¤Ï¡¢±¿Íѵ㤫¤»¤È¤¤¤¦¤«¡¢SSLv3¤Î¥µ¥Ý¡¼¥È¤òËÜÅö¤ËÀڤäÁ¤ã¤Ã¤Æ¤¤¤¤¤Î¤«¡¢¥ì¥¬¥·¡¼¥¯¥é¥¤¥¢¥ó¥È¤Ë¤Ä¤¤¤ÆÂбþ¤¹¤ë¤Î¤¬¤¤¤¤¤Î¤«¡¢Çº¤à½ê¤Ç¤¹¤è¤Í¡£ShellShockÁû¤®¤µ¤¨¤Þ¤À¤¦¤Á¤Ç¤Ï¼ý«¤·¤Æ¤¤¤Ê¤¤¤Î¤Ë¡¦¡¦¡¦

POODLE¹¶·â¤Ï¡¢¡ÖSSLv3¤ÎÌäÂê¤Ç¤¢¤Ã¤ÆTLSv1.0°Ê¾å¤Ç¤Ï(¥Ñ¥Ç¥£¥ó¥°¤ÎÊýË¡¤¬°ã¤¦¤Î¤Ç)±Æ¶Á¤¬Ìµ¤¤¡×¤È¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢nahi¤µ¤ó¤«¤é¥³¥á¥ó¥È¤â¤é¤Ã¤Æ¡Ö¼ÂÁõ°Í¸¤À¤±¤ÉTLSv1.0¤Ç¤â´í¸±¤Ê¼ÂÁõ¤¬¤¢¤ë¤ó¤¸¤ã¤Ê¤¤¤Î¡©¡×¤È¤¤¤¦¤³¤È¤Ç¡¢¤½¤Î»ö¤ò½ñ¤¤¤Æ¤ß¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

º£²ó¤ÎPOODLE¹¶·â¤Ë¤Ä¤¤¤Æ¤Ï¡¢²¿¤¬ÌäÂê¤Ç¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¹¶·â¤Ç¤­¤ë¤Î¤«¤È¤¤¤¦¡¢¾Ü¤·¤¤¿ÞÆþ¤ê¤ÎÁÇÀ²¤é¤·¤¯È½¤ê¤ä¤¹¤¤²òÀâ¤ò¥â¥Ð¥²¡¼¤µ¤ó¤¬ ¡ÖSSL v3.0¤ÎÀȼåÀ­¡ÖPOODLE¡×¤Ã¤Æ¤«¤ï¤¤¤¤Ì¾Á°¤À¤±¤É²¿¡©¡© - Padding Oracle On Downgraded Legacy Encryption¤Î»ÅÁÈ¤ß -¡×¤Ç¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤Á¤é¤ò¤´Í÷¤Ë¤Ê¤ë¤ÈÎɤ¤¤È»×¤¤¤Þ¤¹¡£

SSLv3¤ÈTLSv1.0°Ê¹ß¤Î¥Ö¥í¥Ã¥¯°Å¹æ¤Î¥Ñ¥Ç¥£¥ó¥°¤Î°ã¤¤

SSL/TLS¤ÇAES¤ä3DES¤Ê¤É¤Î¥Ö¥í¥Ã¥¯°Å¹æ¤ò»È¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢°Å¹æ²½¤¹¤ë¥Ç¡¼¥¿¤Ï¥Ö¥í¥Ã¥¯¤ÎÂ礭¤µ¤ÎÀ°¿ôÇÜ¡¢¤Ä¤Þ¤ê¡¢AES-256¤Ê¤é32¥Ð¥¤¥È¡¢AES-128¤Ê¤é16¥Ð¥¤¥È¡¢3DES¤Ê¤é24¥Ð¥¤¥È¤ÎÇÜ¿ô¤Ç¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£¤Ç¡¢¤½¤ÎÂ礭¤µ¤Ë·¤¦¤è¤¦¤Ë¥Ñ¥Ç¥£¥ó¥°¤È¸Æ¤Ð¤ì¤ë·ä´Ö¤ÎµÍ¤áʪ¤ò¤·¤ÆÇÜ¿ô¤Ë¤Ê¤ë¤è¤¦¤ËÄ´À°¤¹¤ë¤ï¤±¤Ç¤¹¡£

Î㤨¤Ð¡¢°Å¹æ¥¹¥¤¡¼¥È¤È¤·¤Æ¡¢AES-128(16¥Ð¥¤¥È)¡¢SHA1(20¥Ð¥¤¥È)¤ò»È¤Ã¤Æ¤¤¤ë¤È¤·¤Æ¡¢8¥Ð¥¤¥È¤Î¥Ç¡¼¥¿¤ò°Å¹æ²½¤¹¤ë¤È¤·¤Þ¤·¤ç¤¦¡£¥Ñ¥Ç¥£¥ó¥°¤·¤¿°Å¹æ²½¤¹¤ë¤¿¤á¤ÎÆþÎϤÏ

ʿʸ(8)¡ÜHmacSHA1¥á¥Ã¥»¡¼¥¸Ç§¾Ú¥³¡¼¥É(20)¡Ü¥Ñ¥Ç¥£¥ó¥°(3)+¥Ñ¥Ç¥£¥ó¥°Ä¹(1)¡áAES¥Ö¥í¥Ã¥¯Ä¹(16)¡ß2
¤È¤Ê¤ê¤Þ¤¹¡£É¬¤º¥Ñ¥Ç¥£¥ó¥°Ä¹¤Î1¥Ð¥¤¥È¤Ï´Þ¤Þ¤ì¤Þ¤¹¡£¥Ñ¥Ç¥£¥ó¥°¤ÎŤµ¤Ï(¥Ö¥í¥Ã¥¯Ä¹-1)¤òͤ¨¤Ê¤¤ÃͤǺ£²ó¤Ï3¤È¤Ê¤ê¤Þ¤¹¡£

¤µ¤Æ¡¢SSLv3¤ÈTLSv1.0¤Î¥Ñ¥Ç¥£¥ó¥°ÊýË¡¤Î°ã¤¤¤Ç¤¹¤¬¡¢

  • SSLv3¤Î¾ì¹ç¤Ï¥Ñ¥Ç¥£¥ó¥°¤ÎÃͤÏǤ°Õ¤ÎÃͤò¼è¤ì¤ë
  • TLSv1.0¤Î¾ì¹ç¤Ï¥Ñ¥Ç¥£¥ó¥°¤ÏPKCS#5¥Ñ¥Ç¥£¥ó¥°Êý¼°¤òÍѤ¤¡¢ ¶ñÂÎŪ¤Ë¤Ï¥Ñ¥Ç¥£¥ó¥°ÃͤγƥХ¤¥È¤Ï¥Ñ¥Ç¥£¥ó¥°Ä¹¤ÈƱ¤¸Ãͤ¬ÀßÄꤵ¤ì¤ë¡£
¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Àè¤Û¤É¤Î3¥Ð¥¤¥È¤Î¥Ñ¥Ç¥£¥ó¥°¤¬¤¢¤ë¥±¡¼¥¹¤Ç¤Ï ²¼¤ÎÎã¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¥Ñ¥Ç¥£¥ó¥°(3)+¥Ñ¥Ç¥£¥ó¥°Ä¹ [a0][f3][62][03] - SSLv3¤Î¾ì¹ç(ÀèÆ¬3¥Ð¥¤¥È¤ÏǤ°Õ) [03][03][03][03] - TLSv1.0¤Î¾ì¹ç(ÀèÆ¬3¥Ð¥¤¥È¤Ï¥Ð¥¤¥ÈŤÈƱ¤¸ÃÍ)
º£²ó¤ÎPOODLE¹¶·â¤Ç¤Ï¡¢SSLv3¤¬¥Ñ¥Ç¥£¥ó¥°¤ÎÃͤ¬Ç¤°Õ¤Ç¤¢¤ë¤¿¤á¤Ë¡¢ ¸úΨŪ¤ËÆÃÄê¤Î°ÌÃÖ¤Î1¥Ð¥¤¥È¤Îʿʸ¤òÉü¸µ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤ï¤±¤Ç¤¹¡£ ¥â¥Ð¥²¡¼¤µ¤ó¤Î²òÀâ¤Ë¤¢¤ëÄ̤ꡢSSLv3¤Î¾ì¹ç¤Ï256²ó¤ÎHTTPSÍ×µá¤Î»î¹Ô¤Ç 1¥Ð¥¤¥È¤ò²òÆÉ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢TLSv1.0¤Î¾ì¹ç¤Ë¤Ï256¤Î16¾è¤Î »î¹Ô¤¬É¬Íפʤ¿¤á¤Ë¸½¼ÂŪ¤Ê»þ´Ö¤ÇÉü¸µ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

¤Ç¡¢ËÜÅö¤ËTLSv1.0¤Ê¤é°ÂÁ´¤Ê¤Î¡©

º£Æü¤ÎËÜÂê¤ÎTLSv1.0¤Ê¤éËÜÅö¤Ë°ÂÁ´¤Ê¤Î¤«¡¢¤È¤¤¤¦Ïäʤó¤Ç¤¹¤¬¡¢ ¤È¤ê¤¢¤¨¤º¡¢TLSv1.1¤ÈTLSv1.0¤Î¥Ñ¥Ç¥£¥ó¥°¤Ë´Ø¤¹¤ëµ¬Äê¤ò ¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¤Þ¤º¡¢TLSv1.1¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢

RFC 4346 TLSv1.1 6.2.3.2 CBC Block Cipher¤è¤ê
padding
Padding that is added to force the length of the plaintext to be an integral multiple of the block cipher's block length. The padding MAY be any length up to 255 bytes, as long as it results in the TLSCiphertext.length being an integral multiple of the block length. Lengths longer than necessary might be desirable to frustrate attacks on a protocol that are based on analysis of the lengths of exchanged messages. Each uint8 in the padding data vector MUST be filled with the padding length value. The receiver MUST check this padding and SHOULD use the bad_record_mac alert to indicate padding errors.
¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

°ìÊý¡¢TLSv1.0¤Ç¤¹¡£

RFC 2246 TLSv1.0 6.2.3.2 CBC Block Cipher ¤è¤ê
padding
Padding that is added to force the length of the plaintext to be an integral multiple of the block cipher's block length. The padding may be any length up to 255 bytes long, as long as it results in the TLSCiphertext.length being an integral multiple of the block length. Lengths longer than necessary might be desirable to frustrate attacks on a protocol based on analysis of the lengths of exchanged messages. Each uint8 in the padding data vector must be filled with the padding length value.

TLSv1.0¤Ç¤Ï¡¢¡Ö¥Ñ¥Ç¥£¥ó¥°¥Ç¡¼¥¿¤Ï¥Ñ¥Ç¥£¥ó¥°Ä¹¤ÇËä¤á¤é¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¡× ¤È½ñ¤¤¤Æ¤¢¤ê¤Þ¤¹¤¬¡¢ TLSv1.1¤Ç¤Ï¡¢¡Ö ¥Ñ¥Ç¥£¥ó¥°¥Ç¡¼¥¿¤Ï¥Ñ¥Ç¥£¥ó¥°Ä¹¤ÇËä¤á¤é¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤(MUST)¡£ ¼õ¿®¼Ô¤Ï¤³¤Î¥Ñ¥Ç¥£¥ó¥°¤ò¥Á¥§¥Ã¥¯¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤º(MUST)¡¢ ¥Ñ¥Ç¥£¥ó¥°¥¨¥é¡¼¤ò¼¨¤¹¤Ë¤Ïbad_record_mac¥¢¥é¡¼¥È¤ò»È¤¦ ¤Ù¤­¤Ç¤¢¤ë(SHOULD)¡£¡× ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢TLSv1.0¤Ç¤Ï¥Ñ¥Ç¥£¥ó¥°¥Ç¡¼¥¿¤¬¤Á¤ã¤ó¤È¥Ñ¥Ç¥£¥ó¥°Ä¹¤ÎÃÍ¤Ç ¤¦¤á¤é¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤Ïmust¤È¤Ï½ñ¤¤¤Æ¤¢¤ê¡¢ ¿¤¯¤Î¼ÂÁõ¤Ï¤Á¤ã¤ó¤È¤·¤Æ¤¯¤ì¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢ RFC¾å¤Îɬ¿ÜÍ×·ï(MUST)¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¥Á¥§¥Ã¥¯¤·¤Ê¤¤¼ÂÁõ¤¬¤¢¤Ã¤Æ¤â ¤ª¤«¤·¤¯¤Ê¤¯¡¢ ¥Á¥§¥Ã¥¯¤µ¤ì¤Ê¤¤¾ì¹ç¡¢¤³¤ì¤Ç¤ÏSSLv3¤ÈƱ¤¸¤Ç¡¢°ìÈÌŪ¤ÊSSL/TLS¤Î¼ÂÁõ¤Ç¤Ï MUST¤È½ñ¤«¤ì¤Æ¤¤¤Ê¤¤»ö¤Ï¼ÂÁõ¤¹¤ëɬÍפâ¤Ê¤¤¤Î¤Ç (¼ÂºÝ¡¢SHOULD¤È½ñ¤¤¤Æ¤¢¤ì¤Ð¡¢¤³¤ì¤ËÂбþ¤·¤Ê¤¤¼ÂÁõ¤â¿¤¤)¡¢ ¼ÂÁõ¤Ë¤è¤Ã¤Æ¤Ï¥Ñ¥Ç¥£¥ó¥°ÃͤΥÁ¥§¥Ã¥¯¤ò¤·¤Ê¤¤¤¿¤á¤Ë¡¢ SSLv3¤ÈƱ¤¸¤¯POODLE¹¶·â¤Î±Æ¶Á¤ò¼õ¤±¤ëTLSv1.0¼ÂÁõ¤¬¤¢¤ë²ÄǽÀ­¤¬¤¢¤ë ¤«¤â¤·¤ì¤Ê¤¤¤È¤¤¤¦»ö¤Ç¤¹¡£

»þ´Ö¤¬¤¢¤ë»þ¤Ë¡¢¤Á¤ç¤Ã¤È¼çÍפʥª¡¼¥×¥ó¥½¡¼¥¹¤Î¼ÂÁõ¤òÇÁ¤¤¤Æ¤ß¤è¤¦¤È»×¤¤¤Þ¤¹¡£

º£Æü¤Ï¤³¤ÎÊդǡ£nahi¤µ¤ó¡¢¾ðÊ󤢤꤬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£

Äɵ­

¿ÞÀâ¡§PKCS#5ÈëÌ©¸°¤ò¥Ñ¥¹¥ï¡¼¥ÉÊݸ¤ë¶¦Ä̸°¤ÈIV¤Îºî¤êÊý(µ­»ö½¤Àµ)

¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ì¤¿PEM·Á¼°¤ÎPKCS#5 RSAÈëÌ©¸°¤òÉü¹æ¤·¤Æ¼è¤ê½Ð¤·¤Æ½ð̾¤Ê¤ó¤«¤Ë»È¤¨¤ë¤è¤¦¤ÊJavaScript¥é¥¤¥Ö¥é¥ê¤òºî¤ê¤¿¤¤¤È»×¤Ã¤Æ¤ë¤ó¤Ç¤¹¤¬¡¢¤Ê¤ó¤«¸½¶È¤¬Ë»»¦¤µ¤ì¤Æ¤ª¤ê¤½¤ó¤Ê»þ´Ö¤â¤Ê¤¯¡£¤¿¤À¡¢¤½¤ó¤Ê»ö¤Ç¤Ï¤â¤¦¥¨¥ó¥¸¥Ë¥¢¤È¤·¤ÆµÍ¤ó¤Ç¤¤¤ë¤Ê¤¡¤È»×¤¤¥ê¥Ï¥Ó¥ê¤Î¤¿¤á¤Ë¤¤¤í¤¤¤íÄ´¤Ù¤Æ¤ß¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡£

¥Ñ¥¹¥ï¡¼¥ÉÊݸ¤ì¤¿PKCS#5 PEM·Á¼°¤ÎÈëÌ©¸°

OpenSSH¤Î¸ø³«¸°Ç§¾Ú¤ä¡¢OpenSSL¥Ù¡¼¥¹¤Ç¤ÎCA¤ä¡¢Apache¥µ¡¼¥Ð¡¼¤Îµ¯Æ°¤Ê¤É¤Ç¥Ñ¥¹¥ï¡¼¥ÉÊݸ¤ì¤¿PKCS#5 PEM·Á¼°¤Î¸ø³«¸°°Å¹æ¤ÎÈëÌ©¸°¤ò»È¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£°ìÈ̤ˤϤ³¤ó¤Ê´¶¤¸¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ë¤Ê¤Ã¤Æ¤Þ¤¹¡£

-----BEGIN RSA PRIVATE KEY----- ¢«­¡PKCS#5 RSAÈëÌ©¸°¤ò¼¨¤¹¥Ø¥Ã¥À
Proc-Type: 4,ENCRYPTED ¢«­¢¶¦Ä̸°°Å¹æ¤ÇÈëÌ©¸°¤ò°Å¹æ²½¤·¤Æ¤¤¤ë¤³¤È¤ò¼¨¤¹
DEK-Info: DES-EDE3-CBC,E83B4019057F55E9 ¢«­£¶¦Ä̸°°Å¹æÊý¼°¤È¡¢¥½¥ë¥È¤ò´Þ¤à½é´ü²½¥Ù¥¯¥¿

iIPs59nQn4RSd7ppch9/vNE7PfRSHLoQFmaAjaF0DxjV9oucznUjJq2gphAB2E2H ¢«­¤¶¦Ä̸°¤Ç°Å¹æ²½¤µ¤ì¤¿ÈëÌ©¸°ËÜÂÎ
1r9k4e7lc7LZjF0RIgfeRl7MKmLHVCNo2EhPkt5yTb6bNdf3trS03+N+L5zBoaVp
°Ê²¼¡¢Î¬

PEM·Á¼°¤ÎÈëÌ©¸°¤Ë¤Ï"BEGIN RSA PRIVATE KEY"¤È¤«½ñ¤¤¤Æ¤¢¤ë¤ä¤Ä¤È"BEGIN PRIVATE KEY"¤È¤«½ñ¤¤¤Æ¤¤¤ë¤ä¤Ä¤¬¤¢¤ë¤ó¤Ç¤¹¤±¤É¡¢¤½¤ì¤¾¤ìPKCS#5·Á¼°¤ÈPKCS#8·Á¼°¤Î¸ø³«¸°°Å¹æ¤ÎÈëÌ©¸°¤Ë¤Ê¤ê¤Þ¤¹¡£ PKCS#5¤ÈPKCS#8¤Î¸°·Á¼°¤Î°ã¤¤¤Ï¤¶¤Ã¤È¤³¤ó¤Ê´¶¤¸¡£

PKCS#5 ÈëÌ©¸°
  • PEM¥Ø¥Ã¥À¤Ë"BEGIN RSA PRIVATE KEY"¤Î¤è¤¦¤Ë¸ø³«¸°°Å¹æ¥¢¥ë¥´¥ê¥º¥à¤¬½ñ¤¤¤Æ¤¢¤ë¡£
  • ¸°ËÜÂΤˤϸø³«¸°°Å¹æ¸°¥¢¥ë¥´¥ê¥º¥à¤ò¼¨¤¹¼±Ê̾ðÊó¤Ï½ñ¤«¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç PEM¥Ø¥Ã¥À¦¤Ç¶èÊ̤¹¤ëɬÍפ¬¤¢¤ë¡£
  • (¿ô»ú¤ÎÍåÎ󤬲¿¸Ä¤¢¤ë¤«¤È¤«¡¢ÍåÎó¤ÎŤµ¤È¤«¤Ç¸«¤ë¿Í¤¬¸«¤ì¤Ð¤ï¤«¤ê¤Þ¤¹¤¬w)
PKCS#8 ÈëÌ©¸°
  • PEM¥Ø¥Ã¥À¤Ï"BEGIN PRIVATE KEY"¤Î¤è¤¦¤Ë¸ø³«¸°°Å¹æ¥¢¥ë¥´¥ê¥º¥à¤¬½ñ¤¤¤Æ¤Ê¤¤¡£
  • ¸°ËÜÂΤˤϸø³«¸°°Å¹æ¸°¥¢¥ë¥´¥ê¥º¥à¤ò¼¨¤¹¼±Ê̾ðÊó¤¬ASN.1¥ª¥Ö¥¸¥§¥¯¥È¼±ÊÌ»Ò(OID) ¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¡£
  • PKCS#8¤Î¸°¥Ç¡¼¥¿¤Ï¡¢PKCS#5¤Î¸°ËÜÂΤȥ¢¥ë¥´¥ê¥º¥à¼±Ê̻Ҥò¤Þ¤È¤á¤ÆASN.1¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤¿¤â¤Î¡£
PKCS#5¤ÎÈëÌ©¸°¤Ë¤Ï¤½¤Î¾¤Ë¡¢°Å¹æ²½¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¡¢¸ø³«¸°°Å¹æ¤ÎÈëÌ©¸°¤ò¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ë ¤¿¤á¤Î¶¦Ä̸°°Å¹æ¤Î¥¢¥ë¥´¥ê¥º¥à¡¢¥½¥ë¥È¤ò´Þ¤à½é´ü²½¥Ù¥¯¥¿¤¬½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£¥½¥ë¥È¤ÏƱ¤¸¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤Æ¤â ¶¦Ä̸°°Å¹æ¤Î¶¦Ä̸°¤¬Æ±¤¸¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤¬Ìµ¤¤¤è¤¦¤Ë¸°¤ÎÊݸ»þ¤Ë¤Ä¤±¤é¤ì¤¿8¥Ð¥¤¥È¤ÎŤµ¸ÇÄê¤ÎÍð¿ô¤Ç¤¹¡£¶¦Ä̸°°Å¹æ¤Î¥¢¥ë¥´¥ê¥º¥à¤ä¸°Ä¹¤Ë°Í¸¤·¤ÆÄ¹¤µ¤¬´Þ¤à¡Ö¥½¥ë¥È¤ò´Þ¤à½é´ü²½¥Ù¥¯¥¿¡×¤ÎÀèÆ¬8¥Ð¥¤¥Èʬ¤ò¥½¥ë¥È¤È¤·¤Æ»ÈÍѤ·¤Þ¤¹¡£

¶¦Ä̸°°Å¹æ¤Î¶¦Ä̸°¤È½é´ü¥Ù¥¯¥¿IV¤Ï¤É¤¦¤ä¤Ã¤Æºî¤ë¤Î¤«

ÈëÌ©¸°¤ò»È¤¦¤¿¤á¤Î¥Ñ¥¹¥Õ¥ì¡¼¥º(¥Ñ¥¹¥ï¡¼¥É¡¢PIN¥³¡¼¥É¤È¤â¸Æ¤Ð¤ì¤ë)¤È¡¢Á°½Ò¤Î ¥½¥ë¥È¤«¤é¤É¤Î¤è¤¦¤Ë¶¦Ä̸°¤È½é´ü¥Ù¥¯¥¿¤òÀ¸À®¤¹¤ë¤Î¤«¤òOpenSSL¤Î¥½¡¼¥¹¥³¡¼¥É¤ò į¤á¤Ê¤¬¤éÄ´¤Ù¤Æ¤ß¤Þ¤·¤¿¡£¤³¤Î½èÍý¤ò¹Ô¤¦´Ø¿ô¤Ï "crypto/evp/evp_key.c" ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë "EVP_BytesToKey" ¤È¤¤¤¦´Ø¿ô¤Ç¤¹¡£¤³¤Î´Ø¿ô¤Ï¶¦Ä̸°¤È½é´ü²½¥Ù¥¯¥¿(IV)¤òƱ»þ¤Ëºî¤ë¤â¤Î¤Ç¤¹¤¬¡¢PKCS#5¤Î¸°¥Ç¡¼¥¿¤òÉü¹æ¤¹¤ë¤¿¤á¤Ë¤ÏÀ¸À®¤µ¤ì¤¿¶¦Ä̸°¤Î¤ß¤ò»È¤¤¡¢½é´ü²½¥Ù¥¯¥¿¤Ï´Ø¿ô¤è¤êÀ¸À®¤µ¤ì¤¿¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢PKCS#5¥Õ¥¡¥¤¥ë¤ÎDEK-Info¤Ëµ­ºÜ¤µ¤ì¤¿¥½¥ë¥È¤ò´Þ¤à½é´ü²½¥Ù¥¯¥¿Á´ÂΤò»È¤¤¤Þ¤¹¡£

¥Ñ¥¹¥Õ¥ì¡¼¥º¤È¥½¥ë¥È¤«¤é¤É¤Î¤è¤¦¤Ë¶¦Ä̸°¤È½é´ü¥Ù¥¯¥¿(IV)¤òÀ¸À®¤¹¤ë¤Î¤«¤ò¿Þ¤Ë½ñ¤¤¤Æ¤ß¤Þ¤·¤¿¡£
EVP_BytesToKey

´ðËÜŪ¤Ë¤Ï¥Ñ¥¹¥Õ¥ì¡¼¥º¤Îʸ»úÎó¤È¥½¥ë¥È¤«¤éMD5¥Ï¥Ã¥·¥å¥¢¥ë¥´¥ê¥º¥à¤Î¥Ï¥Ã¥·¥åÃͤò·×»»¤·¡¢ Äê¤á¤é¤ì¤¿Ä¹¤µ¤òÀÚ¤ê½Ð¤·¤Æ¶¦Ä̸°¤ÈIV¤ò¼èÆÀ¤·¤Þ¤¹¡£º£¤Ê¤ªMD5¸ÇÄê¤Ç»È¤ï¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤Î¤Ï ¤¦¡¼¤à¤È¤¤¤¦´¶¤¸¤Ç¤¹¤Í¡£

¶¦Ä̸°¤È½é´ü¥Ù¥¯¥¿IV¤òOpenSSL¥³¥Þ¥ó¥É¤Ç´Êñ¤Ë¸«¤ë¤Ë¤Ï

¡Ö¸ø³«¸°°Å¹æ¤ÎÈëÌ©¸°¡×¤òºÇ½ªÅª¤ËÊݸ¤ë¡Ö¶¦Ä̸°°Å¹æ¤Î¶¦Ä̸°¡×¤È¡Ö½é´ü¥Ù¥¯¥¿IV¡×¤Ï¡¢ °Å¹æ²½ÂоݤÎÈëÌ©¸°¤ÎÃͤˤϰìÀÚ´Ø·¸¤Ê¤¯¡¢Ã±¤Ë¶¦Ä̸°°Å¹æ¥¢¥ë¥´¥ê¥º¥à¤È¥Ñ¥¹¥³¡¼¥É¤È¥½¥ë¥È¤Î¤ß¤Ç·è¤Þ¤ê¡¢ ´Êñ¤ËOpenSSL¤Î¥³¥Þ¥ó¥É¤Ç¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

Î㤨¤Ð¡¢¶¦Ä̸°°Å¹æ¤¬¥È¥ê¥×¥ëDES(DES-EDE3-CBC)¤Ç¡¢ ¥Ñ¥¹¥³¡¼¥É¤¬ "hoge" ¤Ç¡¢¥½¥ë¥È¤¬ "E83B4019057F55E9" ¤Ç¤¢¤Ã¤¿¤È¤­¤Î¡¢ ¶¦Ä̸°¤È½é´ü¥Ù¥¯¥¿¤Ï°Ê²¼¤Î¥³¥Þ¥ó¥É¤Çɽ¼¨¤µ¤ì¤Þ¤¹¡£

% openssl ¶¦Ä̸°°Å¹æ -p -in /dev/null -out /dev/null -pass pass:¥Ñ¥¹¥Õ¥ì¡¼¥º -S 8¥Ð¥¤¥È16¿Ê¿ô¥½¥ë¥È
(Îã)
% openssl des-ede3-cbc -p -in /dev/null -out /dev/null -pass pass:hoge -S 1F2F3F4F5F6F7F8F
salt=1F2F3F4F5F6F7F8F
key=BD2B936A94EA6C2E0D15CD066C008F1F88735EE491687A29
iv =C180CD24D8B03454 (¤³¤ÎIV¤ÏÉü¹æ¤Ë¤Ï»È¤ï¤Ê¤¤)

ÆÉ¤ß¤Ë¤¯¤¤OpenSSL¤ÎC¤Î¥³¡¼¥É²òÀϤθå¤Ç

¤µ¤ó¤¶¤ó¡¢ÆÉ¤ß¤Ë¤¯¤¤Æñ²ò¤ÊOpenSSL¤ÎC¤Î¥½¡¼¥¹¥³¡¼¥É¤òÆÉ¤ó¤À¤¢¤È¤Ç¡¢¤½¤Î¸°¤È½é´ü²½¥Ù¥¯¥¿¤ò¼èÆÀ¤¹¤ë EVP_BytesToKey´Ø¿ô¤òPython¤Ç½ñ¤­Ä¾¤·¤Æ¤¯¤ì¤Æ¤¤¤ë yasusii ¤µ¤ó¤È¤¤¤¦Êý¤¬¤¤¤é¤Ã¤·¤ã¤¤¤Þ¤·¤¿¡£ ¡ÖDiscreet Blog 25.6.2007 - OpenSSL¤ÎPBE(Password Based Encryption) (2007-06-25)¡×¡¢Àè¤Ë¤³¤Îµ­»ö¸«¤È¤­¤ã¤è¤«¤Ã¤¿orz

¤³¤ì¤Ç¡¢¤Ê¤ó¤È¤Ê¤¯JavaScript¤ÇPKCS#5¸°¤ò²ò¤¤¤ÆRSA½ð̾¤¹¤ë¤Ê¤ó¤Æ¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Êµ¤¤¬¤·¤Æ¤­¤Þ¤·¤¿¡£ º£Æü¤Ï¤³¤ó¤Ê¤È¤³¤í¤Ç¡£

²þÄû

  • 2013.04.10 - ¥½¥ë¥È¤ÈIV¤Î°·¤¤¤Ë¤Ä¤¤¤ÆÄ´ººÉÔ­¤È¤¤¤¦¤«¸í²ò¤¬¤¢¤Ã¤¿¤Î¤Ç½¤Àµ¤·¤Þ¤·¤¿¡£
ºÇ¿·µ­»ö
Categories
Archives
Twitter
µ­»öGoogle¸¡º÷

ËÜ¥Ö¥í¥°Æâ¤òGoogle¸¡º÷
Yahoo!¥¢¥¯¥»¥¹²òÀÏ
Travel Advisor
µ­»ö¸¡º÷
QR¥³¡¼¥É
QR¥³¡¼¥É
  • ¥é¥¤¥Ö¥É¥¢¥Ö¥í¥°