crittografare i dati mentre si è in memoria

1

Qual è il modo migliore per proteggere l'input di testo sensibile e archiviarlo in memoria fino a quando l'invio del modulo è completo e poi cancellarlo poco dopo?

Sto cercando di proteggere le informazioni sensibili come le informazioni sui pazienti e le credenziali di accesso mentre vengono inviate sulla pagina in iOS, Android e Windows Phone tramite un metodo crittografico. Devo chiamare un'API e verificare con il server se le informazioni sono corrette, e in caso contrario, chiedere di rientrare, senza dover perdere tutte le altre informazioni valide.

Non voglio che i dati in testo normale rimangano / persistano se l'utente non completa completamente il modulo di invio o se i dati vengono inavvertitamente scritti sui file di paging.

    
posta TJ Aodha 19.03.2016 - 18:10
fonte

2 risposte

1

Se si sta lavorando in una lingua che consente l'accesso alle posizioni di memoria delle stringhe immesse, è possibile sovrascrivere le informazioni sensibili con byte nulli quando l'utente lascia la pagina / smette di immettere l'input per un certo periodo di tempo.

    
risposta data 20.03.2016 - 19:05
fonte
0

Suppongo che tu stia lavorando in Java poiché hai taggato la domanda con "Android".

Se hai davvero paura che la tua memoria possa essere snoopata, sei praticamente morto nell'acqua se stai affrontando qualcuno con un discreto livello di sofisticazione. Ma ci sono alcune tecniche di "sicurezza attraverso l'oscurità" che potrebbero proteggerti da uno snoop casuale.

Per iniziare, i dati sensibili devono essere archiviati nell'array [[Character] e non nella stringa. Una volta che lo hai usato, lo "masterizzi" sovrascrivendo con zeri e poi liberando. Queste sono le migliori pratiche standard e dovresti sempre farlo.

Potresti provare a "crittografare" i dati mentre sono archiviati in memoria. Il modo più semplice è XOR con una lunga stringa pseudo-casuale di byte. Ciò renderà inintelligibile a qualcuno la scansione casualmente attraverso un dump di memoria, ma una volta che decompileranno la tua app, probabilmente scopriranno qual è il tuo algoritmo di offuscamento e capiranno anche quale parte di memoria hai usato per memorizzare i dati sensibili.

Come menzionato da un altro poster, dovresti prendere la briga di assicurarti che la tua memoria non venga mai scambiata con la memoria a lungo termine. Ci sono chiamate di sistema che puoi fare in Linux per impedire lo scambio, ma penso che il loro uso in Java sarebbe sconsiderato. La buona notizia è che non credo che Android utilizzi lo scambio, quindi non sarà un problema per te.

    
risposta data 21.03.2016 - 22:27
fonte

Leggi altre domande sui tag