Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    94

    sicurezza reti : crittografia a chiave pubblica RSA

    Ciao,
    volevo porvi una domanda teorica sulla sicurezza delle reti (non so se è la sezione adatta per postare questo tipo di domande , ma io ci provo ugualmente ) .

    Il mio dubbio riguarda l'algoritmo RSA :

    ho letto la guida su html.it http://www.html.it/pag/16477/la-crit...ubblica-e-rsa/ , ma mi rimane un dubbio.

    Ok ho capito come vengono calcolate le due chiavi privata e pubblica, ma non capisco come fa il ricevitore ad avere la chiave privata che decodifichi il messaggio.
    Come glieli passa la sorgente al ricevitore la chiave privata ?
    E non c'è il rischio che questa venga intercettata ?

    C'è qualcosa che mi sfugge

    Grazie a tutti

  2. #2
    Moderatore di ADSL e connettività, Reti LAN e Wireless e VoIP L'avatar di fivendra
    Registrato dal
    Jun 2001
    residenza
    Treviso
    Messaggi
    23,939
    Se ho capito bene è perché chi codifica lo fa con la chiave pubblica fornita da chi riceverà il file che a suo volta utilizzerà la chiave privata in suo possesso per decodificare
    Fivendra - LTE Powered: @fivendra - Facebook

    Smartphone: Apple iPhone 6 Plus
    Tablet: Microsoft Surface Pro 3 Windows 10
    Piano Telefonico: TIM Tutto Compreso 1500 + 4G
    Piano Dati: ​TIM Internet 4G + Huawei 4G E589

  3. #3
    Esatto. Concettualmente la cosa funziona così:
    A ha una chiave pubblica (A_P) e una chiave privata (A_R); alla stessa maniera B (chiave pubblica B_P, chiave privata B_R).
    Tutto ciò che viene cifrato con una chiave pubblica può essere decifrato solo con la chiave privata, e viceversa.

    Per questo motivo, se A vuole scrivere un messaggio che solo B possa decodificare, cifrerà il messaggio con B_R, per cui soltanto B potrà leggerlo.

    All'atto pratico però questo presenta due problemi:
    1. gli algoritmi di crittografia asimmetrica sono piuttosto lenti per quantità di dati significative;
    2. la cifratura fatta in questa maniera garantisce la confidenzialità del messaggio (ovvero, che possa essere letto solo da B), ma non l'autenticità (ovvero, B non può sapere con certezza che sia stato A a scrivergli, dato che chiunque può avere la chiave pubblica di B).

    Per questo motivo, normalmente la questione si complica leggermente:
    1. il messaggio in realtà viene cifrato con un algoritmo simmetrico (ovvero, che richiede la stessa chiave per essere cifrato e decifrato), molto più veloce per cifrare quantità di dati consistenti; la chiave di cifratura viene generata in maniera casuale, ed è solo questa ad essere cifrata a sua volta con la chiave pubblica di B.
    2. per garantire l'autenticità del mittente, A, prima di cifrare il messaggio, ne genera un hash, ovvero una specie di "impronta digitale" del messaggio; le funzioni di hash sono create in maniera tale da essere molto sensibili a qualunque cambiamento nell'input, per cui anche un'alterazione piccola del messaggio cambia completamente il risultato dell'hashing. L'hash quindi viene cifrato con la chiave privata di A, e aggiunto al messaggio.

    In questo modo, alla ricezione del messaggio B decodifica la chiave di cifratura con la sua chiave privata, la usa per decodificare il messaggio e quindi ne ri-effettua l'hashing; intanto decodifica l'hash che gli è stato inviato con la chiave pubblica di A, e se i due hash combaciano significa che il messaggio è arrivato esattamente nello stato in cui A l'ha creato.

    L'altro problema fondamentale che si pone è sulla correttezza delle chiavi pubbliche: se B deve parlare con A per la prima volta e c'è un malintenzionato di mezzo che può alterare le comunicazioni, questo può fornire ad entrambi la sua chiave pubblica e intercettare/modificare tranquillamente tutto il traffico. A questo problema la soluzione centralizzata è l'uso dei certificati (le chiavi pubbliche sono garantite da una CA di cui tutti si fidano a priori, sistema su cui si basa ad esempio HTTPs) o dalla web of trust (ogni nodo nella rete dà fiducia o meno alle altre chiavi in base ad una verifica diretta, e al momento di ricevere una chiave pubblica di qualcuno "chiedi" a quelli di cui già ti fidi se hanno qualche conferma diretta o indiretta della veridicità della chiave in questione).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.