Almacenamiento de claves privadas SSH en un dispositivo Android

6

(No estoy seguro de si esto pertenece mejor a unix.se o android.se, pero como está relacionado principalmente con la seguridad, lo pregunto aquí)

Utilizo mi dispositivo Android para acceder a los servidores para una administración rápida sobre la marcha. Antes de preguntar, el dispositivo está cifrado con una frase de contraseña bastante fuerte.

Estoy usando el emulador de terminal estándar proporcionado por CyanogenMod. Esto me proporciona un indicador de shell Bash simple en el que luego puedo ssh en los servidores que me gustaría.

Me encuentro con un par de problemas y problemas de seguridad:

  1. La aplicación se ejecuta como usuario u0_a24 , pero el inicio de Dropbear SSH está configurado como /data/.ssh . Esto significa que, a menos que yo sea root , no puedo acceder a los archivos sin hacerlos públicos: malo.
  2. Si solo almaceno mi clave privada en mi (si bien) la tarjeta SD cifrada, otras aplicaciones probablemente podrían acceder a ella. He hecho que mi clave privada sea bastante fuerte (muchas iteraciones de PBKDF2 en PKCS8), pero aún así, no estoy interesado en que otras aplicaciones tengan acceso a ella.

¿Cuál es la forma recomendada de manejar esto? ¿Alguien ha tenido suerte con hacer esto en Android?

    
pregunta Naftuli Kay 11.06.2014 - 04:06
fuente

3 respuestas

3

Encontré una manera de obtener lo mejor de ambos mundos.

rm /data/.ssh
mkdir /data/data/jackpal.androidterm/app_HOME/.ssh
chown u0_a100:u0_a100 /data/data/jackpal.androidterm/app_HOME/.ssh
mv /storage/sdcard0/id_rsa /data/.ssh/id_rsa
touch /data/.ssh/{config,known_hosts}

De esta manera, solo el usuario de la aplicación puede acceder a la clave privada, ningún otro usuario tiene acceso a ella.

    
respondido por el Naftuli Kay 11.06.2014 - 17:33
fuente
3

Alternativamente, podrías considerar el cliente JuiceSSH. Almacena tus llaves en su directorio de aplicaciones privadas. Además, encripta su almacenamiento, por lo que incluso los teléfonos con jailbreak ofrecen cierto nivel de protección.

Fuentes:
- @JuiceSSH: " El almacenamiento externo no funcionará ya que las claves se importan a la base de datos interna de JuiceSSH ". - @JuiceSSH: " Las [claves ssh] se almacenan en una base de datos SQL cifrada, pero puede exportarlas presionando la identidad durante más tiempo. ".

    
respondido por el copycat 13.08.2015 - 19:03
fuente
0

La opción 1 probablemente te dará la mejor seguridad. Si mueves algo a tu tarjeta SD, es un juego gratuito para otras aplicaciones de forma predeterminada. Al usar la aplicación SU, puede (y debería) definir reglas sobre cuándo otorga permisos a una aplicación SU, incluidos los límites de tiempo, esto le permite ser más granular en su acceso.

    
respondido por el KDEx 11.06.2014 - 04:16
fuente

Lea otras preguntas en las etiquetas