Quali sono le migliori pratiche per fidarsi delle origini di connessione nel software open source?

3

Abbastanza conciso, ma elaborerò con un esempio:

Diciamo che ho una semplice app scritta in C # e voglio sapere quante persone al giorno aprono l'app. la soluzione più semplice sarebbe semplicemente avere una funzione che inviasse il timestamp corrente per dire un file php su un server remoto. quel server quindi aggrega i timestamp in un database che può quindi essere facilmente interrogato.

Tuttavia, se il software è open source è una cosa banale per chiunque sia in grado di copiare essenzialmente incolla il tuo lavoro e inviare timestamp falsi ripetutamente, quindi buttare via i tuoi numeri.

    
posta Marcus Gosselin 19.05.2016 - 05:41
fonte

2 risposte

3

Il tuo problema principale è identificare chi sono i tuoi "veri" clienti. Poiché il codice è aperto, è facile per chiunque emulare un client. Quindi, come puoi farlo?

È possibile utilizzare la crittografia asimmetrica. Poiché le chiavi non sono all'interno del codice, non è possibile che possano "emulare" quelle chiavi. Ogni server avrà le proprie chiavi. Se la crittografia è troppo importante per il client (e l'invio di informazioni non è così importante), allora puoi semplicemente usare una chiave condivisa (come una password), che verrà inviata sempre insieme alla richiesta (qualcosa come un cookie di sessione) .

In ogni caso, è ancora necessario sapere chi è chi attraverso una sorta di autorizzazione (ad esempio, la pagina di accesso). L'utente / pass sarà univoco per server, quindi puoi essere sicuro che chiunque scarichi le chiavi o la "password", siano clienti autorizzati.

Nel caso in cui il tuo sistema non abbia informazioni di accesso (più software generale) è più complicato (ed è quello che ritengo sia la tua vera domanda) ...

Bene, temo che non ci sia molto da fare. Forse è possibile archiviare alcune chiavi scaricate dal server durante l'installazione (è possibile assegnare a ciascun client una chiave prodotto specifica). Non sicuro al 100%, ma potrebbe essere d'aiuto.

L'analisi dei dati web non è sicura al 100%. Possono essere falsificati (solo google: 'come falsificare il traffico web'), ma le aziende fanno del loro meglio per identificare i clienti reali da quelli falsi con i propri algoritmi. Il vantaggio che hanno è che il loro codice non è aperto, quindi non si sa esattamente cosa stanno prendendo in considerazione.

Ho avuto una volta lo stesso dilemma di te. In opensource, ogni server ha una propria configurazione (che è privata), e puoi usarlo per tenere lontane le persone indesiderate e sapere tutto sul tuo servizio.

Se riesco a pensare a qualcos'altro, estenderò la mia risposta, ma questo è tutto da ora.

    
risposta data 19.05.2016 - 06:26
fonte
1

Quello che vuoi in effetti sapere che il contenuto di una richiesta è affidabile. Per questo è necessario affidarsi all'applicazione remota e per fare questo si dovrebbe in qualche modo verificare che l'applicazione sia esattamente la vostra applicazione. Questo è chiamato attestazione remota. Ma, sfortunatamente, questo è impossibile a meno che non blocchi tutto dall'inizio. Per questo è necessario essere in grado di verificare il processo di avvio, l'avvio del sistema, l'avvio dell'applicazione ecc. Tutto dovrebbe essere firmato e sarà necessario interagire con il sistema per controllare le firme. Così rimane rimane principalmente teoria tranne alcuni casi d'uso speciali (ad esempio, le console di gioco sono spesso bloccate pesantemente).

Nella vita reale devi solo essere consapevole che queste richieste possono essere simulate e utilizzare metodi comuni di statistica per disinfettare i dati. Questo è in realtà un problema che la maggior parte dei sondaggi ha, vale a dire che anche le persone si troveranno nelle indagini sulla vita reale.

    
risposta data 19.05.2016 - 06:27
fonte

Leggi altre domande sui tag