【原创】白话FIDO—是时候让口令认证退出了

网上搜索关于FIDO(FastIDentity Online,快速在线身份认证)的中文文章一把一把,但要么是FIDO联盟的资讯,要么对官网的规范进行只言片语翻译,往往留下最深印象的几个字是“杀死密码”,身边知道FIDO的人将其等同于生物认证。直到在某个会议上听了FIDO联盟执行董事Brett McDowel讲的FIDO overview报告后,才起了好奇心,迅速翻阅了官网关于UAF/U2F的整体介绍,对FIDO技术有了进一步的了解。很想好好写篇咋呼的文章叫“FIDO:互联网口令的埋葬者”,但下笔后发现严谨的文风写不了,也就只能讲究写大白话了,才有了现在的文章题目。
说FIDO之前必须严谨的澄清一下“口令”与“密码”的区别,因为发现国内很多专家都在混淆这两个词,直接导致媒体和大众将这两个词等同起来。老外不会用错,因为对应的英文名字大不同,口令对应的是password,而密码对应的是cryptography,前者就是一串字符,知道这些字符就代表了“你就是你”,因为只有你拥有这个字符串;后者意指密码学相关技术,是整个信息安全的基石所在。
  (先插入个搜索到的没出处的图片,提升下逼格,里面文字意思是输入口令!)


password.jpg

1 为啥会有FIDO?

用口令来验证身份相信老祖宗就会用到,小到两个士兵对个暗号,大到交战公文传递都需要。互联网起来后,几乎是网站/应用验证用户的唯一方式,输入框中熟悉的星号如果验证正确就代表了这个用户是合法的。但现在越来越多的人感到了它是不安全的,并开始尝试改进。比如在服务器端,做人不能像xx那样存储口令明文,至少得哈希一下再存,能加点盐最好不过了。在用户那改进的地方更多,让他增加口令的长度,不能只写sb两个字母;让他增加口令的复杂度,再说一遍不能只写sb,要有特殊字符;让他安装控件保护口令,不能连sb这样的口令都想复制粘贴;让他不同的网站用不同的口令,至少应该用sb和2两个口令来区分百度sb和百度2吧。
  这些方式提升了口令的安全性,但没有解决本质的安全问题,这些问题突出体现在:
  a) 口令存储面临泄露之患。代表用户身份的口令通常在服务器端进行判别验证,一些大网站、大应用被脱库的惨烈教训凸显了这种模式的弊端。存明文口令直接导致身份冒用,存哈希口令,只要攒够足量彩虹表也大部分可破解,各种加盐的哈希变形也不解决根本问题。
  b) 口令传输有被截取之忧。监听口令之于嗅探,就像“hello world”之于编程。只要含有身份的信息被偷走就有身份泄露之嫌,尽管这些信息可能受到了直接加密、SSL/IPSec类安全协议等手段的保护,这种方式在密码学上仍然被认为是不安全的。
  c) 用户面临口令记忆之扰。厂商、专家往往喜欢教育用户登陆网银、微信、论坛需要设置不同的口令,这对用户而言痛苦不堪。就好比上帝对用户说,要安全还是要便利,要安全就少废话,把这一页的口令都给我记住;要便利的话出了安全问题别TMD向我祷告。厂商其实也不想做上帝,让用户做二选一是转移责任的无奈之举。
  既然口令认证的方式在用户端、传输端和应用服务端都有问题,那就干脆来一场变革吧,让口令都去死翘翘吧。这个时候我们切换到大神出场场景:PayPal的安全老大MichaelBarrett说问题都摆在这了,咋整?他的好基友Ramesh Kesanupalli(生物识别专家)说,用户所知道的口令不如所拥有的U盾,但你PayPal的U盾不是还是让用户随身带才行,用我搞的指纹吧。Barrett说好,但不能本地验啊,把你的指纹模板从用户手里采到我这验,我被脱库了还是不行啊。大神Taher Elgamal扶了扶眼镜,说吵吵啥呢,老子30年前的论文就把这问题解决了,SSL都是我的涂鸦之作,沿着这个思路干吧,用私钥做身份,你PayPal存公钥。Barrett觉得可行,说“事搞清楚了,但得起个响亮的名号,丫指纹不是新东西,公私钥不是新东西,不行必须得包装一下,名字叫FIDO吧,再拉几个兄弟成立个联盟。”

2 FIDO在技术上咋整?

FIDO的旗子扯起来了,开始干了,必须现有技术路线,新东西为什么能解决口令安全的问题呢?根本原因在于是联盟两伙人在干,各懂各的,但这也是它的先进性,相比于以前的认证方式变革在于它把认证方式和认证协议分开了,在原来都是一回事,协议里面把口令就验了,现在本地认证就看你指纹对不对或者虹膜对不对,如果是你张三的,我就把私钥给你解出来,认证协议采用公私钥体制去对端验证一下。协议里面用到的挑战应答方式也是老土老土的了。
  这么看倒是捋顺了。客户端是浏览器后者app,FIDO在上面先提供一层javascript API,往下走就是传递消息了,先后经过message层(数据体)和驱动层(usb、蓝牙、NFC等)就到了FIDO device了,这个设备应该尽量是安全的,比如随机数用真随机噪声源产生、公私钥对在内部产生,只有对应的库能调用,外面邪恶的程序没法调用等。在服务器端就是各个应用服务了,给它配个认证服务器,维护着客户端FIDO的信息,包括公钥、id等,这些东西是公开的,被人脱库也不怕。客户端和服务器端交互的时候走个“挑战-应答”方式,给个随机数防冒用,给个KEY HANDLE区分下不同的应用。
  工作模式搞定了,但还得有初始模式,在FIDO device里面得把应用的id记住,应用得把FIDO device记住啊,于是FIDO就搞了个简单的注册机制,这个过程安全性确实比较弱,不过也没办法,为了后续工作模式的安全只能忍了。要想安全估计只能线下分发初装了。
  顺便说一下,FIDO统一了物理的验证方式,指纹目前是最成熟的,人脸(立马想到了在汉诺威展示的那张马云的脸,算法真伟大,连他都能识别)、虹膜、掌纹、步态等都发展很快,这些生物认证方式毫无疑问会是未来的主流,可以期待和展望的是口令以后确实不会再坑爹了。

3 FIDO在伟大国度怎么落地?

FIDO联盟在2012年夏天成立后,扯着嗓子喊了几年,不少小弟被感召进来,总数已达二百五,因为它的分层机制还不错,做传感器的进来了,做ASM库的进来了,做应用的也来了,做浏览器也进来了,就剩上升为真正的标准了,现在光specification还不够,影响力还得靠standard才行,这估计是FIDO的目标。但目前的规范也是有一些问题的,尤其是必须考虑我们伟大国家的特色,这可能也是FIDO之前设的都是子主题工作组,突然来个了FIDOChina工作的原因吧。
  首先,公私钥体制不错,数字证书签名验证也用的这个,但是运维起来是不是还得靠现成的大量PKI设施,得直接支持数字证书才行。这个需要的是库的厂家来提供解决方案。得要考虑现实情况,工行有自己的一套CA,建行也有自己的一套,还互相不认,这些证书得用起来。
  其次,现在厂家重点发力在移动端,得多考虑PC端啊,不能光windows还得linux啊,我伟大国度有很多特定行业的,都有自己的全国专网,机器都是特定的。厂商进度有点慢啊。
  第三,互认证的问题是不是得考虑下啊,解决了用户验证的问题,用户也得相信你应用服务是合法的啊,FIDO设备信息给你小了说是信息泄露,无关痛痒,大了说还可能钓我的鱼啊。
  第四,身份认证的问题解决了,是不是搞个报文认证啊。密码学教科书可是将Authentication分为两种的:ID和message。前者解决的人真实的问题,后者解决的信息真实的问题。
后两个是通用的问题也放在这一节了。

4 结束

FIDO这个东西虽然不是全新的东西,看上去创新性好像不足,但将旧技术组合起来解决大问题就已然是创新了,对于现在广泛依赖口令的互联网认证方式确实是向前迈了一大步。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • Http协议详解 标签(空格分隔): Linux 声明:本片文章非原创,内容来源于博客园作者MIN飞翔的HTTP协...
    Sivin阅读 5,222评论 3 82
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,071评论 25 707
  • XiaomiRouter自学之路(08-U-boot启动数值具体说明) 在上一章节的[U-boot启动过程]中,我...
    Creator_Ly阅读 2,246评论 0 2
  • 文/鸿运 那天清晨 我匆匆的吃过早点 又匆匆的奔向了医院 父亲躺在病床上 那种眼神是那么的期盼 妈妈在,大哥在,兄...
    HONGYUNDANGTOU阅读 323评论 24 19