web-dev-qa-db-ja.com

AndroidデバイスにSSH秘密鍵を保存する

(これがunix.seとAndroid.seのどちらに属しているかはわかりませんが、主にセキュリティ関連なので、ここで質問します)

私は自分のAndroidデバイスを使用してサーバーにアクセスし、外出先ですばやく管理できるようにしています。質問する前に、デバイスはかなり強力なパスフレーズで暗号化されています。

CyanogenModが提供する標準のターミナルエミュレータを使用しています。これにより、必要なサーバーにsshできる単純なBashシェルプロンプトが表示されます。

私はいくつかの問題とセキュリティの落とし穴に遭遇しています:

  1. アプリケーションはユーザーu0_a24として実行されますが、Dropbear SSHホームは/data/.sshに設定されています。これは、私がrootでない限り、ファイルを公開しないとアクセスできないことを意味します。
  2. (とはいえ)暗号化されたsdカードに秘密鍵を保存するだけで、他のアプリがそれにアクセスできるようになる可能性があります。私は秘密鍵をかなり強力にしました(PKCS8のPBKDF2の多くの反復)が、それでも、他のアプリがそれにアクセスすることに興味はありません。

これを処理するための推奨される方法は何ですか? Androidでこれを行うことに運があった人はいますか?

7
Naftuli Kay

あるいは、JuiceSSHクライアントを検討することもできます。プライベートアプリディレクトリにキーを保存します。さらに、ストレージを暗号化するため、ジェイルブレイクされた電話でもある程度の保護を提供します。

出典:
-@JuiceSSH: " 内部JuiceSSHデータベースにキーがインポートされるため、外部ストレージは機能しません "。
-@JuiceSSH: " [ssh keys]は暗号化されたSQLデータベースに保存されますが、IDを長押しすることでエクスポートできます "。

4
copycat

私は両方の世界を最大限に活用する方法を見つけました。

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}

このようにして、アプリユーザーのみが秘密鍵にアクセスでき、他のユーザーは秘密鍵にアクセスできません。

3
Naftuli Kay

オプション1はおそらく最高のセキュリティを提供します。 SDカードに何かを移動すると、デフォルトで他のアプリ用の無料ゲームになります。 SUアプリを使用すると、時間制限を含め、アプリにSUアクセス許可を付与するタイミングに関するルールを定義できます(そうする必要があります)。これにより、アクセスをより細かくすることができます。

0
KDEx