专栏名称: 前海征信中心
深圳前海征信中心是独立的第三方商业征信机构。我们致力于为消费者普及信用知识、培养信用意识,也帮助广大中小金融机构提升风险管理和信用评估专业能力。
目录
相关文章推荐
ZOL中关村在线  ·  这次能抗摔吗?iPhone 16 Pro ... ·  2 天前  
EETOP  ·  Class E 功率放大器简介 ·  3 天前  
51好读  ›  专栏  ›  前海征信中心

全错了!密码并不是越复杂越安全|零道书院

前海征信中心  · 公众号  ·  · 2017-08-17 18:03

正文


让我们想象一下,如果你的手机没电了,你要借用下别人的手机来登录某个网站。但是呢,你又不想在别人的手机上输入密码或者进行指纹操作,不想在别人的手机上留下任何信息,万一这个借你手机的人不怀好意怎么办?


当当当当……小编有办法,哈哈✔



不过这里先插播两条新闻


近日北京地铁支持全面刷手机的消息很火热。这意味着北京居民只需要手机具有 NFC 功能且开通手机一卡通,就能用手机刷卡搭乘地铁。出门又可以少带一样东西啦!坏消息是,苹果手机暂时还没法用,因为苹果公司在中国地区尚未向公共交通领域开放 NFC 功能。不过还有一个好消息,就是苹果可能在 iOS11 的版本里面开放NFC。


 iOS11 的 NFC 的火热,相信好多人都在等着吧。然后,小伙伴们一起组队去刷 iPhone 公交卡,再也不用嫉妒安卓的小伙伴了


2014 年苹果就已在 iPhone 6 和 iPhone 6 Plus 添加了 NFC 硬件,以支持 Apple Pay 移动支付系统。但是苹果并未对外开放第三方 App 对 iPhone 的 NFC 控制器访问的 SDK。直到 iPhone 7 和 iPhone 7 Plus 才开始支持读取 NFC 的 NDEF 标签。只有能读取 NFC 的 NDEF(数据交换格式)标签,才能实现 NFC 设备之间的通信。因此,即使苹果在 iOS 11 中提供了 Core NFC 给第三方 App 开发者,但是升级 iOS 11 后的设备中也只有 iPhone 7 和 iPhone 7 Plus 能在第三方 App 得到 NFC 的扩展,更老版本的 iPhone 依然只能刷 Apple Pay



2003年比尔·伯尔在为美国政府工作期间,写下了关于密码安全的“圣经”。他建议在密码中使用大写字母、数字和符号,这样密码就比较安全。


正是由于听从了他的建议,公司和网站开始要求人们设置非常复杂的密码,如 ppiyr#101 ,而 IT 部门也会要求员工每90天重置一次密码。事实上是,这些密码并没有如预想的那样安全。


如今已经退休的比尔·伯尔对美国《华尔街日报》说:“我现在对自己此前的大部分工作感到后悔,其实我完全搞错了。”他认为,定期更换密码的建议被误解了,由于大多数人只会换掉其中一个字符,比如把“username1”换成“username2”,这根本防不了黑客。


伯尔撰写的[美国国家科学和技术研究所密码指南]最近经过了修改,新指南建议人们使用长但容易记住的“密词”,不必强调特殊字母或数字。


horsecarrotsaddlestable”(“马胡萝卜马鞍稳定”)这样的密码比“P@55w0rd”要安全多了。


好了,说正事。


假如,你要用别人的手机登录某个网站,嗯,恰好,你需要的信息的那个 app 或者网站,是支持 NFC 登录的,恰好这个手机也支持 NFC 。那么,你只要掏出你的 NFC 物理识别卡,就可以直接登录这个 app,无需输入任何东西。是不是很方便啊~~~


又假如,你是一个运维人员,突然之间,接到了领导的电话,说服务器现在怎么不能访问了,这时候你只需打开手机,将物理卡靠近手机,就能完成服务器的认证,无需记住一大串的不好记的密码,造福了一大堆运维人员呢~~~


这也就是说,只要是需要输入密码的地方,我们都可以使用 NFC 来解决,免去了大家时不时要记住密码的麻烦。


接下来看一下在 iOS11 上,如何实现 NFC 的读写,然后看看 NFC 的读写是否可以用来做更多有趣的事情。


  • 预先准备


1、Xcode 9 Beta

2、iOS 11 device (iPhone 7 / iPhone 7 Plus)

在项目的  .entitlements 文件中,添加以下的 Key:

com.apple.developer.nfc.readersession.formats

NDEF

然后在苹果开发者网站中的  Provisioning Profile 添加 NFC Capability



  • Coding开始~

        import CoreNFC


//新建两个属性,会话和检测到的tag消息


private var nfcSession: NFCNDEFReaderSession!

private var nfcMessages: [[NFCNDEFMessage]] = []


//初始化会话

self.nfcSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false)


//描述NFC相关信息

self.nfcSession.alertMessage = "将NFC卡放在手机背后的顶部中间部分"


extension NFCTableViewController : NFCNDEFReaderSessionDelegate {

func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {

print("Error reading NFC: (error.localizedDescription)")

}

func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {

print("检测到NFC Tag:")

for message in messages {

for record in message.records {

print("类型格式: (record.typeNameFormat)")

print("内容: (record.payload)")

print("类型: (record.type)")

print("标识: (record.identifier)")

}

}

self.nfcMessages.append(messages)

}

}


  • 最后打印出来的消息应该是这样的:

       检测到NFC Tag:


  • 类型格式: NFC Well Known

  • 内容:google.com

  • 类型: 1 bytes

  • 标识:0 bytes


本文由 零道书院 原创




 关于“零道书院”  

我们是来自于中国平安集团旗下前海征信的fintech先锋团队。定期分享互联网金融的前沿技术,探讨热点专题。有料!有态度!欢迎关注。



 

  (资料来源:零道书院,图片来源于网络)


信用·让你我更好互联



看你靠不靠谱,点阅读原测分