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:
- Generirati i koristiti simetrični ključ za enkripciju i dekripciju podataka koristeći OpenSSL.
- Slanje enkriptiranih podataka preko mreže (npr., korištenjem jednostavnog TCP veze ili HTTP poslužitelja i klijenta).
- Koristiti Wireshark za analizu mrežnog prometa i promatranje enkriptiranih podataka kako se prenose.
Koraci:
- 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.
- 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.
- 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.
- 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.
- 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.