Protezione della cartella a cui si accede tramite file batch

1

Dirò in anticipo che conosco abbastanza poco sulla crittografia e potrei fare una domanda stupida o fare una buona domanda in modo sciocco. Grazie in anticipo per la tua pazienza.

Ho una cartella, all'interno della quale ci sono i moduli Python e anche i file in salamoia contenenti macchine vettoriali di supporto e array di numpy. Al di fuori della cartella ho un file batch che avvia il modulo principale all'interno della cartella e che il modulo principale utilizza gli altri moduli e carica periodicamente gli SVM e gli array. L'intero processo ha una durata di forse due ore.

Voglio crittografare o altrimenti proteggere sia la cartella che il file batch, in modo che:

  1. un utente può eseguire il file batch ma non può aprirlo o modificarlo in altro modo;
  2. il file batch può accedere ai contenuti della cartella (presumibilmente usando una password nascosta all'utente grazie a (1);
  3. IMPORTANTE, un utente non può accedere ai contenuti della cartella anche quando il file batch accede alla cartella; e
  4. tutto questo deve essere realizzato senza che l'utente debba installare e affidarsi esplicitamente a software di terze parti sul proprio sistema, anche se i file di cartelle e batch vengono spostati nel suo sistema.

È un compito banale o complicato o impossibile? Ci sono altri approcci che potrebbero meglio incontrare (o almeno avvicinarsi all'incontro) i miei quattro obiettivi sopra indicati?

    
posta jda 28.11.2016 - 08:31
fonte

1 risposta

1

AFAIK, non puoi con un file batch su qualsiasi sistema simile a Unix, perché quando lanci un file batch, esegui il programma shell ( /bin/sh per esempio) che legge il file. AFAIK, sarà lo stesso su Window: un batch senza il permesso di lettura non sarà eseguibile dall'utente.

Se diventa un file eseguibile su Unix, puoi utilizzare la modalità ID utente impostata. È una funzionalità discutibile che consente a un processo di ottenere le autorizzazioni del proprietario del programma, anziché quelle dell'utente che lo avvia, durante il tempo di esecuzione. Era molto usato per i giochi locali negli anni '70: solo il programma di gioco poteva leggere / impostare i punteggi. Ciò significa che la directory sarà accessibile a un solo utente (il proprietario del programma) e che gli altri utenti potranno solo avviare il programma.

Anche se molto potente, questa modalità ha casi angolari e diverse implicazioni sulla sicurezza e ora è utilizzata raramente (se presente) è un'applicazione seria. Ad ogni modo, niente di simile esiste sotto Windows.

Il metodo ora consigliato è di avere un demone (Unix) o servizio (Windows) avviato all'avvio e in esecuzione con l'id utente del proprietario della cartella, la cartella essendo accessibile solo a quell'utente E tu hai programmi frontali che comunicano con il demone / servizio attraverso strumenti di comunicazione interprocessi come pipe con nome, code di messaggi, socket ecc.

Questo è leggermente più complesso in quanto coinvolge due processi e un canale di comunicazione, ma è molto più sicuro poiché separa in modo pulito l'interfaccia utente dal programma di elaborazione. Ma hai anche la possibilità di avere l'interfaccia utente su macchine remote e la cartella con i dati su una singola macchina protetta, semplicemente passando a un canale di comunicazione di rete ...

    
risposta data 28.11.2016 - 10:26
fonte

Leggi altre domande sui tag