Comments (6)
The input to cryptoSMT is a set of parameters (cipher, rounds, target probability for differential characteristic, ...) and it constructs a problem instance in the CVC-language which is processable by STP. This is done by setting up the constraints (only allow valid differentials, ...) for the variables in each round.
Additionally, there is a variable weight which is used to sum up all the probabilities and enables the tool to search for differential characteristics with a certain probability by assigning a fixed value to it.
The procedure of finding the best differential characteristic (--mode 0) for the given parameters is the following:
- Construct the problem instance with the tool
- Check if STP finds a solution
** If there is a solution, output the variable assignment
** else increment weight and call STP again
In this case the SAT solver is called implicitly by STP, as it is a SAT-solver based SMT-solver.
The SAT-solver is used explicitly in the case of computing/estimating the probability of a differential (--mode 4).
STP is used to construct the CNF of the given SMT problem instance and then the SAT solver is called. This is done because for computing the probability of the differential we want to find many solutions to our given problem instance. The advantage of cryptominisat is that it keeps the state (learned clauses...) when searching for more solutions, which speeds up finding any subsequent solutions.
I hope I could clarify a few things. You might also want to read reference [1] given on the project site, which applies a similar approach to Salsa20.
from cryptosmt.
Hi, what is the role of python language in this smt solver?
from cryptosmt.
Hi!
For your information, CryptoSMT is not actually an SMT solver. It is actually a cryptographic tool which uses some SMT solvers such as STP, and Boolector, to solve some kinds of cryptographic problems. In other words, CryptoSMT uses Python language to create an SMT model, and then invokes an SMT solver to solve the obtained SMT model. Therefore, the main role of CryptoSMT is converting a cryptographic problem to an SMT model, and uses Python language to do that.
Good luck!
from cryptosmt.
from cryptosmt.
from cryptosmt.
from cryptosmt.
Related Issues (15)
- OSError: [Errno 13] Permission denied HOT 1
- differential characteristics HOT 1
- "docker build -t cryptosmt ."cannot be executed HOT 4
- Significance of Weights HOT 1
- Mode 4 issue HOT 1
- Docmentation
- Loading Example YAML Files is Broken
- Issue with Present80 Cipher - findAllCharacteristics HOT 2
- Error: BVTypeCheck: terms in atomic formulas must be of equal length HOT 1
- It seems there is an Error in simon.py HOT 1
- cryptosmt HOT 3
- S2 rotate in simon HOT 6
- Role of Weight component in cryptoSMT HOT 1
- Site not found HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cryptosmt.