scmno****@osdn*****
scmno****@osdn*****
2018年 1月 25日 (木) 21:22:06 JST
Revision: 7028 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7028 Author: doda Date: 2018-01-25 21:22:05 +0900 (Thu, 25 Jan 2018) Log Message: ----------- SSH_MSG_KEY_DH_GEX_REQUEST での min のデフォルトを 2048 に引き上げた RFC 8270対応。 SSH_MSG_KEY_DH_GEX_REQUEST での min の値は GexMinimalGroupSize で 設定可能であり、デフォルトでは 0 となっている。 GexMinimalGroupSize が 0 の時は、Minimum Limit の 1024 として扱って いたが、RFC 8270 での推奨値に従い 2048 として扱うように変更した。 互換性で 2048 未満に設定したい場合にそなえて、Minimum Limit は 1024 のままとする。 RFC 8270 では、 | This minimum DH group size may need to be increased to 3072 for forward-looking users. とあるので、3072 に上げてもいいのかも Modified Paths: -------------- trunk/doc/en/html/about/history.html trunk/doc/ja/html/about/history.html trunk/ttssh2/ttxssh/kex.h trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/doc/en/html/about/history.html =================================================================== --- trunk/doc/en/html/about/history.html 2018-01-25 12:22:02 UTC (rev 7027) +++ trunk/doc/en/html/about/history.html 2018-01-25 12:22:05 UTC (rev 7028) @@ -2970,6 +2970,15 @@ <h3><a name="ttssh_2.84">2018.02.28 (Ver 2.84) not released</a></h3> <ul class="history"> + <li>Changes + <ul> + <li>The minimum group size of the Diffie-Hellman group exchange key exchange method is increased to 2048. (RFC 8270) + <ul> + <li>To change to the previous behavior, set the GexMinimalGroupSize entry in teraterm.ini file to 1024.</li></li> + </ul></li> + </ul> + </li> + <li>Bug fixes <ul> <!--li>\x83o\x81[\x83W\x83\x87\x83\x93\x8F\xEE\x95\xF1\x83_\x83C\x83A\x83\x8D\x83O\x82̃T\x81[\x83o\x83z\x83X\x83g\x8C\xAE\x82̎w\x96\xE4\x82ɁA\x93\xAF\x88\xEA\x83T\x81[\x83o\x82Őڑ\xB1\x82Ɏg\x97p\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2\x95\xFB\x8E\xAE\x82̌\xAE\x82\xAA\x95\\x8E\xA6\x82\xB3\x82\xEA\x82邱\x82Ƃ\xAA\x82\xA0\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li--> Modified: trunk/doc/ja/html/about/history.html =================================================================== --- trunk/doc/ja/html/about/history.html 2018-01-25 12:22:02 UTC (rev 7027) +++ trunk/doc/ja/html/about/history.html 2018-01-25 12:22:05 UTC (rev 7028) @@ -2976,6 +2976,15 @@ <h3><a name="ttssh_2.84">2018.02.28 (Ver 2.84) not released</a></h3> <ul class="history"> + <li>\x95ύX + <ul> + <li>Diffie-Hellman group exchane \x8C\xAE\x8C\xF0\x8A\xB7\x95\xFB\x8E\xAE\x82ł̍ŏ\xAC\x83O\x83\x8B\x81[\x83v\x83T\x83C\x83Y\x82\xF0 2048 \x82ɕύX\x82\xB5\x82\xBD\x81B(RFC 8270) + <ul> + <li>\x88ȑO\x82̓\xAE\x8D\xEC\x82ɖ߂\xB7\x82ɂ́Ateraterm.ini \x82\xCC GexMinimalGroupSize \x83G\x83\x93\x83g\x83\x8A\x82\xF0 1024 \x82ɂ\xB7\x82\xE9\x81B</li> + </ul></li> + </ul> + </li> + <li>\x83o\x83O\x8FC\x90\xB3 <ul> <li>\x83o\x81[\x83W\x83\x87\x83\x93\x8F\xEE\x95\xF1\x83_\x83C\x83A\x83\x8D\x83O\x82̃T\x81[\x83o\x83z\x83X\x83g\x8C\xAE\x82̎w\x96\xE4\x82ɁA\x93\xAF\x88\xEA\x83T\x81[\x83o\x82Őڑ\xB1\x82Ɏg\x97p\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2\x95\xFB\x8E\xAE\x82̌\xAE\x82\xAA\x95\\x8E\xA6\x82\xB3\x82\xEA\x82邱\x82Ƃ\xAA\x82\xA0\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li> Modified: trunk/ttssh2/ttxssh/kex.h =================================================================== --- trunk/ttssh2/ttxssh/kex.h 2018-01-25 12:22:02 UTC (rev 7027) +++ trunk/ttssh2/ttxssh/kex.h 2018-01-25 12:22:05 UTC (rev 7028) @@ -31,6 +31,10 @@ // SSH_MSG_KEY_DH_GEX_REQUEST \x82ł\xCC min, n, max \x82\xAA\x82Ƃ蓾\x82\xE9\x94͈͂̏\xE3\x8C\xC0/\x89\xBA\x8C\xC0 (RFC 4419) #define GEX_GRP_LIMIT_MIN 1024 #define GEX_GRP_LIMIT_MAX 8192 +// GexMinimalGroupSize \x82\xAA 0 (\x83f\x83t\x83H\x83\x8B\x83g(\x96\xA2\x90ݒ\xE8)) \x82\xBE\x82\xC1\x82\xBD\x8E\x9E\x82\xC9 min \x82Ɏg\x82\xA4\x92l +// RFC 8270 \x82\xC5 min \x82̍Œ\xE1\x92l\x82\xAA 2048 \x82Ɉ\xF8\x82\xAB\x8Fグ\x82\xE7\x82ꂽ\x82\xAA\x81A\x8C݊\xB7\x90\xAB\x82ׂ̈\xC9 GEX_GRP_LIMIT_MIN +// \x82\xF0\x88\xF8\x82\xAB\x8Fグ\x82\xE9\x82̂ł͂Ȃ\xAD\x82āA\x83f\x83t\x83H\x83\x8B\x83g\x82̒l\x82\xF0\x95ύX\x82\xB7\x82\xE9 +#define GEX_GRP_DEFAULT_MIN 2048 DH *dh_new_group1(void); DH *dh_new_group14(void); Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2018-01-25 12:22:02 UTC (rev 7027) +++ trunk/ttssh2/ttxssh/ssh.c 2018-01-25 12:22:05 UTC (rev 7028) @@ -5375,9 +5375,15 @@ -// -// DH-GEX (RFC 4419) -// +/* + * DH-GEX (RFC 4419) + * + * SSH_MSG_KEY_DH_GEX_REQUEST: + * byte SSH_MSG_KEY_DH_GEX_REQUEST (34) + * uint32 min, minimal size in bits of an acceptable group + * uint32 n, preferred size in bits of the group the server will send + * uint32 max, maximal size in bits of an acceptable group + */ static void SSH2_dh_gex_kex_init(PTInstVar pvar) { @@ -5391,17 +5397,31 @@ goto error; } - // \x83T\x81[\x83o\x82\xAA\x95ۏ\xB7\x82ׂ\xAB\x8DŒ\xE1\x8C\xC0\x82̃r\x83b\x83g\x90\x94\x82\xF0\x8B\x81\x82߂\xE9\x81iwe_need\x82̓o\x83C\x83g\x81j\x81B - if (pvar->settings.GexMinimalGroupSize < GEX_GRP_LIMIT_MIN) { + // \x83T\x81[\x83o\x82ɗv\x8B\x81\x82\xB7\x82\xE9 group size \x82\xCC min, n(preferred), max \x82\xF0\x8C\x88\x92肷\x82\xE9\x81B + if (pvar->settings.GexMinimalGroupSize == 0) { + // 0 (\x96\xA2\x90ݒ\xE8) \x82\xBE\x82\xC1\x82\xBD\x8E\x9E\x82͍ŐV\x82̐\x84\x8F\xA7\x92l\x82\xF0\x8Eg\x82\xA4 + min = GEX_GRP_DEFAULT_MIN; + } + else if (pvar->settings.GexMinimalGroupSize < GEX_GRP_LIMIT_MIN) { min = GEX_GRP_LIMIT_MIN; + logprintf(LOG_LEVEL_NOTICE, + __FUNCTION__ ": small GexMinimalGroupSize is too small (%d), use minimum limit (%sd)", + pvar->settings.GexMinimalGroupSize, GEX_GRP_LIMIT_MIN); } else if (pvar->settings.GexMinimalGroupSize > GEX_GRP_LIMIT_MAX) { min = GEX_GRP_LIMIT_MAX; + logprintf(LOG_LEVEL_NOTICE, + __FUNCTION__ ": small GexMinimalGroupSize is too larse (%d), use maximum limit (%sd)", + pvar->settings.GexMinimalGroupSize, GEX_GRP_LIMIT_MAX); } else { min = pvar->settings.GexMinimalGroupSize; } + + // max \x82͏\xED\x82ɏ\xE3\x8C\xC0\x82\xA2\x82\xC1\x82ς\xA2 max = GEX_GRP_LIMIT_MAX; + + // preferred \x82͎g\x97p\x82\xB7\x82\xE9\x8Ae\x88Í\x86\x97v\x91f\x82̌\xAE\x92\xB7/\x83u\x83\x8D\x83b\x83N\x92\xB7\x82̂\xA4\x82\xBF\x81A\x8Dő\xE5\x82̂\xE0\x82̂\xF0\x8Eg\x82\xA4 bits = dh_estimate(pvar->we_need * 8); if (bits < min) { bits = min;