zoukankan      html  css  js  c++  java
  • 从专业角度,来分析汽车干扰器问题的产生、本质原因与解决方案

     1.问题产生

        汽车锁之所以能被干扰,是因为,它采用了“单向通信模式 + 不加密或低加密程度”的通信模式。首先,仅仅使用单向通信模式,就注定会被破解,因此,就算采用再高级的加密手段,同样也无济于事。其原因,实际上已经早已写到计算机安全的相关书籍中,这类书籍,属于大学计算机大类专业的本科程度内容,目前国内有很多大学已经开设了这门课,我们联系了广州地区几所大学的任课教师,据他们说,这门课的及格率不太乐观。

    2.本质原因

        2.1 成本问题。在电子产品产业,以及计算机行业,安全问题,一直不被重视。因为,如果要重视安全问题,是需要花很大的代价,让产品的成本大幅提高,有可能会提高很多倍。举个例子,一张银行卡的安全芯片,随着安全等级的提高,整体价格也就逐步上升。比如,能防止基础攻击的芯片,只需要几元或十几元;但如果要保证在50~100年内不被破解,则售价会高达几百元甚至上千元。

        2.2 产品定位问题。普通大众型产品,在实际生活中,被攻击的概率非常小。概率小,并不是说不会被攻击,而是因为产品数量太大,因此,即使有非常多的产品被攻击,在总体概率上,被攻击率依然很小。再拿银行卡举例,一个100万人口的中等城市,假设每人都有一张银行卡,而且该城市里只有2个作案团队能破解银行卡,每天最多只能破解10张,那么,每天被破解的银行卡的总概率为 10 : 100,0000 = 0.001 % ,一年破解10 * 365 = 3650张银行卡,被破解的总概率也仅为 3650 : 100,0000 = 0.365 %. 由于概率太小,并且它只是一款大众型产品,所以其安全问题,不能引起相关部门的足够重视。

        2.3 开发者的问题。在早期,遥控类产品,比如最常见的电视机的遥控器,其遥控方式是单向发指令的模式。这种方式非常不科学!从我们计算机专业来说,做这种设计的人,计算机安全应该是体育老师教的。当然,实际上,这个问题,并不能全怪这些开发者。原因有很多:

            2.3.1 首先是上面说的成本与产品定位问题。如果采用比较安全的加密通道与双向应答模式,则电视机遥控器,以及电视机,成本会高很多。

            2.3.2 其次是上面说的产品定位问题,因为,现实中,有人会无聊到去干扰别人的电视遥控器么?如果真的有,那么动机该有多无聊?多脑残?

            2.3.3 最后,这种单向的通信设计模式,影响了一代又一代的人。这些人毫无创新与严谨性,也不会带有批判眼光去审视已经存在的产品问题,他们仅仅只懂得照搬与抄袭。也许,就连照搬和抄袭,对他们来说都有很大难度,因此,在同类的产品中,他们仍然沿用了这种设计,毕竟这种前人已经做过的设计,可能会有现成的设计图纸或模式,来供他们直接抄袭。

            *单向通信模式,一定会被破解。在汽车干扰器这个案例中,干扰方法,仅仅是破解单向通信模式的诸多方法之一。

            当然了,出现这个问题,还有其他很多因素,限于篇幅,其他次要因素就不提了。

    3.问题解决方案

        3.1 如果仅从技术角度来看这个问题,要解决非常简单,因为计算机安全学科里,已经有非常成熟的、现成的解决办法,那就是加密通道 + 双向应答模式。目前我们使用浏览器访问大部分网上银行,网址前缀是 https ,它就是这种方案,在软件上的一种实现。

            3.1.1 所谓加密通道,就是通信双方要先建立起一条加密的通信通道。在汽车干扰器这个案例中,汽车电子锁,与汽车之间,要进行通信,必须先建立一条加密通道。这样,即使有外部干扰,也仅仅只能使加密通道建立失败,而不能篡改通信内容。

            3.1.2 双向应答模式。

                目前,我们的汽车电子锁,以及电视遥控器,是单向通信模式。

                所谓单向通信模式,就是,你要告诉别人一件事情时,你不管别人是否在你旁边,也不管别人在干什么,更不管你说了事情后,别人的反应。你需要做的仅仅是,说出这件事情。举个例子,妈咪叫儿子吃饭,妈咪大喊一声,“宝宝吃饭啦!”,然后什么都不管,这种就是单向通信。最好的情况是,宝宝在妈妈周围,并且宝宝刚好能听到。不好的情况是,宝宝不在妈咪身边,听不见妈咪说的。或者宝宝在妈咪身边,但宝宝戴着耳机,没听见妈咪的叫声。或者宝宝没戴耳机,但宝宝正做某件事入迷了,虽然听到妈咪的声音,但没有反应。

                而双向通信模式,则是,你要告诉别人一件事情,虽然,你不管别人是否在你旁边,也不管别人在干什么,但是,当你说了事情后,你要留意别人的回应。只有当别人做出回应,并且回应是正确的,你才能确定你这个操作成功完成了。再用妈咪喊宝贝吃饭的例子来说,妈咪大喊一声:“宝宝吃饭啦!”,然后就开始等宝宝的回应。如果宝宝不在妈咪身旁,则妈咪在一定时间内,比如5秒内,没听到宝宝的回应,因此,妈咪这个操作就失败了。如果宝宝在妈咪身边,但宝宝戴着耳机在听歌,因此也没有回应,妈咪在5秒后,也能觉察到自己的这个操作失败了。最后,就算宝贝没听歌,并且在妈咪身边,但宝宝在做别人的事情入迷了,这时,宝宝听到妈咪的声音后,只是哼了一声,那么,虽然妈咪接收到了宝宝的回应,但这个回应,并不是:“我来了”之类的回答,则妈咪也能知道,妈咪的这个操作失败了。

                总结一下,如果电视机遥控器采用了双向应答模式,则你按下换台键后,如果5秒后,电视遥控器发出声音说:操作成功,则我们就会知道,电视机已经成功收到了这个换台指令。如果出现别的意外情况,则遥控器会报警说,出现错误。则我们就能明白,要使用遥控器,再操作一次。把这个设计,应用到汽车锁上,则汽车锁上需要加一个提示设备,或者用声音提示,或者用LED显示器提示。当汽车锁发出锁车指令,并且车返回成功锁定的回应后,则汽车锁会有一个提示,告诉使用者汽车已经上锁。否则,汽车锁会发出锁车失败的报警,然后用户知道后,会再锁一次。

        3.2 如果从综合角度来看这个问题,其实,这个问题依然还是经济问题。当一把能被破解的、简单的、50元~150元左右的汽车锁,升级了安全级别,变成了拥有加密通道以及双向通信模式的不会被破解的汽车锁后,价格变成了300元~600元后,你还会买么?相信此时大家会考虑更多东西了。比如出租车行业、或小型面包车,由于车内一般不会有太贵重的物品,因此,昂贵的高安全的汽车锁,显得没必要,并且不值得。而家庭用车,这也要根据车内常设物品的价值,以及车主的经济能力来决定。

  • 相关阅读:
    软件开发模型
    Java学习--数组
    10年软件测试经验
    Log4net
    文件下载界面
    VB.NET中文双引号的处理方法
    SOAPUI使用
    .net数字转换成汉字大写
    SQL调用Webservices
    SQL大小写金额转换
  • 原文地址:https://www.cnblogs.com/xxxteam/p/3073902.html
Copyright © 2011-2022 走看看