Android安全级别和密码机制

时间:2013-02-13 16:36:46

标签: android security

当我问自己Windows和Linux系统过去曾经被黑客攻击并试图在谷歌上搜索这个问题时,我正在考虑Android操作系统是多么安全。不幸的是,即使花了半天时间我也是不满意我在互联网上发现的东西。我想知道android安全和密码机制是如何工作的。如果有人可以分享任何内容或将我指向有用的链接:)

1 个答案:

答案 0 :(得分:0)

Android密码处理详情见LockPatternUtils.java的来源,靠近第820行:

public byte[] passwordToHash(String password) {
    if (password == null) {
        return null;
    }
    String algo = null;
    byte[] hashed = null;
    try {
        byte[] saltedPassword = (password + getSalt()).getBytes();
        byte[] sha1 = MessageDigest.getInstance(algo = "SHA-1").digest(saltedPassword);
        byte[] md5 = MessageDigest.getInstance(algo = "MD5").digest(saltedPassword);
        hashed = (toHex(sha1) + toHex(md5)).getBytes();
    } catch (NoSuchAlgorithmException e) {
        Log.w(TAG, "Failed to encode string because of missing algorithm: " + algo);
    }
    return hashed;
}

看起来一般的想法是强迫你猜错MD5和SHA1约束的正确密码。这意味着一个坏人必须得到MD5和SHA-1哈希的交集(而不是联合)。

不幸的是,MD5组件允许密码恢复。也许更好的策略是将MD5折叠成SHA-1(删除裸机访问MD5)。

顺便说一下,有一个(TM)的错误报告:Lock Pattern/Password uses MD5 Hash (LockPatternUtils.java)