当前位置:  编程技术>移动开发
本页文章导读:
    ▪手机NFC通讯的安全车钥匙        手机NFC通信的安全车钥匙SmartKeys for Cyber-Cars:Secure Smartphone-based NFC-enabled Car Immobicizer 手机NFC通信的安全车钥匙 1概述 如今,智能手机的高性能平台,提供广泛的功能,并已成为我们日常生活中.........
    ▪ fedora15停安装QT/E搭建        fedora15下安装QT/E搭建 移植QT/E到ARM设备(一) 我本次移植已有的条件:fedora15,已搭建好交叉编译环境,nfs服务器,以及qt的安装:   移植开始: 一、编译QT/E环境(有的文件如果宿主机.........
    ▪ 关于统制其他音乐关闭的方法       关于控制其他音乐关闭的方法 对于多媒体的application经常有需要禁止其他多媒体声音的需求。 在网上搜索了相关的方法:   Intent i = new Intent("com.android.music.musicservicecommand"); i.putExtra("command", .........

[1]手机NFC通讯的安全车钥匙
    来源: 互联网  发布时间: 2014-02-18
手机NFC通信的安全车钥匙

SmartKeys for Cyber-Cars:Secure Smartphone-based NFC-enabled Car Immobicizer

手机NFC通信的安全车钥匙

1概述

如今,智能手机的高性能平台,提供广泛的功能,并已成为我们日常生活中不可分割的一部分。日益增加的计算能力和存储能力,庞大的数量和不同种类的应用程序在应用商店。新的通信接口,近场通信(NFC),集成在智能手机中,为电子tickting、支付和访问控制提供许多部署的可能性。在这种情况下,一个新兴的趋势是集成的智能手机置身于现代汽车的系统和应用程序之间,如接入控制解锁,配置和启动车辆,控制车辆内部环境等。NFC是非常适合于这样的应用场合的,由于其数厘米的通信范围(NFC接口)提供用户的基本保证物理接近。

 

1.1设计模型


上图实现了车钥匙的功能:

优点:

l  安全,每一个环节都通过加密认证来实现开锁功能,充分的保证钥匙安全。

l  方便,不用携带车钥匙,只要拿着拥有NFC的手机,靠近汽车即可。

l  便捷,对于租车公司、车队的管理,只需要授权给员工,防止不法人员私配钥匙。

l  对于汽车拥有者可以很轻松的管理自己的汽车。

l  如果手机丢了,车主也无需担心汽车会丢。

缺点:

²  每个车要安装NFC-enabled固件

²  手机要携带NFC-enableddevice,朋友的手机也要携带,通用性较差。

Smart Keys for cyber-Cars的安全问题一直备受人们的怀疑,到底它能不能保证car的绝对安全,所以提出了本文,系统模型如图1所示。

既然我们提出防攻击的SmartKeys for cyber-Cars模型,那么我们首先要知道我们的对手是谁,我们怎样一个一个的解决掉。

 

1.2攻击模型

我们的主要目的是:阻止任何没有认证的客户端进行汽车内。

1 通信通道截获员

M-C,M-O,O-U,O-C,U-C之间都可能被监听。模型如图2所示。


2 手机上的其它软件对数据的攻击

3 对汽车上携带的NFC固件设备进行渗透和攻击

1.3要实现的目标

设计Smart Keys for Cyber-Cars的目标:

O1: O和U成功解锁,并且非常快速,提高用户体验。

O2:M能远程授权O,也能废除O。

O3:O能远程分权U,也能废除U。

O4: 很高的安全性。


 

2系统设计 2.1系统设计构架


 

我们的安全性体系结构,Figure 3中所示。分为两个独立的世界:一个不受信任的主机H和可信执行环境S执行环境的移动平台。H运行在移动设备上,而TrEE S建立安全硬件上。这种安全硬件可以嵌入到智能手机或连接通过标准的通信接口,向所述移动设备,它不需要任何更改商品平台。

         无论是TrEE S还是Host H都是要通过TrEE Mgr来与SecureStorage进行访问的。效果图如Figure4所示。


 

2.2Protocol的设计

这里protocol过程总共分为了七个部分:

(1)      初始化工作

(2)      O用户注册

(3)      Token的发行

(4)      O解锁Car C

(5)      O分配权限给U

(6)      U解锁Car C

(7)      M废除O,O废除U用户

 

 

2.2.1 初始化工作

1 Smartphone初始化TrEE

Smartphone安装SmartTokenSecureapp,使用SmartTokenSecure初始化SecureStorage,这里使用{(skp,pkp), certp证书},见图4。这里只有Smartphone知道与skp对应的公钥pkp。

 

2 Immobilizer NFC of Car端的初始化

Car C端装入[KCAuth, KCEnc]都会在协议验证中使用,由M管理机构完成。这里的KCAuth用来验证,KCEnc用来加密。

2.2.2 O用户注册

O在买车之前,注册自己的手机平台。M管理机构检查P上的证书certp,生成[KO,MAuth , KO,MEnc],用于发行协定处理。然后,M使用SmartTokenSecureapp,利用公钥pkp对生成的[KCAuth , KCEnc]进行加密处理,把对应的密文由SmartTokenSecure存储到SecureStorage中。

 

2.2.3 Token的发行

         M生成[KOAuth, KODel],KOAuth用来解锁Car,KODel用来分配权限给U。

σM:=MAC(KCAuth ; IDO , KOAuth, KODel)

TO  :=Enc (KCEnc  ; IDO , KOAuth, KODel, σM)

KOAuth, KODel ,TO 存入SecureStorage中,这里的[KOAuth, KODel]是通过[KCAuth, KCEnc]解析出来的。

2.2.4 O解锁Car C


 

 

2.2.5 O分配权限给U

         O生成KUAuth,2.2.3中O有[KOAuth , KODel]两个密钥,KOAuth用来解锁Car,KODel用来分配权限给U。

σO:=MAC(KOAuth ; IDU , KUAuth)

TU  :=Enc (KODel  ; IDU , KUAuth,σO)

将生成的TU 通过安全通道传递给U的SmartTokenSecureapp。

2.2.6 U解锁Car C

         将TU,TO 传递给C,C通过KCEncKCAuth 在TO中解码出KODel,然后再TU解码出KUAuth 。验证[σO ,σM]。

σM:=MAC(KCAuth ; IDO , KOAuth, KODel)

TO  :=Enc (KCEnc  ; IDO , KOAuth, KODel, σM)

2.2.7 M废除O,O废除U用户

         这里没有交代。


 

3安全硬件

SR1:安全存储。安全敏感的数据不应该访问不可信的软件组件,而存储在该平台上。

SR2:隔离。操作上安全敏感数据的系统组件必须是可信的,并从隔离不受信任的组件。此外,它必须确保安全敏感操作,如验证和委派,被触发由用户而不是恶意软件。此外,先进的使用情况下,如代表团和基于策略的访问控制,依靠安全关键用户输入,如密码和用户定义的访问控制策略。因此,对于这些使用情况下,我们需要一个额外的安全要求:

SR3:安全用户界面。用户(车主O或汽车用户U)应该能够安全地进行通信信任的组件。









    
[2] fedora15停安装QT/E搭建
    来源: 互联网  发布时间: 2014-02-18
fedora15下安装QT/E搭建
移植QT/E到ARM设备(一)

我本次移植已有的条件:fedora15,已搭建好交叉编译环境,nfs服务器,以及qt的安装:

 

移植开始:

一、编译QT/E环境(有的文件如果宿主机上没有的话自己建立文件夹):

#cd /home/sprife/qt4/for_arm/

 

首先将qt-embedded-linux-opensource-src-4.4.0.tar.bz2 和tslib-1.4.tar.bz2放到文件夹for_arm下面


 

#tar xjvf qt-embedded-linux-opensource-src-4.4.0.tar.bz2
#tar xjvf tslib-1.4.tar.bz2

修改脚本文件vi ./tslib-1.4/buid.sh

#############################################

#/bin/sh
export CC=arm-linux-gcc
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache
-prefix=$PWD/../tslib1.4-install
make
make install

#############################################

#./build.sh

#.cd .. 

#cp -a tslib1.4-install/lib/* qt-embedded-linux-opensource-src-4.4.0/lib/

#cp -a tslib1.4-install/include/ts* qt-embedded-linux-opensource-src-4.4.0/include/ 

#cd qt-embedded-linux-opensource-src-4.4.0

#./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 16 -little-endian -qt-mouse-linuxtp -qt-mouse-tslib -I/home/sprife/qt4/for_arm/tslib1.4-install/include -L/home/sprife/qt4/for_arm/tslib1.4-install/lib -prefix /mnt/nfs/Trolltech/qt-embedded-4.4.0

一定要注意:上面这些配置一定要看清楚了,因为已配置就是=是三四个小时(我相信你不会愿意做两次的)

需要注意:/home/sprife/qt4/for_arm/这个目录是你的解压文件位置,/mnt/nfs这个是你开发板的挂载目录,这个Trolltech/qt-embedded-4.4.0是你自己在你宿主机上的挂载目录下需要建立的文件夹。

################这里你会经过漫长的四个小时################################################

 

当配置完成后

#make

#make install

若上面的操作没有错误则进行下面的工作(若上面有错,一定要找出错误再做下面的操作,否则,你会浪费很多时间)

#cd /tmp/share                 这是我宿主机的挂载目录,你可以根据自己的需要建立挂载目录

#mkdir Trolltech
#cd Trolltech
#mkdir qt-embedded-4.4.0
#cd qt-embedded-4.4.0

 

#########################################

#cp /home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/
lib/ ./ -arf
#cp /home/sprife/qt4/for_arm/tslib1.4-install/etc/ ./ -arf
#cp /home/sprife/qt4/for_arm/tslib1.4-install/bin/ ./ -arf

 

//在minicom中挂载宿主机的文件系统

#mount -o nolock,rsize=4096,wsize=4096 192.168.1.12:/tmp/share  /mnt/nfs

成功以后:

#cd /mnt/nfs/Trolltech/qt-embedded-4.4.0

#vi ep.sh

export QTDIR=$PWD
export LD_LIBRARY_PATH=$PWD/lib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_PLUGINDIR=$PWD/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=$PWD/etc/ts.conf
export POINTERCAL_FILE=$PWD/etc/ts-calib.conf
export QWS_MOUSE_PROTO=tslib:/dev/event0
export TSLIB_CALIBFILE=$PWD/etc/ts-calib.conf
export LANG=zh_CN
export QWS_DISPLAY="LinuxFb:mmWidth160:mmHeight120:0"

保存退出

#./ep.sh

 

执行触摸屏校准程序:

#./bin/ts_calibrate

这里会出现很多错误:

我遇到的:

错误一:

./bin/ts_calibrate: error while loading shared libraries: libts-0.0.so.0: cannot y 

解决办法:

利用echo $LD_LIBRARY_PATH,发现环境变量不对。重新执行export LD_LIBRARY_PATH=$PWD/lib

 再执行#./bin/ts_calibrate

错误二:

ts_open: No such file or directory

错误分析:首先你需要查看开发板的/dev下面的lcd设备结点,有的是event0有的是fb0,所以你需要重新

export TSLIB_TSDEVICE=/dev/event0  或者 export TSLIB_TSDEVICE=/dev/fb0(如果你要将这个修改到上面创建的ep.sh脚本下面)

那么最好再执行一下:

#env   查看export TSLIB_TSDEVICE=/dev/event0或者 export TSLIB_TSDEVICE=/dev/fb0是否有若没有最好使用export命令直接在命令行执行。

 

错误三:Couldnt open tslib config file: No such file or directory ts_config: Illegal seek

解决:#export TSLIB_CONFFILE=$PWD/etc/ts.conf

 

错误四:

Couldnt load module pthres
No raw modules loaded.
ts_config: Success

 

解决办法:#export TSLIB_PLUGINDIR=$PWD/lib/ts

 

我总共出现了上面几个错误:如果你出现不同的错误请参考:http://blog.csdn.net/xiaoyangger/article/details/5369961

完了之后执行:./bin/ts_calibrate

##############################输出信息#########################

xres = 320, yres = 240                                                                               
selected device is not a touchscreen I understand                                                    
Took 10 samples...                                                                                   
Top left : X = -1073360184 Y = -1073618118                                                           
Took 10 samples...                                                                                   
Top right : X = -1073360184 Y = -1073618118                                                          
Took 10 samples...                                                                                   
Bot right : X = -1073360184 Y = -1073618118                                                          
Took 10 samples...                                                                                   
Bot left : X = -1073360184 Y = -1073618118                                                           
Took 10 samples...                                                                                   
Center : X = -1073360184 Y = -1073618118                                                             
1.558322 -0.006303 0.006302                                                                          
1.568846 -0.004712 0.004710                                                                          
Calibration constants: 102126 -413 412 102815 -308 308 65536   

移植QT/E(二)到ARM板

出现上面QT/E(一)最后问题:

没有加载触屏驱动程序,我的微处理器是S3C2410,因而加载驱动时也要加载相对应的驱动:

insmod  s3c2410_ts.ko显示结果如下:

s3c2410 TouchScreen successfully loaded                       
input: s3c2410 TouchScreen as /class/input/input0

 

驱动加载成功。。。。。。。

这里还需要之前所配置的环境变量:

export TSLIB_TSDEVICE=/dev/event0

export QWS_MOUSE_PROTO=tslib:/dev/event0

这里驱动可以提前加载进去内核中,这里就不会配置两次环境变量了

测试./bin/ts_cablirate

校准。。。。。。。。。

QT/E移植三:测试

QT/E移植三:测试 

测试的时候会出现下列问题:
找出宿主机交叉编译目录下的下列文件,若没有,用更目录下的文件

解决方法:
find / name  "libz.so.1"
find / name  "librt.so.1"
find / name  "libstdc++.so.6"
find / name  "libgcc_s.so.1"

当前目录是/tmp/share/t../q../
cp /lib/libz.so.1 ./lib/
cp opt/usr/local/arm/3.4.1/arm-linux/lib/libgcc_s.so.1 ./lib
cp /opt/usr/local/arm/3.4.1/arm-linux/lib/librt.so.1 ./lib
cp /opt/usr/local/arm/3.4.1/arm-linux/lib/libstdc++.so.6 ./lib


./digitalclock -qws
结果是一个时钟


写一个程序编译然后挂载开发板端到直接运行程序:步骤如下
在/root/.bash_profile里声明
export QLINUXG=/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0/mkspecs/qws/linux-arm-g++
将写的文件放到一个目录下:testqt-x11
#/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0
/bin/qmake –project
////////////上面生成一个.pro文件
#/home/sprife/qt4/for_arm/qt-embedded-linux-opensource-src-4.4.0
/bin/qmake –spec $QLINUXG -o Makefile
/////////上面需要指明linux-arm-g++的具体位置,因为直接qmake不能找到它/////////////
#make
//////////////上面生成一个可在开发板上执行的二进制文件,可直接放到开发板上运行


    
[3] 关于统制其他音乐关闭的方法
    来源: 互联网  发布时间: 2014-02-18
关于控制其他音乐关闭的方法

对于多媒体的application经常有需要禁止其他多媒体声音的需求。

在网上搜索了相关的方法:

 

Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
sendBroadcast(i);
后来发现这个方法只能解决部分问题,对于那些不支持这个Intent的APP及收音机等是不起作用的。

 

有一个根本性解决问题的方法,就是获取声音播放的硬件的焦点(个人理解),从而使其它APP停止播放。因为要发出声音肯定要硬件支持的。这里关键是使用AudioManager类。具体代码如下:

 

			AudioManager mAudioManager = (AudioManager) context
					.getSystemService(Context.AUDIO_SERVICE);
			if (mAudioManager != null) {
				try {
					mAudioManager.requestAudioFocus(null,
							AudioManager.STREAM_MUSIC,
							AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
				} catch (Exception ex) {

				}
			}
 注意看requestAudioFocus函数第三个参数的使用,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT表示临时获取音乐播放硬件焦点。
具体说明可以参考:官方文档 

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
HTML标签参考手册 iis7站长之家
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3