Android安全存储

Sze*_*eri 22 android key-management

我想在我的Android应用程序中存储一些小而重要的信息,例如AES密钥.建议的方法是什么?我不想将密钥硬编码作为我的应用程序的一部分.

我看看KeyStore,但它并没有真正解决我的问题.它可以存储我的密钥,因为我可以提供密码.然后我需要找到一个安全的地方来存储这个密码,这与我原来的问题相同.

是否有内置的Android类来执行此任务?或者我应该寻找第三方图书馆?使用NDK对我来说也是可以接受的.

更新:

我希望找到一个用于存储的Android API,以确保只有存储某些信息的应用程序才能检索回来.Android OS可以基于签署应用程序的签名来强制执行此操作.这样,我的应用程序可以在第一次运行时生成随机密钥,并将其存储在安全存储中以供以后使用.这有什么API吗?

Com*_*are 5

是否有内置的Android类来执行此任务?

除了java.io.File,没有.

或者我应该寻找第三方图书馆?

你可以尝试,但我怀疑大多数看起来像你已经拒绝的解决方案.大多数安全数据存储涉及密码并假设密码保存在其他地方(例如,在用户的头部).例如,OI Safe有一个基于Intent的系统,允许应用程序将东西存储在保险箱中,然后用户参与解锁保险箱IIRC.

  • @hackbod:我的印象是OP正在寻找能够在有根设备中存活的东西.你的解决方案虽然完全合情合理,但却可以通过生根来轻易打败.但是,根本原则的解决方案绝对是我的假设,如果生根不是特别关注的话,我向OP道歉. (4认同)
  • 你的意思是没有这样的API?此保证是应用程序存储在内部存储上的所有文件的默认行为,因为每个应用程序都有一个唯一的用户ID,而应用程序创建的默认文件模式只能由创建者的uid读取/写入.除此之外,唯一的例外是(a)放置在外部存储器上的文件,以及(b)使用该标志创建的文件,以使它们成为可读/可写的世界.另一个应用程序可以使用你的uid运行的唯一方法是:(a)它是用你的证书签名的,(b)你们都有相同的android:sharedUserId. (2认同)
  • 哦,如果用户有root,则没有可以保护的数据,期间,故事结束.您可以尝试使事情变得更加困难,但实际保护已经消失. (2认同)