[Ttssh2-commit] [7028] SSH_MSG_KEY_DH_GEX_REQUEST での min のデフォルトを 2048 に引き上げた

Back to archive index

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;



Ttssh2-commit メーリングリストの案内
Back to archive index