Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
crypto-attacks — Python-Implementierungen von kryptografischen Angriffen und Hilfsprogrammen. | Kitploit
Tools/GitHubGitHub/jvdsn/crypto-attacks
Verschlüsselungs-/EntschlüsselungstoolsKryptographieCTFPapers & ForschungLernen & BildungTop in Kryptographie Nr.15Top in Verschlüsselungs-/Entschlüsselungstools Nr.16
GitHubjvdsn/crypto-attacks

crypto-attacks

Python-Implementierungen von kryptografischen Angriffen und Hilfsprogrammen.

1.3k14471vor 8 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

Einführung

Python-Implementierungen von kryptografischen Angriffen und Hilfsprogrammen.

Voraussetzungen

  • SageMath mit Python 3.9
  • PyCryptodome

Sie können Ihre SageMath-Python-Version mit dem folgenden Befehl überprüfen:``` $ sage -python --version Python 3.9.0

Wenn Ihre SageMath-Python-Version älter als 3.9.0 ist, funktionieren einige Funktionen in einigen Skripten möglicherweise nicht.

## Verwendung
Die Unit-Tests befinden sich im Verzeichnis `test` und können mit dem Modul `unittest` oder mit `pytest` ausgeführt werden. Dies sollte nicht sehr lange dauern, vielleicht ein paar Minuten, je nach Ihrer Maschine.

Um einen bestimmten Angriff auszuführen, müssen Sie den Code vor der Ausführung in die entsprechende Datei einfügen.

### Beispiel

Angenommen, Sie möchten RSA mit dem Boneh-Durfee-Angriff angreifen, mit den folgenden Parametern (entnommen aus [test_rsa.py](https://github.com/jvdsn/crypto-attacks/blob/master/test/test_rsa.py)):```python
N = 88320836926176610260238895174120738360949322009576866758081671082752401596826820274141832913391890604999466444724537056453777218596634375604879123818123658076245218807184443147162102569631427096787406420042132112746340310992380094474893565028303466135529032341382899333117011402408049370805729286122880037249
e = 36224751658507610673165956970793195381480143363550601971796688201449789736497322700382657163240771111376677180786660893671085854060092736865293791299460933460067267613023891500397200389824179925263846148644777638774319680682025117466596019474987378275216579013846855328009375540444176771945272078755317168511

Sie fügen den folgenden Code am Ende der Datei boneh_durfee.py hinzu:```python import logging

Some logging so we can see what's happening.

logging.basicConfig(level=logging.DEBUG)

N = 88320836926176610260238895174120738360949322009576866758081671082752401596826820274141832913391890604999466444724537056453777218596634375604879123818123658076245218807184443147162102569631427096787406420042132112746340310992380094474893565028303466135529032341382899333117011402408049370805729286122880037249 e = 36224751658507610673165956970793195381480143363550601971796688201449789736497322700382657163240771111376677180786660893671085854060092736865293791299460933460067267613023891500397200389824179925263846148644777638774319680682025117466596019474987378275216579013846855328009375540444176771945272078755317168511 p_bits = 512 delta = 0.26

p, q = attack(N, e, p_bits, delta=delta, m=3) assert p * q == N print(f"Found {p = } and {q = }")

Dann kannst du die Datei einfach mit Sage ausführen. Es spielt keine Rolle, von wo aus du sie ausführst, der Python-Pfad wird automagisch gesetzt (du kannst die Angriffe auch aus anderen Python-Dateien aufrufen, musst dann aber den Python-Pfad selbst korrigieren):```commandline
[crypto-attacks]$ sage -python attacks/rsa/boneh_durfee.py
INFO:root:Trying m = 3, t = 1...
DEBUG:root:Generating shifts...
DEBUG:root:Creating a lattice with 11 shifts (order = 'invlex', sort_shifts_reverse = False, sort_monomials_reverse = False)...
DEBUG:root:Reducing a 11 x 11 lattice...
DEBUG:root:Reconstructing polynomials (divide_original = True, modulus_bound = False, divide_gcd = True)...
DEBUG:root:Polynomial at row 8 is constant, ignoring...
DEBUG:root:Reconstructed polynomial has gcd 1312232632720549890113031660369306919929075823824696839212183146130434668203517349691252841557097914064120078389640402109017308806168467714230057403815071456395553717020189622129706447677967264344568789118172311850383406340547579993263937406518074980025897726255316031512238322022839331135299265704052474541497687419350763703993630899191179705015113329644753599872380152055902238937889027950089072598069861391599563222633064848996619752054685734260976071760984100109990150069201501748622288840900421607423175114026653242500476408861976142751384898489130281755466581359057847077651502734556259387442296763474369957121 with polynomial at 8, dividing...
DEBUG:root:Reconstructed 10 polynomials
DEBUG:root:Computing pairwise gcds to find trivial roots...
DEBUG:root:Using Groebner basis method to find roots...
DEBUG:root:Sequence length: 10, Groebner basis length: 1
DEBUG:root:Sequence length: 9, Groebner basis length: 1
DEBUG:root:Sequence length: 8, Groebner basis length: 1
DEBUG:root:Sequence length: 7, Groebner basis length: 2
DEBUG:root:Found Groebner basis with length 2, trying to find roots...
Found p = 7866790440964395011005623971351568677139336343167390105188826934257986271072664643571727955882500173182140478082778193338086048035817634545367411924942763 and q = 11227048386374621771175649743442169526805922745751610531569607663416378302561807690656370394330458335919244239976798600743588701676542461805061598571009923

Die Parameter m und t im Ausgabeprotokoll verdienen besondere Aufmerksamkeit. Diese Parameter werden in vielen gitterbasierten (small roots) Algorithmen verwendet, um die Gittergröße abzustimmen. Konzeptionell repräsentieren m (manchmal auch k genannt) und t die Anzahl der „Shifts“, die im Gitter verwendet werden, was ungefähr der Anzahl der Zeilen entspricht oder proportional zu ihr ist. Daher erhöht eine Vergrößerung von m und t die Größe des Gitters, was wiederum die Zeit erhöht, die für die Gitterreduktion (derzeit mit LLL) benötigt wird. Sind m und t hingegen zu niedrig, kann die Gitterreduktion unter Umständen keine geeigneten Vektoren liefern, wodurch die für die Reduktion aufgewendete Zeit verschwendet wird. Es handelt sich also um einen Kompromiss.

In der aktuellen Version des Projekts muss m immer vom Benutzer angegeben werden (der Standardwert ist auf 1 gesetzt). t kann in manchen Fällen basierend auf der spezifischen Small-Roots-Methode berechnet werden, die der Angriff verwendet. Es kann jedoch weiterhin vom Benutzer angepasst werden. Im Allgemeinen gibt es zwei Möglichkeiten, diese Art von Parametern zu verwenden:

  • Eine Schleife implementieren, die bei m = 1 beginnt, bis eine Antwort gefunden wird (Beispiel unten). Dieser Ansatz ist einfach, birgt jedoch das Risiko, Zeit mit aussichtslosen Berechnungen zu verschwenden, wenn die Gitter zu klein sind.``` m = 1 while True: res = attack(..., m=m) if res is not None: # The attack succeeded! break m += 1
* Implementieren Sie eine Debug-Version des Angriffs, den Sie verwenden möchten (mit bekannten Ergebnissen), und bestimmen Sie den `m`-Wert, der zu guten Gittervektoren führt. Rufen Sie dann die Angriffsmethode direkt mit dem korrekten `m`-Wert auf.

## Implementierte Angriffe
### Approximativer gemeinsamer Teiler
* [x] [Multivariater Polynomangriff](https://github.com/jvdsn/crypto-attacks/blob/master/attacks/acd/mp.py) [^acd_mp]
* [x] [Orthogonal-basierter Angriff](https://github.com/jvdsn/crypto-attacks/blob/master/attacks/acd/ol.py) [^acd_ol]
* [x] [Angriff durch simultane diophantische Approximation](https://github.com/jvdsn/crypto-attacks/blob/master/attacks/acd/sda.py) [^acd_sda]

### CBC
* [x] [Bit-Flipping-Angriff](https://github.com/jvdsn/crypto-attacks/blob/master/attacks/cbc/bit_flipping.py)
* [x] [IV-Wiederherstellungsangriff](https://github.com/jvdsn/crypto-attacks/blob/master/attacks/cbc/iv_recovery.py)
* [x] [Padding-Orakel-Angriff](https://github.com/jvdsn/crypto-attacks/blob/master/attacks/cbc/padding_oracle.py)
Tool herunterladen