蓝牙加密漏洞曝光:可在未配对情况下访问设备

据外媒报道,最近曝出的一个加密错误(Crypto Bug),对苹果、博通、英特尔、高通等硬件供应商的蓝牙实施和操作系统程序都产生了较大的影响。其原因是支持蓝牙的设备无法充分验证“安全”蓝牙连接期间使用的加密参数。更准确的说法是,配对设备不能充分验证用在 Diffie-Hellman 密钥交换期间,生成公钥的椭圆曲线参数。

该 bug 导致了弱配对,使得远程攻击者有机会获得设备使用的加密密钥,并恢复在“安全”蓝牙连接中配对的两个设备之间发送的数据。

以色列理工学院的科学家 Lior Neumann 和 Eli Biham 发现了该漏洞:

其追溯编号为 CVE-2018-5383,可知蓝牙标准的‘安全简单配对’过程和低功耗蓝牙(Bluetooth LE)的‘安全连接’配对过程都受到了影响。

计算机应急响应小组(CERT / CC)昨晚发布了一份安全通报,其中包含了针对该漏洞的如下说明:

蓝牙利用基于椭圆曲线 Diffie-Hellman(ECDH)的密钥交换配对机制,实现设备之间的加密通信。ECDH 的密钥对,由私钥和公钥组成。且需交换公钥,以产生共享配对密钥。

此外,设备还必须统一所使用的椭圆曲线参数。然而之前涉及‘无效曲线攻击’的工作表明,ECDH 参数在用于计算结果和共享密钥之前,并不总会经过验证。

这样可以减少攻击者获取受攻击设备私钥的工作量 —— 如果在计算被分享的密钥前,并未部署验证所有参数的话。

在某些实施方法中,椭圆曲线参数并非全部由加密算法实现验证。

这使得无线范围内的远程攻击者们,可以通过注入无效的公钥,从而高概率地确定会话密钥。然后这些攻击者可以被动地拦截和解密所有设备信息,或者伪造和注入恶意消息。

苹果、博通、英特尔和高通公司,已经确认蓝牙实施和操作系统驱动程序层面都受到了影响。

万幸的是,前三家公司已经发布了针对该漏洞的修补程序。至于高通,该公司发言人在一封致 Bleeping Computer 的电子邮件中称,他们也已经部署了修复程序。

CERT / CC 专家尚未确定 Android / Google 设备、或者 Linux 内核是否也受到了影响。不过微软表示,自家设备并未受到本次 Crypto Bug 的影响。

负责监督蓝牙标准发展的 SIG 也发表了一份声明:

为了使攻击成功,攻击设备需要处于两个易受攻击的蓝牙设备的无线范围内。如果只有一方设备存在漏洞,则攻击不会得逞。

此外攻击设备需要通过阻止每一次的传输、向发送设备确认,然后在窄时间窗口内将恶意数据包注入接收设备,才能拦截公钥交换。

SIG 表示,该组织已经更新了官方的蓝牙规范,要求所有配对设备验证用于基于密钥的加密蓝牙连接的所有参数,即便当前暂无野外攻击的报道。

至于 CVE-2018-5383 的补丁,将通过操作系统或驱动程序的更新(面向台式机、笔记本电脑、智能手机),或者通过固件来实现(面向物联网 / 智能设备)。

[编译自:Bleeping Computer ]

谷歌推双重认证安全密匙硬件产品Titan

据外媒报道,昨日,谷歌公布了一项惊人的统计数据,这家公司指出,自2017年年初开始,其8.5万名职工的工作账号未曾遭到过泄露。作为一家全球性的互联网巨头公司,按理说它会是钓鱼攻击的主要目标之一,那这家公司究竟是如何做到这点的呢?

这是因为谷歌开始要求其员工使用硬件安全密匙进行双重身份认证。

如今,双重认证已经变得非常普遍,但并非所有方法都是一样安全的。像基于SMS的双重认证,其肯定比只使用密码保护账号更安全,但它却存在漏洞。而物理密匙现在则被广泛认为是一种更加安全的双重认证,谷歌于昨日提出的主张就支持了这一观点。

对此,当看到谷歌开始涉足安全密匙业务领域也就不足为奇了。今日,这家公司发布了一款叫做Titan的新产品,这是一款兼容FIDO的物理密匙,它可用来保护支持该硬件的账号。眼下,来自世界各地的大型网站都已经支持通过安全密匙进行双重认证的方式,包括Facebook、Twitter。

据了解,Titan将有两个版本:USB版和蓝牙版。USB版,很显然需要将设备插到电脑的USB端口展开认证,而蓝牙版则用于移动设备的无线认证。获悉,两款密匙设备的套装价将在50美元左右,单独购买的话售价大概是20美元或25美元。

目前,Titan只适用于Google Cloud用户–他们可以在注册后免费试用–但谷歌表示,他们将很快通过Google Store向所有人提供这项服务。

一些实用的Python开发资料

Python是一种广泛使用的高级编程语言,由Guido van Rossum创造,第一版发布于 1991 年。Python 的设计哲学强调了代码的可读性和简洁的语法。随着物联网、大数据的兴起,越来越多的人开始研究起这门语言。

【Kaggle的免费Python教程】

Python – Learn the most important language for Data Science

https://www.kaggle.com/learn/python

英文,免费,偏向于数据科学方向。

××××××××××××××××××××××××××××××××××

【廖雪峰的Python3教程】

https://www.liaoxuefeng.com/wiki

/0014316089557264a6b348958f449949df42a6d3a2e542c000

中文,免费,零起点,完整示例,基于最新的Python 3版本。

××××××××××××××××××××××××××××××××××

【Python轻量级Web框架Flask教程】

http://flask.pocoo.org/docs/1.0/

英文,官方,零起点。

××××××××××××××××××××××××××××××××××

【Python 资源大全中文版】

https://github.com/jobbole/awesome-python-cn

我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列的资源整理。awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由伯乐在线持续更新。

Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。

树莓派常用工具

树莓派官方系统 Raspbian(lite版和桌面版注意分清):

下载地址:https://www.raspberrypi.org/downloads/raspbian/

默认帐号:Username: pi Password: raspberry

镜像烧录工具 Win32diskimager(用来将镜像文件写入 MicroSD 卡):

下载地址:https://sourceforge.net/projects/win32diskimager/files/latest/download

SSH客户端 Putty(远程连入树莓派命令行操作工具):

下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

WinSCP客户端(远程传输文件到树莓派的工具):

下载地址:https://winscp.net/eng/download.php

SD卡格式化工具:

下载地址:https://www.sdcard.org/downloads/formatter_4/

 

 

Raspbian 中国软件源(2018.7.13版)

使用树莓派 Raspbian 系统的中国用户,通常会遇到从官方站更新和安装软件时候速度比较慢的问题,IoT前哨站整理了一些东亚地区速度比较快的软件源供大家使用(如果有不能用的可通知我们剔除,有新的可信的也可以让我们加进去)。

相关镜像站:

浙江大学
http://mirrors.zju.edu.cn/raspbian/raspbian/

中国科学技术大学
http://mirrors.ustc.edu.cn/raspbian/raspbian/

阿里云
http://mirrors.aliyun.com/raspbian/raspbian/

清华大学
http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

华南农业大学(华南用户)
http://mirrors.scau.edu.cn/raspbian/

大连东软信息学院源(北方用户)
http://mirrors.neusoft.edu.cn/raspbian/raspbian/

重庆大学源(中西部用户)
http://mirrors.cqu.edu.cn/raspbian/raspbian/

新加坡国立大学
http://mirror.nus.edu.sg/raspbian/raspbian

韩国KAIST大学
http://ftp.kaist.ac.kr/raspbian/raspbian/

使用方式:

编辑/etc/apt/sources.list 文件,参考如下命令:

sudo nano /etc/apt/sources.list

如果是 stretch 版本,用以下内容取代(以此类推):

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free

# Uncomment line below then ‘apt-get update’ to enable ‘apt-get source’
#deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi

保存文件后用root权限执行:

apt update即可。

可根据自己的情况选择就近的站点。

 

溢价收购CA不务正业?半导体大厂博通股价暴跌

据MarketWatch北京时间7月12日报道,芯片巨头博通周三宣布,同意斥资189亿美元收购云软件和企业软件开发商CA Technologies。然而,这笔交易引发市场诸多质疑,导致博通股价在周四早盘暴跌了近18%。

根据两家公司的声明,博通将以每股44.50美元收购CA的全部流通股。以后者周三的收盘价计算,此交易的溢价幅度约为20%;较CA过去30个交易日的平均股价溢价约23%。

博通CA的交易如果能够获得美国、欧盟和日本反垄断监管部门的批准,能够帮助其多元化业务。博通与CA两家公司的董事会已批准了这一交易。

博通首席执行官兼总裁陈福阳(Hock Tan)在声明中表示:“这宗交易代表着我们创办全球领先的基础设施科技公司的重要基石。凭借其庞大的客户基数,CA独具特色地跨越了日益增长和支离破碎的基础设施软件市场,其中央处理器和企业软件产品将为我们的关键技术业务增光添色。”

和此前博通计划收购高通时的针锋相对不同,此次,CA方面也表达了欣然接受的意愿。该公司CEO在公开声明中说:“这宗交易组合将使得我们的软件专长与博通在半导体行业的领导地位维持一致。”

根据公开资料显示,CA是全球最大的IT管理软件公司之一,专注于为企业整合和简化IT管理。CA创建于1976年,总部位于美国纽约长岛,服务于全球140多个国家的客户。近来,公司的主要业务转向了主要以生产基于云的企业软件和传统软件。而且,公司此前的高速发展主要凭借一系列的兼并和并购交易实现,这与博通非常相似。

然而,对于博通的此次收购,华尔街存在诸多疑问。

首先的疑问是,在有博通收购高通被否的前车之鉴下,博通此次收购CA会不会再次被特朗普政府一票否决?

加拿大皇家银行分析师阿米特·德莱纳里(Amit Daryanani)周三在给客户的邮件里写道,博通对CA的收购案中,最需要关注的是,政策审批层面的问题,虽然博通的此项交易不需要通过中国的审批,另外,此前,博通已经在上次收购高通遇阻后,将总部从新加坡迁至了美国,也就是说,博通此次收购不再需要通过美国外国投资委员会的审批。但是这项交易仍需要通过美国反垄断机构的审核,在欧盟和日本也同样需要接受相关的审批,而CA股东也尚未批准这一交易。

其次,虽然CA未来可能会给博通带来充足的现金流,但是博通此次收购CA的举动仍然让很多投资者摸不清头脑。德莱纳里指出,博通的这笔交易还有很多疑点需要向投资者解释。

虽然我们理解博通想要从CA获得更充足的现金流的投资逻辑,但是,我们依旧想不通这笔交易是否会影响博通原本的战略计划,以及后市是否会对公司的资本配置造成较大影响。投资者仍需要弄清楚,博通为什么想买入一家软件公司?这笔交易跟公司的核心业务又有什么联系?

如果博通想好了要偏离原来的核心半导体业务来进行业务扩张,那么它的边际在哪里?而且,最让人担忧的是,博通此前承诺要通过股息派送归还投资者一半的年度现金流,但是此次现金收购以后,公司的这个承诺还会兑现吗?

新一代iPhone或支持eSIM 运营商控制权将被削弱

距离苹果 2018 年秋季发布会还有两个月时间,消费者对下一代 iPhone 的热情高涨,但是对于移动运营商来说,新款 iPhone 可能会让他们感到不快。

一份最新的报告显示,苹果可能会在下一代 iPhone 中加入一款 eSIM 芯片。传统的塑料 SIM 卡需要放在卡托盘上,然后推入卡槽中。如果没有它,手机就无法获得运营商服务。但是,eSIM 是一种芯片,它实际上是被焊接到手机的电路板上的。除了不需要 SIM 卡托盘之外,eSIM 甚至不需要消费者前往运营商营业厅更换 SIM 卡。

从消费者的角度来看,这将是一个令人消费的消息,当然,运营商除外。只要有了 eSIM,iPhone 用户就可以在运营商之间随意切换,更换手机 SIM 卡这部分麻烦将不复存在。消费者需要做的就是注册服务并等待运营商的自动激活。

如果苹果在今年秋天发布的新款 iPhone 中加入 eSIM 芯片,这可能标志着运营商和用户之间的关系的终结。消费者可能会倾向于先购买硬件,然后再决定选择哪家运营商。简单地说,运营商将开始失去控制,这必然会让他们感到担忧。

值得注意的是,苹果已经在 Apple Watch Series 3 中使用了 eSIM 技术,因此,将这种芯片应用到最新款 iPhone 手机上也不是不可能。

Polar旗下可穿戴设备App出现漏洞:泄露用户位置

据美国科技网站The Verge援引欧洲媒体报道,法国可穿戴智能设备公司Polar提供的App在隐私设置上存在漏洞,导致App中有一项功能会泄露用户的位置信息。目前该公司已停止相关服务。

Polar是一家法国公司,它生产多种智能设备,包括Polar Balance智能体重秤、M600智能手表、M430跑步手表,所有这些设备都可以连接到公司的健身App,也就是Polar Flow。

Explore是Polar Flow的一项功能,它相当于用户的活动地图,可以追踪全球许多用户的活动数据。如果用户决定通过Explore公开分享数据,其他人就能看到他的所有锻炼信息。用户也可以将信息设置为私有,这样一来,Polar服务就不会与第三方App分享信息。

调查发现,恶意使用者可以利用Polar地图数据确定敏感军事基地的位置,而且还可以获取用户的名字、地址信息。在Explore地图中可以看到用户的活动,甚至包括士兵的活动,这些士兵在伊拉克打击ISIS。

周五时,Polar发表声明,对自己的疏忽表达歉意,它还说公司已经在Flow App中停用Explore功能,并说之前没有泄露过数据,公司称:“我们正在分析最佳选择,希望能让Polar客户继续使用Explore功能,同时还会采取其它措施提醒客户,让他们不要公开分享与敏感位置有关的GPS文件。”

利用TurniBit开发板DIY一套自动窗帘模拟系统

一、准备工作

TurnipBit 开发板 一块

下载数据线 一条

微型步进电机(28BYJ-48) 一个

步进电机驱动板(ULN2003APG) 一块

光敏传感器 一个

TurnipBit 扩展板 一块

接入网络的电脑 一台

在线可视化编程器

二、步进电机的介绍

本次实验采用的是28BYJ-48 四相八拍电机,电压DC5V~12V。

24BYJ48名称的含义:

24:电机外径24mm

B:步进电机中步字的拼音首字母

Y:永磁中永字的拼音首字母

J:减速的减字拼音首字母

48:四相8步

工作原理

步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。


28BYJ-48 步进电机参数表

上表中启动频率≥550 P.P.S(每秒脉冲数),意思是要想正常启动,需要单片机每秒至少给出550个步进脉冲。那么每一节拍需要持续的时间就是1S/550≈1.8ms,所以控制节拍刷新的速率应大约1.8ms。

驱动原理

当连续不断的给电机发送控制脉冲时,电机就会不断的转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,对应转子就会转过一定的角度(步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。

四相步进电机可以在不同的通电方式下运行,常见的通电方式:

四拍(单相绕组通电):A-B-C-D-A…

双四拍(双相绕组通电):AB-BC-CD-DA-AB-…

八拍: A-AB-B-BC-C-CD-D-DA-A…

三、器件的连接

1、将步进电机白色接头插到驱动板对应的座子上。

2、TurnipBit对应插入扩展板,记住带有LED灯和按键的一面朝向扩展板带有针脚的一侧。

3、将驱动板与TurnipBit扩展板连接起来。接线图如下:

4、将光敏传感器与TurnipBit扩展板连接起来。接线图如下:

四、开始编程

1、之前的教程一直都是使用拖拽可视化编程,这种方式可以快速让零基础小伙伴入门,但是在实际项目或工作中,还是要直接敲代码的。今天就给大家介绍一下TurnipBit的可视化编程器的另一项功能–代码编程。

之前看过编程的小伙伴,不难发现,一打开编辑器首先进入的就是代码编程器界面。如下图:

2、接下来用代码实现对步进电机的控制和光照数据的采集。

当光照变弱时,步进电机顺时针旋转一周,模拟关闭窗帘的操作;

当光照变强时,步进电机逆时针旋转一周,模拟打开窗帘的操作;

完成源代码:

# 在这里添加Python代码
from microbit import *
  Pin_All=[pin5,pin8,pin11,pin12]
  #转速(ms) 数值越大转速越慢 最小值1.8ms
speed=5
  STEPER_ROUND=512 #转动一圈(360度)的周期
ANGLE_PER_ROUND=STEPER_ROUND/360 #转动1度的周期
  isOpen=False#表示窗帘的状态 True:打开 False:关闭
  def SteperWriteData(data):
    count=0
    for i in data:
        Pin_All[count].write_digital(i)
        count+=1
def SteperFrontTurn():
    global speed
    SteperWriteData([1,1,0,0])
    sleep(speed)
      SteperWriteData([0,1,1,0])
    sleep(speed)
      SteperWriteData([0,0,1,1])
    sleep(speed)
    SteperWriteData([1,0,0,1])  
    sleep(speed)
def SteperBackTurn():
    global speed
    SteperWriteData([1,1,0,0])
    sleep(speed)
    SteperWriteData([1,0,0,1])  
    sleep(speed)
    SteperWriteData([0,0,1,1])
    sleep(speed)
      SteperWriteData([0,1,1,0])
    sleep(speed)
  def SteperStop():
    SteperWriteData([0,0,0,0])
def SteperRun(angle):
    global ANGLE_PER_ROUND
      val=ANGLE_PER_ROUND*abs(angle)
    if(angle>0):
        for i in range(0,val):
            SteperFrontTurn()
    else:
        for i in range(0,val):
            SteperBackTurn()
    SteperStop()
while True:
    light=pin0.read_analog()#读取光敏传感器传递过来的模拟量数据
    #数值越大说明光照度越小
    if light>400:
        if isOpen:
            isOpen=False
            SteperRun(-360)#光照小于设定的值,关闭窗帘
    else:
        if isOpen==False:
            isOpen=True
            SteperRun(360)#光照大于设定的值,打开窗帘

* 本文作者:bodasister,来自FreeBuf.COM