2013-07-02 1 views
3

나는 안드로이드 및 보안을 처음 사용합니다.개인 키를 PIN 코드없이 안드로이드에 저장하는 법

내 앱은 개인 키로 암호화 된 암호화 된 DB를 사용합니다. 추가 비밀 번호/핀 코드를 추가하지 않고이 개인 키를 보호 된 장소에 저장하는 방법을 찾고 싶습니다.

안드로이드의 키 스토어가 그것을 할 수있는 장소이지만, 필자가 이해한다면, 그것을 사용하면 장치의 핀 코드를 설정할 것을 요구합니다. t는하고 싶다!).

이 키를 저장할 위치와 방법에 대한 제안 사항은 무엇입니까? (모든 키 저장소 관련 솔루션은 핀 코드를 설정할 필요가없는 한 수용 가능합니다.)

내 방향이 내 앱의 일부로 컴파일 할 외부 공개 키 스토어를 사용하고 있습니다 (제안 사항은 무엇입니까? 그리고 안드로이드는 애플 리케이션간에 정보를 공유하지 않기 때문에 사용하는 것이 좋습니다).

루트 장치를 사용할 때 마지막 가정은 올바르지 않지만 내 경우 루트가 아닌 장치 만 사용한다는 사실을 알고 있습니다.

나는 (여기와 다른 경우) 많이 검색 한 내가가 ...

어떤 도움을 찾고 있었다 높게 평가되는 것을 찾을 수 없습니다! 10x

답변

1

API 12까지는 KeyChain을 사용할 수 없습니다. 이전 API 버전을 타겟팅하려면 다른 옵션이 필요합니다. SpongyCastle을 사용하여 고유 한 KeyStore를 만들 수 있습니다.

사용자에게 암호를 묻지 않으려면 암호를 모호하게해야합니다.

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     KeyStore ks = null; 
     try { 
      ks = KeyStore.getInstance(KeyStore.getDefaultType()); 
      ks.load(null,null); 

      // Add certs or keys 

      ks.store(new FileOutputStream(new File(getFilesDir(),"out.bks")),"password".toCharArray()); 
     } catch (KeyStoreException e) { 
      e.printStackTrace(); 
     } catch (CertificateException e) { 
      e.printStackTrace(); 
     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    static { 
     Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); 
    } 
} 
+0

오른쪽, 내가 이전 API 버전에서도 목표로하고있어 ... 난 단지 개인 키를 obsecure 것이 아니라 정말 보호하지 않습니다. 본인은 사용자가 암호를 입력해야만이 작업을 수행 할 수 있음을 이해합니다. 핀 코드와 같이 매번 발생하지 않는 한 문제가 없습니다. 다시 한번 - 외부 키 저장소 솔루션이 필요하다고 생각합니다. 감사합니다. – krushi

+0

키를 가져 오면 키를 캐싱하거나 메모리에 암호를 캐시 할 수 있습니다. – Frohnzie

+0

먼저 도움을 주셔서 감사합니다. 많이 감사합니다! 나는 메모리에 저장하는 것이 좋은 생각이다. 내 앱이 배경으로 갈 때, 안드로이드가 그것을 죽일 수 있고, 다음에 그것을 입력하고, 메모리에이 데이터없이 복원한다. 그리고 가장 중요한 것은 무엇인가? 어떤 외부 "키 저장소"(또는이 문제로 보호 된 저장소)를 사용할 수 있습니까? 다시 - 고마워요! – krushi

관련 문제