Division Property
Implements bit-based division property analysis for modern block ciphers.
Solvatore is a specialized tool designed to assist in the cryptanalysis of cryptographic primitives. It simplifies the process of finding integral distinguishers using the bit-based division property.
The primary objective of Solvatore is to identify distinguishers that allow a researcher to differentiate a cryptographic primitive from a truly random function. These distinguishers are often the first step in constructing powerful key-recovery attacks.
The tool searches for sets of inputs where certain output bits are “balanced.” A bit is considered balanced if the XOR sum of that bit across all outputs is zero with a probability of 1.
Division Property
Implements bit-based division property analysis for modern block ciphers.
Design Flexibility
Supports various design strategies: S-boxes, bit permutations, modular addition, and matrix multiplications.
Python Integration
Built with Python, leveraging pycryptosat for SAT-based solving of division trails.
Easy Modeling
Simple API for describing cipher structures and round functions.
Install Dependencies
Solvatore requires the pycryptosat package.
pip install pycryptosatPython Environment Compatible with both Python 2 and Python 3.
To analyze a cipher like PRESENT, you define its structure and use the Solvatore solver to check for balanced bits.
from solvatore import Solvatorefrom ciphers import present
cipher = present.presentrounds = 9
solver = Solvatore()solver.load_cipher(cipher)solver.set_rounds(rounds)
# Check if bit 0 is balanced after 9 rounds with specific active bitsactive_bits = {i for i in range(1, 64)} # Bit 0 is constantif solver.is_bit_balanced(0, rounds, active_bits): print("Found distinguisher!")CipherDescription: Used to model the internal state and operations of the primitive.Solvatore: The main engine that processes the cipher description and evaluates division properties.