1. Current Location: Home >  Router Encyclopedia >  WiFi密码是怎么被验证的?四次握手全程不传密码,万能钥匙的真相我拆明白了

WiFi密码是怎么被验证的?四次握手全程不传密码,万能钥匙的真相我拆明白了

WiFi密码四次握手原理图:密码全程不传输,随机数交换加字典爆破时间对照

上礼拜朋友慌慌张张发消息,说有人在楼下拿笔记本电脑蹲了半天,屏幕上一行行滚数据,问我是不是WiFi密码被偷了。我让他先放宽心:就是蹲一年,那人也抓不到你输的密码本体。他更懵了——抓不到密码,我家网之前是怎么被邻居蹭上的?这篇就把这两件事掰开讲:密码到底怎么被验证的,以及被「破」掉的究竟是哪一环。

先撂结论:你输的密码,从来没在网上跑过

很多人想象里,连WiFi就是把密码发给路由器,路由器掏出小本本一对:对上了,放行。真这么干,抓包的人早发财了——密码在空气里飞一趟,半路就被截下来了。

实际的路子是反着来的。你家路由器本来就知道密码(那是你自己设进它肚子里的),你的手机也知道(你输过,存在本机)。两台都知道密码的机器,要确认的是「对方真知道」,根本犯不着把密码发来发去,而是拿密码当场算一道只有知道密码的人才能算对的题。这套确认流程就是四次握手,全程不到两秒,你状态栏里那个小转圈转着的时候,它俩就在干这个。

所以在楼下抓包的人,能抓到你们交换的题目和答案,唯独抓不到密码本身。这不是路由器仁慈,是协议从设计那天起,就没给密码出厂的机会。

握手之前先干一件事:拿密码搅4096轮

正式握手前,两边要先把密码加工成一份「底料」,行话叫PMK。加工方式听着挺粗暴:底料 = PBKDF2(密码, WiFi名, 4096轮)——你的密码加上WiFi名字,扔进哈希函数里搅四千零九十六圈,出来一段谁也认不出原样的乱码。

我在电脑上跑过一遍这个东西,有个细节特别有意思。同一个密码「wojia2010」,配WiFi名「Home」算出来的底料是0588fdf1开头,配「Home5G」算出来是93d538cb开头,完全两码事;但只要名字和密码都不动,算一万遍,结果一模一样。

这一下就解释了你肯定遇到过的事:路由器改个WiFi名,明明密码没动,全家设备全得重新输入——底料是拿名字一起算的,名字一改,底料全换,旧钥匙开不了新锁。反过来,换新路由器时把WiFi名和密码照抄旧机器,几十台设备无感就连上了,也是同一个原理:造钥匙的材料没变,钥匙就没变。

四次握手拆开看:明文飞的只有随机数,密码当酵母藏在成品里

底料备好,开始握手。术语不用记,记住一个比喻就行:两边互发随机数当面粉,密码当酵母——酵母从头到尾待在各自家里,最后双方各自在家烤出同一块面包。

第几步谁发给谁发的是什么明文吗
①路由器→手机随机数A明文
②手机→路由器随机数B+盖好章的凭据(MIC)随机数明文,章是算出来的
③路由器→手机验章通过,发组播钥匙GTK加密
④双向此后每一帧都用新钥匙加密——

中间那步是灵魂:两边各拿同一份底料,加上互发的随机数A和B,再加上对方的MAC地址(就是设备的身份证号),各自算出一把本次连接专属的钥匙。手机拿这把钥匙给一段固定的话盖个章发过去,路由器自己也算一遍章,俩章一对——对上了,说明这手机真知道密码。全程密码和底料都没出过门,门外飞的只有随机数和盖好章的成品。

这套设计里还有两处挺妙的地方。钥匙里掺了随机数,随机数每连一次都换,所以你家钥匙今天连和明天连不一样,抓包的人就算抄走了这一次的成品,下次也不作数;手机和电视连同一个路由器,俩人的钥匙也各是各的,一台设备的钥匙漏了,殃及不了别的设备。

密码不上线,那别人是怎么连上你家的

回到开头的问题。抓包抓不到密码,你家网照样被蹭,路子主要就两条,而且头一条占九成。

第一条跟破解半毛钱关系没有:万能钥匙这类软件,工作机制是「人人为我、我为人人」的密码共享池。谁装了它来连你家WiFi、输对了密码,这串密码就被明文传上它的云端共享库。下一个走到你家楼下的人打开软件,软件从库里捞出你家这串,自动填上——看着像「破解」,其实是前面某个连过你家网的人,把钥匙复印了一份挂到了网上。最冤的一种是主人自己装它连自家WiFi,等于亲手把自家密码贡献进了库。想查谁连过、怎么防,防蹭网那篇写得更细。

第二条才是真刀真枪的技术路线:抓握手包,回家慢慢试。握手里飞的随机数和章,抓包是能抓到的。攻击者拿一本字典回家挨个试:假设密码是「12345678」——算底料、算钥匙、算章,跟抓到的章一比,不一样就换下一个候选。整个过程不需要路由器参与,在自己电脑上离线跑,所以叫离线爆破。

协议设计者也防了这一手:那4096轮搅动不是白搅的,就是故意拖慢计算速度的减速带。我拿书房那台老台式机实测,一秒钟只能算四百多次。听着还行?往下看账。

密码多长才扛得住:我拿自家电脑跑了圈账

爆破拼的就是组合数,密码每长一位、字符池每大一点,组合数都翻着倍地涨。实测的账摆在这(单线程口径,攻击者上了显卡还能快几百上千倍,但相对关系不变):

密码样式组合数我家老台式机单线程换块显卡之后
8位纯数字1亿种约61小时几分钟到几十分钟
10位纯数字100亿种大半年几小时
8位小写字母加数字2.8万亿种约200年几个月,多卡几天
12位大小写加符号10的23次方量级33万亿年等宇宙重启都跑不完

规律简单粗暴:长度比花哨管用。8位纯数字在显卡面前跟没设一样;拉到12位以上、大小写数字符号混着来,光组合数就到了10的23次方这个量级,全世界的算力堆上去也白搭。记不住乱码就用一句没人猜得到的长话,比如「我家路由器2019年花129买的」,19个字,长度照样碾压绝大多数字典。

另外WPA3路由器把离线爆破这条路直接堵死了:它换了套叫SAE的验证方式,每试一个密码都必须跟路由器在线一来一回,抓包回家离线试不了,试错几次还会被冷落。所以WPA2和WPA3那篇劝你新设备尽量上WPA3,不是图新鲜,是真多了一堵墙。老路由器只有WPA2的话,把密码设长设杂,就是你能做的全部。

家里能做的四件事,按要紧程度排

第一件,把密码换成12位以上的混合,或者一句长话。性价比最高的一步,一分钟的事,直接让绝大多数蹭网的人死心。

第二件,别装来路不明的「钥匙」类软件,也提醒家里长辈别装。你家被蹭多半不是被破了,是被共享了。给客人连网最好开个访客网络,密码单独设——客人那头再怎么共享,也够不着你的主网,隔离一开连家里NAS都摸不到。

第三件,把WPS关了。WPS的PIN码是8位数字,等于在你那堵12位混合的高墙旁边开了扇纸糊的小门,老路由器上这扇门尤其好踹。

第四件,老掉牙的加密方式别再用。后台加密选项里要是还挂着WEP或者WPA加TKIP这种十几年前的老古董,趁早换成WPA2或WPA2/WPA3混合。WEP那种加密是真能被几分钟现场破解的,跟你密码设多长都没关系。

收尾给自己留个念想:连WiFi这件事,从手机搜到名字(路由器每0.1秒广播一次,扫描那篇写过),到这儿的四次握手,再到DHCP发门牌,前前后后就两三秒。你多等的那两秒里,装着的是一套用了二十年还在扛的规矩。

Read More


Copyright Notice Scan to read on mobile
All Rights Reserved: 《SHUNOT》 => 《WiFi密码是怎么被验证的?四次握手全程不传密码,万能钥匙的真相我拆明白了》
Article URL: https://www.shunot.com/en/lybk/1257.html
Unless otherwise stated, all articles are original by 《SHUNOT》. Reposting is welcome! Please indicate the original URL when reposting, thank you.

Contact Us

Online Consultation: Click here to send me a message

WeChat ID: master_135

Scan to follow