DRM: assicurati che un SDK sia utilizzato legalmente dal client

2

Siamo una startup IT che fornisce ad alcuni clienti un kit di sviluppo software, che può essere utilizzato dal cliente all'interno di un ambiente specifico, secondo alcuni termini e accordi legali. Soprattutto, il client potrebbe chiamare i servizi e i metodi pubblici di SDK dal proprio codice sorgente.

Ad esempio, gli accordi potrebbero richiedere che il client possa utilizzare l'SDK solo in UN ambiente (ad esempio in un'applicazione).

A questo punto, vorremmo monitorare l'SDK per garantire che il client rispetti questo vincolo e, se usa l'SDK in un ambiente per il quale non ha acquistato l'SDK, vogliamo essere in grado di bloccare l'accesso al SDK, quindi non poteva usarlo.

So che diverse aziende implementano tali funzionalità per i framework e l'SDK che forniscono, ma non sono riuscito a trovare nulla sul Web su come impostare un meccanismo del genere ...
Vorremmo utilizzare una soluzione standard, anche se è a pagamento, piuttosto che creare qualcosa da zero ...

Grazie infinite a chiunque ci possa illuminare !!!

Chiarimento / Aggiornamento Il nostro SDK non fornisce servizi Web, fornisce solo metodi locali che il client può chiamare dopo aver installato l'SDK.
In realtà c'è un solo metodo basato su richiesta http in SDK. È il punto di ingresso dell'SDK, un metodo chiamato setUp() che richiede essenzialmente due parametri: nome utente del client e password .
Quindi il cliente deve chiamare questo metodo, che controlla le sue credenziali tramite la richiesta http al nostro server. Se l'autenticazione ha esito positivo, il client può utilizzare i metodi locali dell'SDK, altrimenti non può.

Modifica Ho appena scoperto il concetto di chiave API , all'inizio pensavo che sarebbe stata una potenziale soluzione per questo problema, ma sembra che non si adatta al contesto del problema che sto cercando di risolvere, grazie a @Matthew.
Ora mi chiedo se una applicazione della licenza sarebbe una soluzione adeguata ?? In realtà sto pensando al modo in cui il team Aspose gestisce le licenze che danno ai loro clienti. Seguendo questo link, sembrano gestire i DRM piuttosto strettamente ...
E un'ultima cosa, qual è la differenza tra una licenza e una chiave del prodotto ? Conoscere i vantaggi e gli svantaggi di ciascuna di queste soluzioni potrebbe aiutarmi molto a scegliere il giusto sistema di sicurezza per la mia API.

    
posta programmersn 06.04.2017 - 22:22
fonte

2 risposte

6

È essenzialmente un problema legale: vuoi controllare ciò che è in esecuzione sul dispositivo di un cliente, il che significa che avrai bisogno della collaborazione del client.

Per un'azienda che fornisce un'API basata sul Web (ad esempio l'SDK esegue un qualche tipo di interfaccia con il servizio Web, possibilmente implementando una crittografia o un metodo di trasporto speciale), questo dipende dal monitoraggio del servizio, dalla ricerca di modelli insoliti . Puoi fatturare su base di richiesta (non importa da dove arrivano le richieste, ma se improvvisamente inizi ad usarne di più, ottieni più denaro). È possibile cercare le modifiche agli elementi chiave inviati (se all'improvviso si ottengono dati che riflettono sia gli host Windows che Linux, è possibile essere certi che il client stia utilizzando due copie su sistemi diversi e ne blocchi uno).

Nel tuo caso, però, in base alla domanda così com'è ora, non hai interazione con le singole richieste (interagisci una volta, quando inizializzano il framework, ma poi permetti l'uso attraverso un metodo). È come se il tuo SDK fosse un file immagine a cui è stato chiesto di usare il client in un solo posto. Se il cliente lo copia, non lo sai. Se lo eseguono su una macchina diversa, non lo sai. Se eseguono più applicazioni su una singola macchina tutte che lo utilizzano, non lo sai.

Quindi, quali sono le tue opzioni?

  1. dongle hardware. Fatto correttamente, limitano l'uso del software a una macchina specifica. Questo in genere richiede lo spostamento di parti del software nella chiave hardware, altrimenti diventa banale rimuovere qualsiasi codice di controllo dal software. Ciò inoltre non impedisce a più applicazioni sullo stesso sistema di utilizzare il software - se può essere legittimamente utilizzato da uno, è possibile copiare i dati inviati al dongle da un altro.
  2. Cambia il tuo modello in base al web o alla rete. Ora puoi vedere cosa sta succedendo, ma puoi limitare gli usi del tuo software. A seconda di ciò che fa, potrebbe non essere adatto alla latenza che questo introdurrebbe, o potrebbero esserci limitazioni su dove i dati del cliente possono essere inviati (ad esempio, i dati UE ai server degli Stati Uniti possono essere problematici, a volte).
  3. Modifica il tuo modello di prezzo. Permetti ai clienti di utilizzare il software quanto vogliono, ma carica più in anticipo. Rendi il software gratuito e carica su base di supporto. Carica di meno, per incoraggiare le persone ad acquistare più copie se lo usano in più posti. Questi sono tutti i modelli utilizzati da varie aziende, con diversi gradi di successo.
  4. Sii molto selettivo con i clienti. Se non ti fidi dei tuoi clienti a rispettare i termini della tua licenza, l'unico modo veramente sicuro per prevenire gli abusi è quello di consentire l'accesso solo alle persone di cui ti fidi. Richiedere controlli di "software in esecuzione" di terze parti sulle reti client, cercando un uso abusivo del codice. Non ho mai visto un'azienda con successo su larga scala con questo modello, ma può applicarsi ad alcune aree specialistiche, come i sistemi di controllo sensibili.

Alcune grandi aziende hanno usato alcuni di questi: Microsoft, ad esempio, utilizza un'autenticazione basata sul web in tempo reale: dopo un controllo iniziale, le app di Windows / Office eseguono ping ogni tanto per vedere se sono state rimosse dall'autorizzazione. Red Hat addebita il costo del software (ma è possibile ottenerne la maggior parte gratuitamente), ma addebita di più per il supporto e controlla i dettagli della licenza con le richieste di supporto. Ci sono alcuni pacchetti software specialistici (specialmente nei campi accademici) in cui si accede a loro solo dopo aver frequentato una formazione su come usarlo, che è essenzialmente una forma di essere selettivi con i clienti - la teoria è che riduce "banale" domande da nuovi utenti. NXP (una grande azienda di semiconduttori) offre dongle per alcuni dei loro strumenti di sviluppo, sulla base del fatto che non tutti gli utenti hanno la connettività di rete.

A seconda di come funziona il codice di inizializzazione, è persino possibile che un client davvero scrupoloso possa semplicemente controllare il valore di ritorno dai server e provvedere a se stesso - questo sarebbe il caso se il metodo restituisse una risposta vero / falso quando fornito con una combinazione nome utente / password, ma anche se restituiva un valore fisso o prevedibile (hash del tempo corrente o una stringa predeterminata).

    
risposta data 10.04.2017 - 15:19
fonte
0

La risposta di Matteo sopra è molto buona, ma omette un suggerimento che ha funzionato da secoli: contratti.

Scrivi il tuo contratto di vendita per limitare l'utilizzo in qualsiasi modo per i tuoi interessi commerciali migliori e nel contratto dichiari che ti riservi il diritto di utilizzare i messaggi Web per monitorare la conformità al contratto e prevedere addebiti aggiuntivi o la risoluzione del contratto per l'utilizzo al di fuori dei termini della licenza. Prendi in considerazione l'inclusione del linguaggio riservando il diritto di disattivare a distanza il tuo SDK in caso di non conformità. Il tuo avvocato dovrebbe essere in grado di redigere un insieme accettabile di termini.

Anche se probabilmente non sarai obbligato a specificare tutti i dati che potresti raccogliere nel contratto, ti consigliamo di includere dati di identificazione crittografati come ID utente, MAC, indirizzo IP, nome del computer, seriale della CPU numero, numero ID di installazione, numero di contratto / licenza, nome dell'applicazione, versione, nome del progetto / file, data / ora, numero di righe elaborate, ecc. Queste sono tutte cose che possono essere mostrate in tribunale per verificare la tua affermazione che il tuo software viene utilizzato oltre i termini concordati dai clienti.

Spetta quindi a te monitorare i cambiamenti nei modelli di utilizzo che potrebbero indicare una violazione del contratto. Invece di chiamare l'avvocato aziendale, tuttavia, consiglio innanzitutto di coinvolgere i venditori per contattare i clienti e offrire loro termini di licenza con maggiore capacità. Generalmente è più proficuo estendere i tuoi clienti a un tono di vendita attentamente formulato che a minacciarli con azioni legali.

    
risposta data 13.04.2017 - 22:02
fonte

Leggi altre domande sui tag