特斯拉Model 3 Key Card里的黑科技

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45412507/article/details/96241153

特斯拉Model 3给用户提供了三种解锁电动车的姿势:

  • 遥控钥匙(可选,需付费购买)

  • 手机APP蓝牙解锁 以及

  • Key Card(钥匙卡片)

 

其中Key Card作为手机蓝牙钥匙的备份方案(以应对手机没电了/忘带了/APP故障/车机蓝牙故障等上不了车的窘境),相比传统的遥控钥匙具有成本低、便于携带等优点。

 

如下图,使用Key Card进车的步骤为:把卡片放在车门的B柱上,解锁进车后,再将卡片置于中间的杯架上(检验钥匙在车上)方可启动车辆。

 

640?wx_fmt=jpeg

 

640?wx_fmt=jpeg

 

在中控屏的设置界面特斯拉提供了钥匙管理的功能:用户可以自行添加可以解锁车辆的卡片以支持多辆车使用同一卡片,或者删除卡片以防止丢失的卡片导致车辆失窃。

 

640?wx_fmt=png

 

Model 3的Key Card这么酷("hei")到底用了什么黑科技呢?不少提到车的用户已经迫不及待的尝试用各种方式去探个究竟了。

 

Jerry Rig Everything DIY频道的博主Zack Nelson在YouTube上传的一个视频,他用刀片损坏了一张卡片发现里面的线圈后,用一罐丙酮水花了一个多小时把另一张卡片给融了。如下图,可以发现脱掉塑胶外套的Key Card是个带有IC集成芯片和线圈的非接触式智能卡。

 

640?wx_fmt=jpeg

 

640?wx_fmt=png

 

另外一侧,特斯拉在FCC上注册的无线零部件资料显示(https://fccid.io/2AEIM-1089774/),B柱上的Key Card 感应器工作在 13.56MHz 频率,电路板上其相关芯片型号显示为“AS3915”,为ST的一款车规级RFID高频读卡器以及NFC发起端。

 

640?wx_fmt=jpeg

 

640?wx_fmt=png

 

NFC由RFID(Radio-Frequency Indentification)的基础发展而来,无线工作频段与RFID的高频段HF 13.56MHz一致,NFC标准的制定兼容了这个频段的RFID卡产品。如下图NFC的协议栈中,NFC论坛标准(黄色方块)定义了上层的4种类型的NFC标签涵盖了原RFID HF卡相关产品的部分协议。

 

640?wx_fmt=png

 

另一位一心想要把Model 3的Key Card芯片植入到自己左手上的女工程师Amie DD(https://www.amiedd.com)尝试对自己的Model 3卡片的RF信息进行了读取,得到了以下信息:

 

Tag Type: ISO 14443-4 NXP IBM JCOP

Technology: ISODep, NfcA

Serial Number: *****

ATQA: 0x0048

SAK: 0x20

Global Platform Information:

  • Java Card version 2.2

  • Global Platform version 2.1.1

  • GP Secure Channel Protocol: 03 option 10

  • Max. length APDU data field: 255 bytes

  • Global Platform card manager FCI:0x6F108A000000151000000A5049F6501ff

Technologies supported

  • ISO/IEC 7816-4 compatible

  • ISO/IEC 14443-4 (Type A) compatible

  • ISO/IEC 14443-3 (Type A) compatible

  • ISO/IEC 14443-2 (Type A) compatible

Detailed Protocol Information

  • ID: 04:25:2E:6A:F5:51:80

  • ATQA: 0x4800

  • SAK: 0x20

  • ATS: 0x0578779102

  • Max. accepted frame size: 256 bytes (FSCI: 8)

  • Supported received rates: 106, 212, 424, 848kbit/s(DR: 1,2,4,8)

 

如上信息,可以看到这是一张兼容NFC A(14443-4)协议的基于JCOP(Java Card Open Platform)的智能卡。

 

JCOP是2006年IBM发起的一个用于运行Java Card程序的智能卡操作系统,2007年转由NXP负责开发支持。Java Card是运行在智能卡上的Java Applet小程序,仅提供非常少量的Java编程语言特性支持,其主要设计目标是可移植性(运行在不同的智能卡上)和安全性。JCOP支持常用的对称加密算法(DES,3-DES,AES等)和非对称加密算法(RSA,ECC)以及签名和密钥生成等服务。JCOP智能卡目前广泛被用于SIM卡,银行信用卡等对安全要求较高的卡片上。

 

智能卡与读卡器之间按支持的标准协议通讯,如ISO/IEC 7816 APDU (Application Protocol Data Unit) 在智能卡场景下定义了两种Command和Response两种数据单元。JCOP上运行的Java Card Applet是一个请求响应式的状态机,接收到输入请求命令,处理后输出响应数据。

 

640?wx_fmt=png

 

640?wx_fmt=png

 

JCOP智能卡具有安全存储和一定的算力为卡片提供了可编程能力,使得卡认证自行定制动态认证算法和使用非对称加密等技术成为可能。相对于仅有存储功能的卡片或者使用固定加密算法的卡片,智能卡中存储的数据仅可以通过芯片上的程序访问,提供了更高的安全性。使用了智能卡的Model 3 Key Card 可以使用非对称加密和自定义认证算法来确保认证过程的安全性以及卡片无法轻易被复制。

 

640?wx_fmt=png

 

End

 

更多干货推荐

 

 

关注我们

 

640?wx_fmt=jpeg

公众号ID:YummyCookiePuff

曲奇泡芙

 

展开阅读全文

Yellow Card and Red Card

09-17

FIFA has changed its rule on yellow-card amnesties at the World Cup 2010 to reduce the chances of big name players missing out on the July 11 final.nnGermany's Michael Ballack in 2002, Italy's Alessandro Costacurta in 1994 and Argentina's Claudio Caniggia in 1990 are the best-known players to have missed World Cup finals after picking up second yellow cards in semis.nnSo for this tournament, world soccer's governing body has shifted its usual amnesty for yellow cards from the end of the first round until after the quarter-finals instead.nnThat means players would only miss the final if they receive two yellow cards -- or of course a straight red -- in a semi-final game, rather than in the past when they may have carried one yellow card going into a semi.nn"FIFA simply said we want to give the best players a chance to play in the final," spokesman Marius Schneider said.nn"The discussion first came up when Ballack was ruled out."nnEngland fans remember the old rule well because of Paul Gascoigne's tears during their semi-final in Italy in 1990.nnAlthough they eventually lost to Germany, the always emotional Gascoigne wept on the pitch when he received a yellow card that would have ruled him out of the final.nnRed card rules remain the same.nnA red carries at least a one-match suspension and possibly more if the disciplinary committee considers the offence particularly serious. So, in theory, a player red-carded even before a semi-final could also miss the final.nnIn this question, you should know the following rules:nnA player can get yellow card or red card only when he is on the pitch.nIf a player gets 2 yellow cards in one match, he must get a red card immediately, in this situation, it can be regarded as the player only gets 1 red card directly.nWhenever a player gets a red card, he should leave the pitch immediately.nIf somebody gets a red card, he must miss one match.nBesides a red card, if a player gets 2 yellow cards accumulatively (can be received in different matches), he will also miss one match.nAll the yellow cards must be recorded, except a player gets 2 yellow cards in one match.nIf the player has to miss a match because of the 2 accumulative yellow cards, the record of these 2 yellow cards will be erased.nIf a player gets both kinds of cards in the same match, the number of suspension, which results from the accumulation of all cards he has received, will be cumulative.nAll of the punishment of suspension will be executed immediately from the next match.nThe team who got championship played a total of 7 matches (1~3 indicate the first round) in the World Cup 2010.nIn this world cup, no offence is considered particularly serious.nThe change of rules on yellow-card amnesties made by FIFA, namely shifting amnesty for yellow cards from the end of the first round until after the quarter-finals instead, is practical.nNow we only consider the players in the champion team. You should output which one misses which match. In addition, your program should ignore the redundant wrong information in the input (in the order of date and time of matches, previous data is more reliable).nnInputnnThere are several test cases (<=100). You should process to the end of input. There will be several matches for each test case. The first line is "Match i", i (1 <= i <= 7, an integer) indicates the match number. Then, some lines follow, indicating which players get cards in this match in time order with the following form: "player_number card" (0 <= player_number <= 99, an integer, card = "yellow" or "red"). After each case, there is a line "END". Keep in mind that in each line, all different data are separated by one blank.nnOutputnnFor each case, you should print which one misses which match. As the sample shows, you should output several lines, each of which is "match_number player_number". Your should print them order by match number first, then order by player number. There is only one blank between match_number and player_number. You also need to output a single line "#" after each case.nnFor each case, you should print which one misses which match. As the sample shows, you should output several lines, each of which is "match_number player_number" (There is only one blank between match_number and player_number). Besides, please sequence the lines accroding to the match_number (from small to large) first; for lines with same match_number, sequence them according to the player_number (from small to large). You also need to output a single line "#" after each case.nnSample InputnnMatch 1n1 rednENDnSample Outputnn2 1n# 问答

没有更多推荐了,返回首页