Questo programma Python è sicuro?

-5

Nota: sono nuovo delle pratiche di sicurezza delle informazioni, quindi sentitevi liberi di indicare qualsiasi cosa potrei fare meglio.

Situazione: Attualmente sto creando un sistema di crittografia per la messaggistica istantanea e voglio sapere se quello che sto facendo è buono.

Sto costruendo una variante di subspedizione polialfabetica:

  • prendi un collegamento, quindi ottieni tutto il testo sulla pagina web
  • crea un dict char -> list of positions dal testo della pagina web
  • usa il dict per mappare ogni carattere del messaggio in una posizione selezionata (a caso) nell'elenco
  • codifica la posizione in esadecimale
  • opzionalmente comprime il risultato se si tratta di un file crittografato

Mi restituisce cose del genere: 5118 35b0 60ec 3e19 6aa6 6bfb 32db 6cd7 4a2d per una stringa di 9 caratteri.

C'è il codice completo del modulo Python e un piccolo strumento per testare tutto il modulo: link

Domande:

  • È sicuro e possibile creare una pagina Web per generare una chiave pubblica?
    • Alice vuole parlare con Bob, ad esempio, così Alice genera un hash con una password e alcuni caratteri casuali memorizzati nel suo computer (o altrove)
    • Quindi Bob ottiene l'hash e genera il proprio con lo stesso metodo
    • Bob inserisce entrambi gli hash nella pagina web e poi fornisce la chiave private
    • Quindi la pagina web restituisce un link che reindirizza alla chiave private se le informazioni fornite dai parametri php generano uno dei due hash.
  • C'è un modo per prevenire gli attacchi di sniffing?

Grazie per il tuo aiuto.

    
posta Mathix420 28.05.2018 - 19:51
fonte

2 risposte

7

Risposta breve: No, non è sicuro .

Qualunque cosa basata su cifrari di sostituzione sarà vulnerabile a analisi di frequenza . Non ho completamente capito cosa intendi con questo:

[keygen:] build a dict char -> list of positions from the webpage's text

[encryption:] use the dict to map every char of the message to one position picked (randomly) in the list

ma ho la sensazione che si perderanno (almeno) la distribuzione / frequenza dei caratteri nel messaggio. (Come minimo) questo mi dirà in quale lingua è stato scritto il testo e probabilmente qualcosa sul contenuto.

Penso che sia fantastico che tu stia esplorando la crittografia: continua a imparare! Ma se hai intenzione di metterlo in qualsiasi software al di là dei programmi giocattolo per il tuo apprendimento, usa la crittografia standard come AES e RSA.

    
risposta data 28.05.2018 - 20:02
fonte
0

Un cifrario di sostituzione è il codice di crittografia di base in modo che possa essere facilmente rilevato da un attacco di frequenza (scelta rapida) di una lettera o eliminazione chiave o (brutta scelta) attacco bruteforce, a seconda della lingua che si usa.

Inglese 26! fattoriale

Quindi RSA, DES, AES sono buone scelte per un sistema di crittografia da utilizzare. Basato sugli attacchi fatti su DES & AES, richiede elevate risorse computazionali per iniziare un attacco su questi algoritmi. Non possono essere attaccati come attacchi classici come l'analisi matematica e la forza bruta.

    
risposta data 29.05.2018 - 01:51
fonte

Leggi altre domande sui tag