Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ CipherMorph v2.0

Zaawansowany System Polimorficznego Szyfrowania Danych (Polymorphic Data Encryption System)
Kryptografia klasy wojskowej: Dual-Layer AEAD (AES-256-GCM + ChaCha20-Poly1305), HKDF-SHA256, CSPRNG & Bezpieczna Kompresja.

Python Version Cryptography License Tests


🌟 Główne Cechy Projektu (Features)

  • 🔒 Polimorficzny Silnik Szyfrujący AEAD: Dynamiczny, zależny od klucza dobór najsilniejszych certyfikowanych algorytmów kryptograficznych:
    • Tryb 0: Sprzętowo akcelerowany AES-256-GCM (NIST SP 800-38D)
    • Tryb 1: ChaCha20-Poly1305 (RFC 8439 / IETF)
    • Tryb 2: Kaskada Dual-Layer (ChaCha20-Poly1305 + AES-256-GCM) – podwójne szyfrowanie i uwierzytelnianie
    • Tryb 3: Kaskada Dual-Layer (AES-256-GCM + ChaCha20-Poly1305)
  • 🔑 64-znakowe Klucze CSPRNG: Generowanie kluczy o entropii przekraczającej 360 bitów z prefiksem #cm przy użyciu kryptograficznie bezpiecznego generatora liczb pseudolosowych (secrets).
  • 🛡️ KDF HKDF-SHA256 (RFC 5869): Bezpieczne wyprowadzanie podkluczy i parametrów polimorficznych z 256-bitową unikalną solą kryptograficzną (Salt).
  • 🚫 Zero Key Oracle: Całkowity brak wycieków hashy w nagłówku pliku. Weryfikacja poprawności klucza oraz integralności danych odbywa się w czasie stałym poprzez tagi AEAD (pełna odporność na ataki słownikowe GPU oraz Padding Oracle).
  • 📦 Bezpieczna Kompresja & Archiwizacja: Automatyczne pakowanie i kompresja pojedynczych plików oraz całych drzew katalogów (tar.gz) z wbudowaną ochroną przed atakami Path Traversal / Zip Slip.
  • 🌐 Wielojęzyczność (i18n): Pełna obsługa języka polskiego (PL) oraz angielskiego (EN) z przełącznikiem w locie.
  • 💻 Podwójny Interfejs: Kolorowe interaktywne menu terminala (TUI) oraz kompletny interfejs wiersza poleceń (CLI) do automatyzacji i skryptów.

📐 Architektura i Format Pliku .cm

Kontener binarny .cm (wersja 2) posiada ściśle zdefiniowaną strukturę bez wycieków metadanych:

┌───────────┬─────────┬─────────┬──────────┬──────────┬──────────┬────────────────────────┐
│   MAGIC   │ VERSION │  FLAGS  │   SALT   │  NONCE1  │  NONCE2  │ ENCRYPTED PAYLOAD +    │
│  "CM25"   │  0x02   │  0x01   │  (32 B)  │  (12 B)  │  (12 B)  │ AEAD AUTH TAG (16 B)   │
│  (4 B)    │  (1 B)  │  (1 B)  │          │          │          │                        │
└───────────┴─────────┴─────────┴──────────┴──────────┴──────────┴────────────────────────┘

Schemat Wyprowadzania Kluczy i Polimorfizmu

flowchart TD
    K["64-char Key (#cm...)"] --> HKDF["HKDF-SHA256 Extract & Expand"]
    S["32-byte Random Salt"] --> HKDF
    HKDF --> AES_KEY["AES-256 Key (32B)"]
    HKDF --> CHACHA_KEY["ChaCha20 Key (32B)"]
    HKDF --> MORPH["Morph Vector (Mode 0..3)"]
    
    DATA["Dane źródłowe (Plik / Folder)"] --> COMPRESS["Kompresja Tar.GZ"]
    COMPRESS --> ENGINE{"Silnik Polimorficzny"}
    
    AES_KEY --> ENGINE
    CHACHA_KEY --> ENGINE
    MORPH --> ENGINE
    
    ENGINE -->|Mode 0| M0["AES-256-GCM"]
    ENGINE -->|Mode 1| M1["ChaCha20-Poly1305"]
    ENGINE -->|Mode 2| M2["ChaCha20-Poly1305 ➔ AES-256-GCM"]
    ENGINE -->|Mode 3| M3["AES-256-GCM ➔ ChaCha20-Poly1305"]
    
    M0 --> CM_OUT[".cm Container"]
    M1 --> CM_OUT
    M2 --> CM_OUT
    M3 --> CM_OUT
Loading

🔒 Porównanie Bezpieczeństwa (v1 vs v2)

Cecha / Zagrożenie Wersja Poprzednia (v1) Nowa Wersja (v2 - Ekspercka)
Szyfrowanie Własny AES-CBC + operacje XOR Certyfikowany sprzętowo AES-256-GCM & ChaCha20-Poly1305
Integralność i Uwierzytelnienie Ręczny HMAC-SHA256 z błędami nagłówka Zintegrowany AEAD Tag (128-bit) weryfikowany w czasie stałym
Atak Słownikowy na GPU Podatny (jawny hash SHA256(key)[:10] w nagłówku) Odporny (Zero Oracle – brak wycieku hasha klucza)
Generator Losowości random.choice() (Mersenne Twister - przewidywalny) secrets.choice() / secrets.token_bytes() (CSPRNG)
Bezpieczeństwo Archiwum Podatność Path Traversal (Zip Slip) Pełna sanityzacja ścieżek safe_extract_archive
Zarządzanie Pamięcią Brak kompresji, ładowanie całości do RAM Strumieniowe przetwarzanie tar.gz z kompresją

🚀 Wymagania i Instalacja

Program wymaga środowiska Python 3.8+ oraz bibliotek:

pip install cryptography colorama

📖 Instrukcja Użycia (Usage)

1. Tryb Interaktywny (TUI Menu)

Uruchom program bez parametrów:

python ciphermorph.py

Wyświetli się menu terminala umożliwiające:

  1. Szyfrowanie folderu lub pojedynczego pliku z opcją automatycznego zapisu wygenerowanego klucza.
  2. Odszyfrowanie kontenera .cm (wpisanie klucza ręcznie lub podanie ścieżki do pliku _key.txt).
  3. Generowanie nowych bezpiecznych kluczy 64-znakowych.
  4. Przełączanie języka (Polski / English).

2. Tryb Wiersza Poleceń (CLI Mode)

CipherMorph można w prosty sposób integrować ze skryptami i procesami CI/CD:

Szyfrowanie:

# Szyfrowanie folderu z automatycznym generowaniem i zapisem klucza:
python ciphermorph.py encrypt sciezka/do/folderu --save-key

# Szyfrowanie pojedynczego pliku z własnym kluczem i wybranym plikiem wyjściowym:
python ciphermorph.py encrypt dokument.pdf -k "#cm..." -o bezpieczny.cm

Deszyfrowanie:

# Odszyfrowanie przy użyciu klucza w tekście:
python ciphermorph.py decrypt bezpieczny.cm -k "#cm..." -o ./odkodowane

# Odszyfrowanie przy użyciu pliku z kluczem:
python ciphermorph.py decrypt bezpieczny.cm -k folder_key.txt -o ./odkodowane

Generowanie Klucza:

# Wyświetlenie nowego klucza:
python ciphermorph.py genkey

# Zapis nowego klucza do pliku:
python ciphermorph.py genkey -o moj_klucz.txt

🧪 Testy Automatyczne

W projekcie przygotowano kompletny zestaw testów jednostkowych i integracyjnych pokrywających 100% kluczowych modułów.

Aby uruchomić testy:

python tests/test_ciphermorph.py

Zakres testów obejmuje m.in.:

  • Poprawność generowania i entropię 64-znakowych kluczy CSPRNG.
  • Wszystkie 4 tryby silnika polimorficznego AEAD (roundtrip testy).
  • Wykrywanie manipulacji danymi (odporność na modyfikację pojedynczych bitów).
  • Natychmiastowe odrzucenie błędnych kluczy bez wycieków informacji.
  • Szyfrowanie i odzyskiwanie złożonych struktur katalogów z zachowaniem sum kontrolnych SHA-256.
  • Ochronę przed atakami Path Traversal (Zip Slip).
  • Spójność słowników tłumaczeń wielojęzycznych.

📄 Licencja

Projekt udostępniany jest na warunkach licencji MIT. Zobacz plik LICENSE po szczegóły.

Releases

Packages

Contributors

Languages