SIKS – Vježba 3 – kriptografski algoritmi (OpenSSL) – simetrična kriptografija

Simetrična kriptografija:

Generiranje simetričnog ključa:

  • Generiranje simetričnog ključa: Koristeći OpenSSL, generirajte simetrični ključ pomoću AES algoritma s duljinom ključa od 256 bita.
  • Enkripcija teksta: Koristeći prethodno generirani ključ, enkriptirajte tekstualnu datoteku plaintext.txt koristeći AES algoritam u načinu CBC (Cipher Block Chaining).
  • Dekripcija teksta: Dekriptirajte enkriptiranu datoteku koristeći isti ključ i isti algoritam.
openssl rand -base64 32 > symmetric_key.txt

Enkripcija teksta:

Prvo napravite datoteku plaintext.txt i u nju upišite lozinku po izboru. Zatim tu datoteku enkriptirajte.

openssl enc -aes-256-cbc -in plaintext.txt -out encrypted_text.txt -pass file:symmetric_key.txt

Dekripcija teksta:

openssl enc -d -aes-256-cbc -in encrypted_text.txt -out decrypted_text.txt -pass file:symmetric_key.txt

Cilj Vježbe:

  1. Generirati i koristiti simetrični ključ za enkripciju i dekripciju podataka koristeći OpenSSL.
  2. Slanje enkriptiranih podataka preko mreže (npr., korištenjem jednostavnog TCP veze ili HTTP poslužitelja i klijenta).
  3. Koristiti Wireshark za analizu mrežnog prometa i promatranje enkriptiranih podataka kako se prenose.

Koraci:

  1. Generiranje Ključa i Enkripcija Podataka:
    • Slijedite prethodno opisane korake za generiranje simetričnog ključa s OpenSSL-om i enkriptirajte odabrani tekst ili datoteku.
  2. Priprema za Slanje Podataka:
    • Postavljanje jednostavnog poslužitelja i klijenta: Možete koristiti skripte ili alate koji omogućavaju slanje i primanje podataka preko mreže. Python, na primjer, može biti odličan alat za kreiranje jednostavnih TCP klijent/poslužitelj aplikacija.
  3. Snimanje Prometa s Wiresharkom:
    • Prije nego što počnete slati podatke, pokrenite Wireshark i počnite snimati promet na mrežnom sučelju koje ćete koristiti za testiranje.
    • Provjerite imate li odgovarajuće filtre postavljene ako želite usmjeriti pažnju na specifične pakete.
  4. Slanje Enkriptiranih Podataka
    • Koristite vašeg klijenta za slanje enkriptiranih podataka poslužitelju. Ovisno o setupu, ovo može uključivati upotrebu naredbenog retka, skriptu ili neki drugi alat.
  5. Analiza s Wiresharkom
    • Kada podaci budu poslani, koristite Wireshark za pregled paketa. Trebali biste moći vidjeti enkriptirane podatke kako se prenose, ali ne i njihov sadržaj zbog enkripcije.
    • Analizirajte protokole koji se koriste (npr., TCP, HTTP ako koristite web poslužitelj), kao i bilo koje druge informacije dostupne u paketima.
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 9999))
server.listen(1)
print("Server listening on port 9999")

conn, addr = server.accept()
with conn:
    print('Connected by', addr)
    while True:
        data = conn.recv(1024)
        if not data:
            break
        print("Received data")
import socket

# Definirajte putanju do datoteke koju želite poslati
file_path = 'plaintext.txt'

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect(('localhost', 9999))  # Povezivanje s poslužiteljem
    with open(file_path, "rb") as file:  # Otvorite datoteku u binarnom načinu čitanja
        s.sendall(file.read())  # Pošaljite sadržaj datoteke
        print("Datoteka plaintext.txt poslana.")
import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect(('localhost', 9999))
    with open("encrypted_data.bin", "rb") as file:
        s.sendall(file.read())
        print("Data sent")

Zaključak:
Ova vježba omogućava praktično učenje o kriptografiji i mrežnoj sigurnosti, omogućavajući vam da vidite kako enkripcija štiti podatke tijekom prijenosa. Iako su podaci enkriptirani i teoretski sigurni, Wireshark pruža uvid u to kako se sigurnosni protokoli implementiraju i funkcioniraju na mreži, uključujući sve od protokola do metoda enkripcije.