2012-01-17 23 views
8

Quello che vorrei chiedere è se qualcuno conosce un dongle hardware USB per la protezione del software che offre un supporto API completo e completo per le distribuzioni Java multipiattaforma.Chiavetta di protezione software USB per Java con un SDK che è multipiattaforma "per reale". Esiste?

Il suo SDK dovrebbe fornire un contenitore (solo uno, non una libreria diversa per ogni SO di sistema operativo &) pronto per essere aggiunto al proprio progetto come libreria.

  • Il vaso deve contenere tutto il materiale nativo per i vari sistemi operativi e bitnesses
  • Dal punto di vista dell'applicazione, si dovrebbe continuare a scrivere (le chiamate API) una volta e correre ovunque, senza dover preoccuparsi dove la utente finale verrà eseguito il software
  • il vaso fornito dovrebbe essa stessa ad affrontare il caricamento della libreria nativa appropriata

esiste una cosa del genere esiste?

con quello che ho provato finora, si hanno diverse API e librerie compilate per Win32, linux32, Win64, linux64, ecc (o si hanno nemmeno bisogno di compilare roba se stessi sul computer di destinazione), ma hey, abbiamo Stai facendo Java qui, non sappiamo (e non ti interessa) dove verrà eseguito il programma!

E non possiamo aspettarci che l'utente finale sia un ingegnere del software Personalizza, modifica (e rompere!) Il suo server Linux, librerie di collegamento, pasticciare con gcc, lettiera il file system, ecc ...

In in generale, il supporto Java (in una modalità cross-platform trasparente) è piuttosto negativo con gli SDK del dongle che ho valutato finora (ad esempio, KeyKl e SecuTech's UniKey). Ho persino acquistato (nessun kit di valutazione gratuito disponibile) SecureMetric SDKs & dongle (avrebbero dovuto essere "soooo" prontamente integrativi - in base al materiale di marketing: \) e sono stati i peggiori di sempre: SecureDongle X non ha supporto a 64 bit e SecureDongle SD non è affatto multipiattaforma.

Quindi, qualcuno è stato fuori attraverso questo e ha trovato l'ultimo dongle USB di sicurezza Java per distribuzioni multipiattaforma?

Nota: il software è a basso volume, alto valore; l'applicazione è off-line (intranet senza accesso a Internet), quindi nessuna alternativa di attivazione online e simili.

- EDIT

provato chiavi hardware HASP (usato per essere chiamato "Aladdin"), e aggiunto alla no-no lista: anche qui, non v'è alcun out-of-the-box (supporto fuori dal vaso): es end-linux-user deve mettere manualmente la libreria .so (il file specifico per il bitness appropriato) nel posto giusto sul suo filesystem ed esportare un env. variabile di conseguenza.

+0

D: Si presume che l'utente finale abbia già installato un JRE o che i JRE (specifici della piattaforma) si trovino sul dongle USB? – paulsm4

+0

Ciao @ paulsm4, grazie per il tuo commento. Mi affido a JRE installato sul sistema. Inoltre, considerando che i dongle con memoria flash inclusa tendono a costare molto di più per unità rispetto ai dongle più semplici (che normalmente consentono alcune centinaia di byte di memorizzazione dei dati). –

+0

"La protezione del software" è una battaglia in salita: esistono debugger, VM, ecc. qualsiasi schema finirà per rompersi, specialmente quando il valore è alto. Ecco perché, ad es. Oracle DB non viene fornito con sofisticate (se esistenti) protezioni di copia. Se non puoi fornire un server online su cui fare affidamento, puoi provare a fornire un server offline: spedisci un computer completo con l'app installata, un'appliance di ricerca Google. Questo elimina anche il problema della compatibilità della piattaforma :) – 9000

risposta

3

Disclaimer completo: lavoro per un company che crea dongle di protezione software (CodeMeter). Ma credo che potremmo avere una soluzione che soddisfi le vostre esigenze: abbiamo una singola API per tutte le piattaforme (Win, Mac, Linux, ecc. Sia a 32 che a 64 bit). Ogni macchina dell'utente finale richiede semplicemente un runtime (servizio su Windows; demone su Linux). Utilizziamo un'API Java nativa che utilizza TCP/IP per chiamare il nostro runtime, quindi non sono necessari driver di dispositivo speciali. È possibile eseguire attivazioni prima di spedire il dongle (pre-programmazione) o tramite lo scambio di file (NikeNet) sulle distribuzioni senza accesso a Internet, oppure è possibile rimuovere il dongle, portarlo su una macchina che dispone di connettività Internet e aggiornare licenza lì.

Ad un livello superiore rispetto all'API abbiamo AxProtector, che è uno strumento di protezione/crittografia automatizzato che è possibile utilizzare per testare il nostro sistema di protezione senza modifiche al codice sorgente. Questo ti permetterebbe di testare l'implementazione su tutte le piattaforme a cui sei interessato - non è necessario creare più versioni per piattaforme diverse.

Avevamo un'azienda Fortune 100 che utilizzava questa protezione per proteggere un'app Java eseguita su sistemi non Intel Solaris, quindi sappiamo che è stata sottoposta a stress test come soluzione multipiattaforma.

Abbiamo un sistema eval completamente funzionante che possiamo ottenere al più presto. Se mi invii un'email all'indirizzo di posta elettronica nel mio profilo, possiamo inviarti un SDK e aiutarti a determinare rapidamente se questo risolverà il tuo problema.

+0

Grazie per il tuo post: sono piacevolmente sorpreso della soluzione intelligente di chiamare i tuoi binari del runtime attraverso una chiamata TCP (la maggior parte dei dongle concorrenti ti fanno fatica con le comunicazioni USB dirette), mi sono chiesto per qualche tempo se qualche azienda effettivamente offerto quello. Sono molto interessato a valutare un dongle Wibu, ma non riesco a vedere la tua e-mail sul tuo profilo (penso che si possa vedere la propria posta solo sul proprio profilo): puoi rivelarlo qui in un commento? (o fornirmi un altro modo di contattarti) –

+0

Ciao Unai; puoi scrivermi a me: john dot browne su wibu.us –

+0

Ho ricevuto il kit di valutazione: finalmente, dopo aver provato 8 compagnie di dongle concorrenti, ho trovato quello che fa esattamente quello di cui avevo bisogno (cioè quello che ho chiesto nella mia domanda)! –

2

È possibile utilizzare Dinkey Pro dongles per ottenere esattamente questo. Mentre usano librerie native separate per ogni sistema operativo e architettura, basta chiamare la loro API Java e si prende cura di ogni bit specifico della piattaforma. Avvolgi le librerie in un file JAR con .class (l'API) e hai una soluzione pulita. I dongle stessi sono senza conducente.

+0

Quando chiamo le loro API dal mio codice, la loro classe rileva quale sistema operativo & bitness stiamo eseguendo e chiama automaticamente la libreria nativa appropriata? –

+1

Sì, si occupa automaticamente di questo –

1

Posso solo consigliare di evitare il sistema SecuTech UniKey. Durante la valutazione il prodotto ha soddisfatto tutti i requisiti di cui avevamo bisogno. Abbiamo iniziato a integrare questa soluzione e abbiamo scoperto un problema dopo l'altro. Ecco un breve elenco dei principali problemi che fanno parte del SDK 6.2.7:

  1. impostazioni Enveloper cambiano in modo casuale durante il salvataggio e il caricamento della stessa soluzione (Video).
  2. I file DLL inclusi nel wrapper non vengono caricati.
  3. La versione della console del wrapper per le build basate su script non funziona. Non è in grado di avvolgere exe/dll che possono essere inclusi nella versione basata su GUI del wrapper.

Il supporto è reattivo ma in realtà non risolve i problemi.

Dopo tutto abbiamo sprecato quasi un mese di lavoro per integrare questo sistema di protezione, ma ora dobbiamo passare a causa dei grandi problemi di qualità.