diff options
| -rw-r--r-- | TESTS.md | 8 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/categories.xml | 6 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite128.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime128.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite128_pub.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime128_pub.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite160.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime160.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite160_pub.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime160_pub.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite192.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime192.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite192_pub.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime192_pub.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite224.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime224.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite224_pub.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime224_pub.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite256.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime256.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite256_pub.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime256_pub.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite384.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime384.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite384_pub.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime384_pub.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite521.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime521.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/composite521_pub.csv (renamed from src/cz/crcs/ectester/data/nonprime/nonprime521_pub.csv) | 0 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/curves.xml (renamed from src/cz/crcs/ectester/data/nonprime/curves.xml) | 28 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/composite/keys.xml | 48 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/data/nonprime/keys.xml | 48 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/ECTester.java | 8 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/TestSuite.java | 10 |
21 files changed, 78 insertions, 78 deletions
@@ -3,10 +3,10 @@ - `default` - `test-vectors` - `wrong` - - `nonprime` + - `composite` - `invalid` -**NOTE: The `wrong`, `nonprime` and `invalid` test suites caused temporary DoS of some cards. These test suites prompt you for +**NOTE: The `wrong`, `composite` and `invalid` test suites caused temporary DoS of some cards. These test suites prompt you for confirmation before running, be cautious.** ## Default @@ -68,14 +68,14 @@ java -jar ECTester.jar -t wrong -b 521 -fp ``` tests a 521 bit(`-b`), prime-field(`-fp`) wrong curve. -## Nonprime +## Composite Tests using curves that don't have a prime order/nearly prime order. These tests should generally fail, a success here implies the card **WILL** use a non-secure curve if such curve is set by the applet. Operations over such curves are susceptible to small-subgroup attacks. For example: ```bash -java -jar ECTester.jar -t nonprime -b 160 -fp +java -jar ECTester.jar -t composite -b 160 -fp ``` ## Invalid diff --git a/src/cz/crcs/ectester/data/categories.xml b/src/cz/crcs/ectester/data/categories.xml index c53a7c0..750fa8c 100644 --- a/src/cz/crcs/ectester/data/categories.xml +++ b/src/cz/crcs/ectester/data/categories.xml @@ -32,9 +32,9 @@ <desc>GOST R 34.10-2001: RFC5832</desc> </category> <category> - <name>nonprime</name> - <directory>nonprime</directory> - <desc>Non-prime order curves, with points of very small order pregenerated.</desc> + <name>composite</name> + <directory>composite</directory> + <desc>Composite order curves, with points of very small order pregenerated.</desc> </category> <category> <name>wrong</name> diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime128.csv b/src/cz/crcs/ectester/data/composite/composite128.csv index b666e20..b666e20 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime128.csv +++ b/src/cz/crcs/ectester/data/composite/composite128.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime128_pub.csv b/src/cz/crcs/ectester/data/composite/composite128_pub.csv index a1fbe5c..a1fbe5c 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime128_pub.csv +++ b/src/cz/crcs/ectester/data/composite/composite128_pub.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime160.csv b/src/cz/crcs/ectester/data/composite/composite160.csv index e685a11..e685a11 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime160.csv +++ b/src/cz/crcs/ectester/data/composite/composite160.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime160_pub.csv b/src/cz/crcs/ectester/data/composite/composite160_pub.csv index 7060146..7060146 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime160_pub.csv +++ b/src/cz/crcs/ectester/data/composite/composite160_pub.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime192.csv b/src/cz/crcs/ectester/data/composite/composite192.csv index c61f65c..c61f65c 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime192.csv +++ b/src/cz/crcs/ectester/data/composite/composite192.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime192_pub.csv b/src/cz/crcs/ectester/data/composite/composite192_pub.csv index 97c66cd..97c66cd 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime192_pub.csv +++ b/src/cz/crcs/ectester/data/composite/composite192_pub.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime224.csv b/src/cz/crcs/ectester/data/composite/composite224.csv index cd4c5f8..cd4c5f8 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime224.csv +++ b/src/cz/crcs/ectester/data/composite/composite224.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime224_pub.csv b/src/cz/crcs/ectester/data/composite/composite224_pub.csv index aa2ab06..aa2ab06 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime224_pub.csv +++ b/src/cz/crcs/ectester/data/composite/composite224_pub.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime256.csv b/src/cz/crcs/ectester/data/composite/composite256.csv index 582b115..582b115 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime256.csv +++ b/src/cz/crcs/ectester/data/composite/composite256.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime256_pub.csv b/src/cz/crcs/ectester/data/composite/composite256_pub.csv index 60f475c..60f475c 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime256_pub.csv +++ b/src/cz/crcs/ectester/data/composite/composite256_pub.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime384.csv b/src/cz/crcs/ectester/data/composite/composite384.csv index ffcbe91..ffcbe91 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime384.csv +++ b/src/cz/crcs/ectester/data/composite/composite384.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime384_pub.csv b/src/cz/crcs/ectester/data/composite/composite384_pub.csv index 236602e..236602e 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime384_pub.csv +++ b/src/cz/crcs/ectester/data/composite/composite384_pub.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime521.csv b/src/cz/crcs/ectester/data/composite/composite521.csv index b65c980..b65c980 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime521.csv +++ b/src/cz/crcs/ectester/data/composite/composite521.csv diff --git a/src/cz/crcs/ectester/data/nonprime/nonprime521_pub.csv b/src/cz/crcs/ectester/data/composite/composite521_pub.csv index 9695924..9695924 100644 --- a/src/cz/crcs/ectester/data/nonprime/nonprime521_pub.csv +++ b/src/cz/crcs/ectester/data/composite/composite521_pub.csv diff --git a/src/cz/crcs/ectester/data/nonprime/curves.xml b/src/cz/crcs/ectester/data/composite/curves.xml index e0eb78a..e940efe 100644 --- a/src/cz/crcs/ectester/data/nonprime/curves.xml +++ b/src/cz/crcs/ectester/data/composite/curves.xml @@ -2,45 +2,45 @@ <curves xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../schema.xsd"> <curve> - <id>nonprime128</id> + <id>composite128</id> <bits>128</bits> <field>prime</field> - <file>nonprime128.csv</file> + <file>composite128.csv</file> </curve> <curve> - <id>nonprime160</id> + <id>composite160</id> <bits>160</bits> <field>prime</field> - <file>nonprime160.csv</file> + <file>composite160.csv</file> </curve> <curve> - <id>nonprime192</id> + <id>composite192</id> <bits>192</bits> <field>prime</field> - <file>nonprime192.csv</file> + <file>composite192.csv</file> </curve> <curve> - <id>nonprime224</id> + <id>composite224</id> <bits>224</bits> <field>prime</field> - <file>nonprime224.csv</file> + <file>composite224.csv</file> </curve> <curve> - <id>nonprime256</id> + <id>composite256</id> <bits>256</bits> <field>prime</field> - <file>nonprime256.csv</file> + <file>composite256.csv</file> </curve> <curve> - <id>nonprime384</id> + <id>composite384</id> <bits>384</bits> <field>prime</field> - <file>nonprime384.csv</file> + <file>composite384.csv</file> </curve> <curve> - <id>nonprime521</id> + <id>composite521</id> <bits>521</bits> <field>prime</field> - <file>nonprime521.csv</file> + <file>composite521.csv</file> </curve> </curves>
\ No newline at end of file diff --git a/src/cz/crcs/ectester/data/composite/keys.xml b/src/cz/crcs/ectester/data/composite/keys.xml new file mode 100644 index 0000000..2835615 --- /dev/null +++ b/src/cz/crcs/ectester/data/composite/keys.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" ?> +<keys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../schema.xsd" + category="composite" + desc="Points on the non-prime curves, very small point orders(3-5)."> + <pubkey> + <id>composite128-pub</id> + <file>composite128_pub.csv</file> + <curve>composite/composite128</curve> + <desc>order = 5</desc> + </pubkey> + <pubkey> + <id>composite160-pub</id> + <file>composite160_pub.csv</file> + <curve>composite/composite160</curve> + <desc>order = 3</desc> + </pubkey> + <pubkey> + <id>composite192-pub</id> + <file>composite192_pub.csv</file> + <curve>composite/composite192</curve> + <desc>order = 3</desc> + </pubkey> + <pubkey> + <id>composite224-pub</id> + <file>composite224_pub.csv</file> + <curve>composite/composite224</curve> + <desc>order = 5</desc> + </pubkey> + <pubkey> + <id>composite256-pub</id> + <file>composite256_pub.csv</file> + <curve>composite/composite256</curve> + <desc>order = 3</desc> + </pubkey> + <pubkey> + <id>composite384-pub</id> + <file>composite384_pub.csv</file> + <curve>composite/composite384</curve> + <desc>order = 3</desc> + </pubkey> + <pubkey> + <id>composite521-pub</id> + <file>composite521_pub.csv</file> + <curve>composite/composite521</curve> + <desc>order = 5</desc> + </pubkey> +</keys>
\ No newline at end of file diff --git a/src/cz/crcs/ectester/data/nonprime/keys.xml b/src/cz/crcs/ectester/data/nonprime/keys.xml deleted file mode 100644 index c10ae65..0000000 --- a/src/cz/crcs/ectester/data/nonprime/keys.xml +++ /dev/null @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<keys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="../schema.xsd" - category="nonprime" - desc="Points on the non-prime curves, very small point orders(3-5)."> - <pubkey> - <id>nonprime128-pub</id> - <file>nonprime128_pub.csv</file> - <curve>nonprime/nonprime128</curve> - <desc>order = 5</desc> - </pubkey> - <pubkey> - <id>nonprime160-pub</id> - <file>nonprime160_pub.csv</file> - <curve>nonprime/nonprime160</curve> - <desc>order = 3</desc> - </pubkey> - <pubkey> - <id>nonprime192-pub</id> - <file>nonprime192_pub.csv</file> - <curve>nonprime/nonprime192</curve> - <desc>order = 3</desc> - </pubkey> - <pubkey> - <id>nonprime224-pub</id> - <file>nonprime224_pub.csv</file> - <curve>nonprime/nonprime224</curve> - <desc>order = 5</desc> - </pubkey> - <pubkey> - <id>nonprime256-pub</id> - <file>nonprime256_pub.csv</file> - <curve>nonprime/nonprime256</curve> - <desc>order = 3</desc> - </pubkey> - <pubkey> - <id>nonprime384-pub</id> - <file>nonprime384_pub.csv</file> - <curve>nonprime/nonprime384</curve> - <desc>order = 3</desc> - </pubkey> - <pubkey> - <id>nonprime521-pub</id> - <file>nonprime521_pub.csv</file> - <curve>nonprime/nonprime521</curve> - <desc>order = 5</desc> - </pubkey> -</keys>
\ No newline at end of file diff --git a/src/cz/crcs/ectester/reader/ECTester.java b/src/cz/crcs/ectester/reader/ECTester.java index bb555f9..aff5762 100644 --- a/src/cz/crcs/ectester/reader/ECTester.java +++ b/src/cz/crcs/ectester/reader/ECTester.java @@ -216,7 +216,7 @@ public class ECTester { actions.addOption(Option.builder("ln").longOpt("list-named").desc("Print the list of supported named curves and keys.").hasArg().argName("what").optionalArg(true).build()); actions.addOption(Option.builder("e").longOpt("export").desc("Export the defaut curve parameters of the card(if any).").build()); actions.addOption(Option.builder("g").longOpt("generate").desc("Generate [amount] of EC keys.").hasArg().argName("amount").optionalArg(true).build()); - actions.addOption(Option.builder("t").longOpt("test").desc("Test ECC support. [test_suite]:\n- default:\n- invalid:\n- wrong:\n- nonprime:\n- test-vectors:").hasArg().argName("test_suite").optionalArg(true).build()); + actions.addOption(Option.builder("t").longOpt("test").desc("Test ECC support. [test_suite]:\n- default:\n- invalid:\n- wrong:\n- composite:\n- test-vectors:").hasArg().argName("test_suite").optionalArg(true).build()); actions.addOption(Option.builder("dh").longOpt("ecdh").desc("Do ECDH, [count] times.").hasArg().argName("count").optionalArg(true).build()); actions.addOption(Option.builder("dhc").longOpt("ecdhc").desc("Do ECDHC, [count] times.").hasArg().argName("count").optionalArg(true).build()); actions.addOption(Option.builder("dsa").longOpt("ecdsa").desc("Sign data with ECDSA, [count] times.").hasArg().argName("count").optionalArg(true).build()); @@ -422,8 +422,8 @@ public class ECTester { case "wrong": suite = new TestSuite.Wrong(dataStore, cfg, systemOutLogger); break; - case "nonprime": - suite = new TestSuite.NonPrime(dataStore, cfg, systemOutLogger); + case "composite": + suite = new TestSuite.Composite(dataStore, cfg, systemOutLogger); break; case "invalid": suite = new TestSuite.Invalid(dataStore, cfg, systemOutLogger); @@ -739,7 +739,7 @@ public class ECTester { } testSuite = cli.getOptionValue("test", "default").toLowerCase(); - String[] tests = new String[]{"default", "nonprime", "invalid", "test-vectors", "wrong"}; + String[] tests = new String[]{"default", "composite", "invalid", "test-vectors", "wrong"}; List<String> testsList = Arrays.asList(tests); if (!testsList.contains(testSuite)) { System.err.println("Unknown test case. Should be one of: " + Arrays.toString(tests)); diff --git a/src/cz/crcs/ectester/reader/TestSuite.java b/src/cz/crcs/ectester/reader/TestSuite.java index 7118dd8..24b72a3 100644 --- a/src/cz/crcs/ectester/reader/TestSuite.java +++ b/src/cz/crcs/ectester/reader/TestSuite.java @@ -205,21 +205,21 @@ public abstract class TestSuite { } } - public static class NonPrime extends TestSuite { + public static class Composite extends TestSuite { - public NonPrime(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut) { - super(dataStore, cfg, systemOut, "nonprime"); + public Composite(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut) { + super(dataStore, cfg, systemOut, "composite"); } @Override public List<Test> run(CardMngr cardManager) throws IOException, CardException { /* Do the default tests with the public keys set to provided smallorder keys - * over non-prime order curves. Essentially small subgroup attacks. + * over composite order curves. Essentially small subgroup attacks. * These should fail, the curves aren't safe so that if the computation with * a small order public key succeeds the private key modulo the public key order * is revealed. */ - Map<String, EC_Key> keys = dataStore.getObjects(EC_Key.class, "nonprime"); + Map<String, EC_Key> keys = dataStore.getObjects(EC_Key.class, "composite"); for (EC_Key key : keys.values()) { EC_Curve curve = dataStore.getObject(EC_Curve.class, key.getCurve()); if (cfg.namedCurve != null && !(key.getCurve().startsWith(cfg.namedCurve) || key.getCurve().equals(cfg.namedCurve))) { |
