diff --git a/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/config/Config.java b/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/config/Config.java index 56b15ba072..3751e296f7 100644 --- a/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/config/Config.java +++ b/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/config/Config.java @@ -1151,9 +1151,6 @@ public static Config createEmptyConfig() { @XmlJavaTypeAdapter(IllegalStringAdapter.class) private String defaultPWDPassword = "barney"; - /** Min iterations for finding the PWD password element */ - private Integer defaultPWDIterations = 40; - @XmlJavaTypeAdapter(UnformattedByteArrayAdapter.class) private byte[] defaultServerPWDPrivate = ArrayConverter.hexStringToByteArray( @@ -3550,14 +3547,6 @@ public void setDefaultPWDPassword(String password) { this.defaultPWDPassword = password; } - public Integer getDefaultPWDIterations() { - return defaultPWDIterations; - } - - public void setDefaultPWDIterations(Integer defaultPWDIterations) { - this.defaultPWDIterations = defaultPWDIterations; - } - public byte[] getDefaultServerPWDPrivate() { return Arrays.copyOf(defaultServerPWDPrivate, defaultServerPWDPrivate.length); } diff --git a/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/message/computations/PWDComputations.java b/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/message/computations/PWDComputations.java index 4ab92aedca..45e65d0de1 100644 --- a/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/message/computations/PWDComputations.java +++ b/TLS-Core/src/main/java/de/rub/nds/tlsattacker/core/protocol/message/computations/PWDComputations.java @@ -39,6 +39,8 @@ public class PWDComputations extends KeyExchangeComputations { + public static final int MAX_HASH_ITERATIONS = 1000; + private static final Logger LOGGER = LogManager.getLogger(); /** @@ -108,21 +110,19 @@ public static Point computePasswordElement(Chooser chooser, CyclicGroup group new BigInteger(1, tmp) .mod(curve.getModulus().subtract(BigInteger.ONE)) .add(BigInteger.ONE); - Point tempPoint = curve.createAPointOnCurve(tmpX); - - if (!found && curve.isOnCurve(tempPoint)) { + Point tempPoint = curve.createAPointOnCurve(tmpX, false); + if (tempPoint != null) { createdPoint = tempPoint; - savedSeed = seed.clone(); found = true; chooser.getContext().getTlsContext().getBadSecureRandom().nextBytes(base); } - if (counter > 1000) { - savedSeed = seed.clone(); - createdPoint = tempPoint; - LOGGER.warn("Could not find a useful pwd point"); - break; - } - } while (!found || counter < chooser.getConfig().getDefaultPWDIterations()); + savedSeed = seed.clone(); + } while (!found && counter < MAX_HASH_ITERATIONS); + + if (createdPoint == null) { + LOGGER.warn("Could not find a useful pwd point. Falling back to base point of curve."); + createdPoint = curve.getBasePoint(); + } // use the lsb of the saved seed and Y to determine which of the two // possible roots should be used diff --git a/TLS-Core/src/main/resources/default_config.xml b/TLS-Core/src/main/resources/default_config.xml index b24cb72afe..f995e051e5 100644 --- a/TLS-Core/src/main/resources/default_config.xml +++ b/TLS-Core/src/main/resources/default_config.xml @@ -1400,7 +1400,6 @@ 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 barney - 40 21 D9 9D 34 1C 97 97 B3 AE 72 DF D2 89 97 1F 1B 74 CE 9D E6 8A D4 B9 AB F5 48 88 D8 F6 C5 04 3C 0D 96 AB 62 4D 08 2C 71 25 5B E3 64 8D CD 30 3F 6A B0 CA 61 A9 50 34 A5 53 E3 30 8D 1D 37 44 E5 17 1D E8 CA A5 35 2D 36 EE 96 A3 99 79 B5 B7 2F A1 89 AE 7A 6A 09 C7 7F 7B 43 8A F1 6D F4 A8 8B diff --git a/TLS-Core/src/test/java/de/rub/nds/tlsattacker/core/config/ConfigTest.java b/TLS-Core/src/test/java/de/rub/nds/tlsattacker/core/config/ConfigTest.java index 555f54df15..ff2c1fc0fa 100644 --- a/TLS-Core/src/test/java/de/rub/nds/tlsattacker/core/config/ConfigTest.java +++ b/TLS-Core/src/test/java/de/rub/nds/tlsattacker/core/config/ConfigTest.java @@ -272,7 +272,6 @@ public void generatePwdConfig() { "528FBF524378A1B13B8D2CBD247090721369F8BFA3CEEB3CFCD85CBFCDD58EAA")); config.setDefaultClientPWDUsername("fred"); config.setDefaultPWDPassword("barney"); - config.setDefaultPWDIterations(40); config.setDefaultServerPWDPrivate( ArrayConverter.hexStringToByteArray( "21D99D341C9797B3AE72DFD289971F1B74CE9DE68AD4B9ABF54888D8F6C5043C")); @@ -333,7 +332,6 @@ public void generatePwd13Config() { "528FBF524378A1B13B8D2CBD247090721369F8BFA3CEEB3CFCD85CBFCDD58EAA")); config.setDefaultClientPWDUsername("fred"); config.setDefaultPWDPassword("barney"); - config.setDefaultPWDIterations(40); config.setDefaultServerPWDPrivate( ArrayConverter.hexStringToByteArray( "21D99D341C9797B3AE72DFD289971F1B74CE9DE68AD4B9ABF54888D8F6C5043C")); diff --git a/pom.xml b/pom.xml index d3cb90acbe..d5663059e6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ de.rub.nds protocol-toolkit-bom - 4.1.5 + 4.1.6 de.rub.nds.tls.attacker diff --git a/resources/configs/pwd.config b/resources/configs/pwd.config index 525a3aada3..cacd7f4e7b 100644 --- a/resources/configs/pwd.config +++ b/resources/configs/pwd.config @@ -27,7 +27,6 @@ false fred barney - 40 21 D9 9D 34 1C 97 97 B3 AE 72 DF D2 89 97 1F 1B 74 CE 9D E6 8A D4 B9 AB F5 48 88 D8 F6 C5 04 3C 0D 96 AB 62 4D 08 2C 71 25 5B E3 64 8D CD 30 3F 6A B0 CA 61 A9 50 34 A5 53 E3 30 8D 1D 37 44 E5 17 1D E8 CA A5 35 2D 36 EE 96 A3 99 79 B5 B7 2F A1 89 AE 7A 6A 09 C7 7F 7B 43 8A F1 6D F4 A8 8B diff --git a/resources/configs/pwd13.config b/resources/configs/pwd13.config index dddd9b8d1a..aaa8c54367 100644 --- a/resources/configs/pwd13.config +++ b/resources/configs/pwd13.config @@ -33,7 +33,6 @@ false fred barney - 40 21 D9 9D 34 1C 97 97 B3 AE 72 DF D2 89 97 1F 1B 74 CE 9D E6 8A D4 B9 AB F5 48 88 D8 F6 C5 04 3C 0D 96 AB 62 4D 08 2C 71 25 5B E3 64 8D CD 30 3F 6A B0 CA 61 A9 50 34 A5 53 E3 30 8D 1D 37 44 E5 17 1D E8 CA A5 35 2D 36 EE 96 A3 99 79 B5 B7 2F A1 89 AE 7A 6A 09 C7 7F 7B 43 8A F1 6D F4 A8 8B