Skip to content

Commit 4ce7f49

Browse files
authored
Merge pull request #606 from RUB-NDS/longOracle
long oracle
2 parents 1e4187b + aa3c901 commit 4ce7f49

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

Attacks/src/main/java/de/rub/nds/tlsattacker/attacks/constants/PaddingRecordGeneratorType.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,7 @@ public enum PaddingRecordGeneratorType {
2828
/**
2929
*
3030
*/
31-
LONG
31+
LONG,
32+
33+
LONG_RECORD
3234
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/**
2+
* TLS-Attacker - A Modular Penetration Testing Framework for TLS
3+
*
4+
* Copyright 2014-2017 Ruhr University Bochum / Hackmanit GmbH
5+
*
6+
* Licensed under Apache License 2.0
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*/
9+
package de.rub.nds.tlsattacker.attacks.padding;
10+
11+
import de.rub.nds.modifiablevariable.bytearray.ByteArrayExplicitValueModification;
12+
import de.rub.nds.tlsattacker.attacks.padding.vector.PaddingVector;
13+
import de.rub.nds.tlsattacker.attacks.padding.vector.TrippleVector;
14+
import de.rub.nds.tlsattacker.core.constants.AlgorithmResolver;
15+
import de.rub.nds.tlsattacker.core.constants.CipherSuite;
16+
import de.rub.nds.tlsattacker.core.constants.ProtocolVersion;
17+
import java.util.LinkedList;
18+
import java.util.List;
19+
20+
public class LongRecordPaddingGenerator extends PaddingVectorGenerator {
21+
22+
/**
23+
*
24+
* @param suite
25+
* @param version
26+
* @return
27+
*/
28+
@Override
29+
public List<PaddingVector> getVectors(CipherSuite suite, ProtocolVersion version) {
30+
// Total plaintext size is not allowed to be bigger than 16384
31+
// MAC + Plaintext
32+
List<PaddingVector> vectorList = new LinkedList<>();
33+
int blockSize = AlgorithmResolver.getCipher(suite).getBlocksize();
34+
int macSize = AlgorithmResolver.getMacAlgorithm(version, suite).getSize();
35+
vectorList.add(new TrippleVector("ValidPlainData", "ValidPlainData", new ByteArrayExplicitValueModification(
36+
new byte[16384]), new ByteArrayExplicitValueModification(new byte[AlgorithmResolver.getMacAlgorithm(
37+
version, suite).getSize()]), new ByteArrayExplicitValueModification(
38+
createPaddingBytes(calculateValidPaddingSize(blockSize, macSize)))));
39+
vectorList.add(new TrippleVector("InvalidPlainData", "InvalidPlainData",
40+
new ByteArrayExplicitValueModification(new byte[16385]), new ByteArrayExplicitValueModification(
41+
new byte[AlgorithmResolver.getMacAlgorithm(version, suite).getSize()]),
42+
new ByteArrayExplicitValueModification(createPaddingBytes(calculateInvalidPaddingSize(blockSize,
43+
macSize)))));
44+
return vectorList;
45+
}
46+
47+
private int calculateValidPaddingSize(int blocksize, int macSize) {
48+
return blocksize - (macSize % blocksize);
49+
}
50+
51+
private int calculateInvalidPaddingSize(int blocksize, int macSize) {
52+
return (blocksize - (macSize % blocksize)) - 1;
53+
}
54+
55+
}

Attacks/src/main/java/de/rub/nds/tlsattacker/attacks/padding/PaddingTraceGenerator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public abstract class PaddingTraceGenerator {
3030
*/
3131
public PaddingTraceGenerator(PaddingRecordGeneratorType type) {
3232
switch (type) {
33+
case LONG_RECORD:
34+
vectorGenerator = new LongRecordPaddingGenerator();
35+
break;
3336
case LONG:
3437
vectorGenerator = new LongPaddingGenerator();
3538
break;

0 commit comments

Comments
 (0)