È possibile crittografare le comunicazioni senza un server esterno?

2

Ad esempio, è possibile connettersi a un server Web che è solo HTTP, assolutamente privo di supporto per HTTPS, tuttavia il client può comunque connettersi al sito senza preoccupazioni di attacchi MITM, senza un server esterno, o avere nulla unico sul server web?

    
posta Rob Gates 09.06.2017 - 03:47
fonte

4 risposte

2

È difficile dire esattamente cosa stai chiedendo; puoi inviare messaggi segreti e sicuri, ma non "siti standard". È possibile utilizzare la crittografia end-to-end senza https. Questo è nello stesso modo in cui puoi utilizzare E2E con cartoline o trasmissioni radio o carta e matita usando un semplice strumento che ho creato

Mentre penso che PHP e JS possano parlare tra loro (con la cooperazione precedente) in modo sicuro, non sarà possibile pubblicare una pagina normale utilizzando le normali routine del browser.

Sarebbe possibile creare un client abilitato per JS in grado di spostare in sicurezza i dati avanti e indietro, come ho usato quando ho creato nadachat.com. Quello usa un pubkey per spedire una chiave simmetrica di sola sessione. Oltre a questo sistema è possibile creare l'autenticazione e un'interfaccia utente simile a quella del web, ma non utilizzare standard come link, immagini, ecc.

Sarà molto pesante da parte tua implementare un tale sistema. La parte di crittografia è piuttosto semplice, sta facendo in modo che stai parlando con il server giusto (autenticazione / verifica) senza una certificazione che sarà più difficile. Esistono routine di risposta alle sfide che possono gestirle, ma, ancora una volta, stai andando veramente contro la grana e rischi di implementare un'implementazione imperfetta.

Non caricare la tua crittografia.

    
risposta data 09.06.2017 - 10:43
fonte
1

In assenza di software su entrambe le estremità della connessione, no. HTTPS è il protocollo progettato per colmare tale lacuna in HTTP.

Se per qualche motivo hai bisogno di comunicare in modo sicuro ma HTTP è la tua unica scelta, (forse il motivo per cui stai chiedendo c'è un firewall che blocca tutto il traffico non HTTP) considera Tunneling HTTP software. Un tunnel HTTP richiede un server proxy esterno e un componente software lato client. Questi tunnel di protocollo di basso livello funzionano emulando dispositivi di rete sul sistema operativo; quindi incapsulano i pacchetti IP all'interno del protocollo HTTP di livello superiore che viene scambiato con il proxy. Quindi esegui il normale software VPN attraverso il tunnel risultante e il tuo proxy inoltra i pacchetti per te, permettendoti di comunicare in modo sicuro attraverso il tuo normale provider VPN attraverso un tunnel HTTP.

    
risposta data 09.06.2017 - 05:54
fonte
1

Per essere protetti dagli attacchi MITM, il flusso di dati deve essere crittografato. Può essere crittografato a 3 livelli:

  • il livello TCP. Ciò significa che, invece di utilizzare un socket raw, si utilizza un socket crittografato. SSL / TLS nel modo standard corrente per quello e nel caso di HTTP, è chiamato HTTPS. Potresti immaginare un meccanismo di crittografia alternativo per questo, ma quando arriviamo alla sicurezza, il diavolo si nasconde nei dettagli, quindi il mio consiglio è: non farlo a meno che tu non sia un esperto in sicurezza e crittografia.
  • il livello di applicazione (superiore). Ciò significa che si utilizza un canale non crittografato, ma si scambiano solo messaggi crittografati. Ad esempio, questo è esattamente ciò che accade quando si scambiano messaggi crittografati S / MIME via mail. Ma non conosco alcun supporto diretto per questo per HTTP
  • il livello IP (inferiore). A condizione che le due estremità (e qualsiasi router in arrivo) la supportino, puoi utilizzare un canale crittografato IPsec . Poiché la crittografia è a un livello inferiore rispetto a TCP, puoi tranquillamente utilizzare HTTP su di essa.

Una VPN (o qualsiasi tunnel crittografato, come ssh) direttamente sul server è in realtà una variante di quanto sopra: si imposta un canale crittografato dal client al server e si può passare tranquillamente HTTP su di esso.

    
risposta data 09.06.2017 - 15:05
fonte
0

Non so se questo è ciò che stai cercando, ma qui va. Avvertenze:

Il fatto che il tuo IP collegato al sito Web e alcune pagine visitate fosse ancora noto. Tuttavia, il contenuto di qualsiasi dato pubblicato non lo sarebbe.

Diciamo che vuoi pubblicare un dato sensibile su un sito web pubblico.

Potresti usare un'estensione per il browser, chiameremo EncryptMe il mio falso estensore.

Dì che vai a una pagina del forum. E inserisci Installa l'estensione Encrypt Me @ whatever.com. Ora l'app EncryptMe genera una chiave casuale o ottiene da un server EncryptMe possibile sul cloud computing come Amazon, Google, Microsoft.

Ora hai un blocco di dati che sembra rumore casuale. Il suo binario quindi non puoi postarlo. Problema risolto uuencode.

Alle persone normali che leggono il tuo post, si legge.

Please install the EncryptMe extension
IXI:2>E!1XI:2XI:25N*6DE?BEI+BEI(FXI:2XI:23'GBEI)6XI:2WXH'
'

Quindi condividere la chiave di crittografia tramite e-mail, stampa o ecc. con persone autorizzate. L'estensione EncryptMe potrebbe anche fornire un meccanismo per la condivisione della chiave di crittografia.

Quindi in questo esempio il browser web di invio e ricezione avrà entrambi bisogno di EncryptMe installato, ma il server web non ha bisogno di nulla. EncryptMe userebbe / dev / random o l'equivalente di Microsoft, MAC per una chiave di crittografia. Utilizzando la stessa tecnologia chiave pubblica / privata.

  1. Chiave privata / dev / random
  2. Chiave pubblica generata in base alla chiave privata

Puoi pubblicare la chiave pubblica ovunque tu voglia o no. Forse l'app EncryptMe ha un database pubblico a cui gli utenti possono fare riferimento, ma tu sceglieresti se la tua chiave pubblica fosse disponibile o meno.

Se hai il controllo del server web, ma non puoi attivare la crittografia perché è un dispositivo incorporato su un chip ROM o qualcosa del genere potresti fare lo stesso. Faresti index.htm avere letteralmente grandi blocchi di uuencodings che hai codificato sul tuo PC prima di pubblicarlo.

Il browser web dei clienti che raggiunge il tuo sito web vedrebbe:

Please install EncryptMe browser extension <FireFox link>, <IE link>, <Safria link>

MXI:2>E!1XI:2XI:25N*6DE?BEI+BEI(FXI:2XI:23'GBEI)6XI:2WXKBEI)X
MXI:20DT-"EKBEI+BEI+BEI+OO[WBEI+BEI(G6W;BEI)T2B;BEI(GXI:2.>*6
MDN*6DN*6DN*6DN*6DD_BEI)NPYCBEI)5XI:20N*6DN*6DN*6DCOBEI+BEI+B
MEI)4XI:25N*6DC%(XI:2XI:2,G3BEI+BEI+BEI(OXI:24'545%GBEI+BEI+B
MEI+BEI+BEI)1XI:226QJXI:2;V3BEI+BEI(_XI:2XI:2XI:2XI:2XI:2;>*6
MDEY'1#CBEI)3*>*6DN*6DN*6DG3BEI+BEI(DXI:2*^*6DG-H9^*6DE[BEI)8
M4RSBEI+BEI),1#+BEI+BEI)]XI:23N*6DFCBEI)6XI:2XI:2XI:2;.*6DE7B
MEI(^XI:24N*6DN*6DCOBEI+BEI+BEI+BEI(^2.*6DN*6DBCBEI+BEI)DXI:2
MXI:2XI:2XI:2XI:2XI:2.$'BEI+:C6?BEI)>XI:2:"=<XI:2XI:2?.*6DBS+
M@TXU9N*6DD_BEI([2UOBEI+BEI+BEI+BEI)W+^*6DG%+XI:2#0KBEI)+XI:2
M*U!U5%194'545%EF3N*6DN*6DN*6DN*6DN*6DN*6DG/$DN*6DN*6DN*6DN*6
MDDLMXI:2*>*6DN*6DN*6DF/BEI+BEI)XXI:2>%7BEI+BEI+BEI+BEI)\/B+B
MEI+<C^*6DN*6DB[BEI)VXI:2+WSBEI+BEI)59FU-1U;BEI(YXI:2WH+BEI+B
MEI)+XI:2*W0IXI:2*.*6DN*6DN*6DG;BEI+BEI(UXI:2XI:24>*6DN*6DCI=
M->*6DN*6DN*6DFAKXI:2XI:2XI:21N*6DD(MXI:2XI:2=D=ZXI:2(7(@XI:2
M0N*6DN*6DGMC(>*6DN*6DEGBEI+BEI(-"B'@("'@("'@("'@("'@("'@("'@
    
risposta data 09.06.2017 - 16:54
fonte

Leggi altre domande sui tag