App登录模块密码加密方案


序言

作为一个软件开发者,提高软件的安全性是每个人都需要关注的。安全性涉及的面很广,比如Apk包是否做了代码混淆(提高反编译难度),数据传输过程是否安全,数据库存储的数据是否安全等。
今天,我们来探讨一下App登录模块密码传输的安全性。

可行方案

先给出一个比较可行的方案,后面会分析安全性是怎么体现的。

  1. 用户注册过程,客户端通过rule1(pass)得到一个编码后的密码串passStr,然后调用注册接口把name/passStr传给服务器保存(不能用明文密码传输保存
  2. 用户在登录页面填写了用户name和密码pass后,点击登录按钮,客户端通过rule1(pass)把明文密码转换为passStr
  3. 客户端发送请从服务器查询一个时间戳ts和随机盐salt
  4. 客户端按照一定规则rule2(pass, salt)生成一个加密字符串encryptStr1,调用登录接口,把name/encryptStr1/ts传给服务端
  5. 服务器接收到请求,根据name获取passStr/salt,然后按照同样的规则rule2(pass, salt)得到密码串encrptStr2
  6. 然后用encryptStr2与客户端传来的encryptStr1进行比对,如果两者相同,则登录成功,返回一个会话给客户端。

上面的步骤中有些地方需要做一些说明:

  • 服务端不能存储明文密码,但可以存储一个编码后的密文passStr,这个密文在用户注册的过程中客户端生成(根据用户输入的密码pass按一定的规则rule1生成),通过注册接口传给服务端,服务端保存在用户表中。
  • salt应该具有时效性,可以设置一个比较短的有效期(如1分钟),一旦超过这个时间,salt失效,通过salt生成的加密串也验证不通过。

这么说可能不够形象,下面我用一张图来表示:


image.png

模拟盗取用户信息登录

针对上面提出的登录加密方案,我们考虑一下如何能够盗取用户的登录信息。

  1. 首先,我要说的是Https请求可以通过抓包工具获取通信内容,所以仅仅通过Https来保证安全是不可靠的
  2. 在手机中植入病毒,获取用户的输入行为,这种方式毫无疑问可以直接拿到用户的用户名跟密码,直接冒充用户身份登录
  3. 拦截用户的注册请求获取passStr,不过用户注册的行为是一次性的,所以不那么好拦截,我们就认为无法获取passStr
  4. 拦截获取随机盐接口,那么攻击者就可以修改参数获取用户的随机盐
  5. 拦截登录接口,攻击者可以获取当次请求的encryptStr1/name/ts,用这些参数可以在salt有效期内冒充用户进行登录
  6. 攻击者反编译Apk,获取rule1rule2,但攻击者还是无法推算出passStr,所以还是无法冒充用户身份进行登录

综上所述,攻击者可以做的事情如下:

  1. 往用户手机中植入恶意病毒,监听用户输入操作,获取用户名密码,可冒充用户登录
  2. 拦截用户注册请求,获取passStr,拦截获取随机盐请求,知道获取salt规则,反编译Apk,获取rule2。知道这些信息的情况下,也可以冒充用户进行登录。但这种方式难度极大,主要存在以下几个难点:注册操作是一次性的,不太可能被拦截;要抓取Https请求包,需要在用户手机上安装证书,或者让用户在自己安装证书的手机上登录账号;APK会加入混淆规则,所以反编译难度比较高。总结来说,这种方式不太可行。
  3. 拦截用户登录接口,获取此次登录参数,在salt有效时间内,可以冒充用户登录,如果用户体系存在互踢机制,那么用户会发觉账号被踢,及时修改密码

总结

从以上分析可以看出,这种登录方案还是比较安全可靠的,用户密码和登录信息不易泄漏。当然,除了这种方式,还有很多其他方式也可以保证安全,比如非对称加密RSA算法,对称加密算法(用RSA加密秘钥)等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容