Domanda

La gente,

Abbiamo una sfida tecnica interessante. Come scrivere un file di controllo protetto che tiene traccia dell'utilizzo di un software in modo diritti di licenza possono essere basate su utilizzo così da rendere più conveniente per coloro che lo usano di meno.

In particolare, TickZoom vende una piattaforma di trading generazione di alfa per gli hedge fund che attualmente costa $ 2,000 / mese per licenza incluso il supporto (aumenterà presto per più del doppio). Questo va bene per le istituzioni, ma troppo costoso per gli individui. Gli individui spesso chiedono per un prezzo inferiore in cambio di una% degli utili realizzati utilizzando il software fino a che non possono permettersi di pagare le tasse fisse.

Ci piace che la proposta. Ma abbiamo bisogno di un modo affidabile per verificare il risultato in realtà generato sulla piattaforma e un modo per impedire agli utenti di "gioco" che eliminando o sovrascrivere il file di controllo segnalazione in tal modo guadagni inferiori rispetto effettivo.

Questa applicazione è scritta in C # e questa porzione del sistema è offuscato almeno rendendo difficile decifrare il codice.

L'altro requisito è scrivere per il file per ogni commercio che si verifica in modo da consentire una più approfondita revisione nel caso in cui l'utente si sente v'è una certa discrepanza nei quota totale. In questo modo, i singoli profitti commerciali possono essere confrontati con le dichiarazioni mediatore.

E ', naturalmente, presuppone che il file verrà crittografato.

Ma tutte le idee su come rendere "a prova di manomissione"? Soprattutto nei confronti di un semplice tentativo di eliminazione?

La mia prima risposta è quella di rendere il software richiede sempre un file di controllo preesistente o si rifiuterà di eseguire.

Poi, quando consegniamo il software ottiene confezionato con un file "vuoto" di revisione, ma che, in realtà, ha una sorta di verifica a prova di manomissione.

I prossimi utenti tecnica evidenti potrebbe tentare di "manomettere" con il file sarebbe per qualcuno per il backup semplice file originale "vuoto" e poi usarlo per sovrascrivere il file di controllo in seguito ingannare così il sistema a pensare che si trattava di un nuovo inizio.

Forse che può essere risolto con incluso una sorta di "ultimo aggiornamento timestamp" e un tempo di scadenza.

Inoltre, totalmente diverse idee di soluzione sono i benvenuti. Potremmo essere costretti in questo caso per aggiungere un capacità di "telefono di casa" in modo che i commerci vengono registrati al nostro server centrale. Ma che sembra svantaggioso e potenzialmente aggiunge un altro punto di errore in un'applicazione mission critical. Generalmente notevolmente antipatia caratteristiche "telefono casa" con ovvie buone ragioni.

Cordiali saluti, Waynek

È stato utile?

Soluzione

Ecco un pensiero - ogni volta che l'utente esce da una sessione con il software, generare un hash basato sul registro di controllo. Crittografare l'hash, quindi scrivere fuori per un altro file, forse nascosto tra i binari, o al Registro di sistema.

Quando l'utente apre l'applicazione successiva, leggere il file di log, ri-generare l'hash e vedere se corrisponde al valore registrato. In caso contrario, chiudere l'applicazione con un "file di controllo manomesso" messaggio di errore.

Non del tutto infallibile, ma sarebbe piuttosto solido.

Inoltre, check out questa domanda

Altri suggerimenti

La dichiarazione del problema è il seguente:

  • non ci fidiamo del cliente; il cliente potrebbe essere ostile.
  • vogliamo che il cliente per inviarci i dati che possiamo fidarci.

Non v'è alcuna soluzione a questo problema. Si potrebbe anche dire "voglio trovare due ragazzi, uno di nome Bob, uno di nome Bill, in modo tale che Bob è un piede più alto di Bill e Bill è un piede più alto di Bob". Tu non stai andando a trovare due ragazzi con la proprietà.

È assolutamente positivamente Non puoi fidarti di tutto ciò che viene da una macchina che non si possiede che potrebbe essere di proprietà di un cliente ostile. Il mio consiglio è di non perdere tempo prezioso cercando di risolvere un problema impossibile; trascorrere il tempo di rendere il vostro server, che si possiede e si fidano, robusta contro i clienti ostili.

No, non credo che ci sia qualcosa che si può fare altro che segnalare tutti i guadagni in tempo reale di nuovo ai server, ma anche questo crei problemi.

- Modifica:

Sei uniche opzioni, come la vedo io, sono:

  • Convertire il sistema web-based (o almeno thin-client), rendendo in tal modo tutte le operazioni sul server

Chiaramente, questo è probabilmente abbastanza poco pratico, se si sta già sviluppato un sistema su base locale intero

  • pensare a qualche schema elaborato che è "duro" da rompere e spero che la gente non si rompono è

E combinare all'interno di questo metodo, una sorta di profilazione che mostra se i negozi stanno guadagnando X, e improvvisamente X-sigificantAmount, è possibile determinare che non sono ancora redditizie più, quindi probabilmente barare il sistema (o uscire del business :) Ma questo rasenta piuttosto una violazione della privacy, e non può essere del tutto appropriata.

In pratica, penso che è necessario pesare i rischi contro la possibile profitto, o trovare un altro angolo su come vendere a queste persone (cioè lasciare che solo l'interfaccia / applicazione stessa gestire X nel totale dei fondi, se si va oltre , chiederà per la versione pro, o qualsiasi altra cosa).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top