?

Android系統的藍牙遠程控制研究※

2015-07-03 12:26陳鈺琨馬忠梅曾禮
單片機與嵌入式系統應用 2015年1期
關鍵詞:秘鑰加密算法藍牙

陳鈺琨,馬忠梅,曾禮

(北京理工大學 計算機學院,北京 100081)

?

Android系統的藍牙遠程控制研究※

陳鈺琨,馬忠梅,曾禮

(北京理工大學 計算機學院,北京 100081)

Android操作系統以開源、界面友好等特點在智能手機、智能手表等可穿戴設備中廣泛應用。設備之間通過藍牙通信進行信息的交互,為了實現遠程控制功能,需自定義藍牙數據結構,實現對普通數據信息和控制信息的區分。在實例中實現了Android手機之間遠程控制拍攝照片以及實時預覽圖像的功能。采用RC4和RSA混合加密方式對藍牙發送的數據進行加密,來保證發送數據的安全性。

遠程控制;藍牙;Android;加密;RC4;RSA

引 言

隨著科技的不斷發展,以及人們對于高科技產品的依賴,智能可穿戴設備逐步發展起來,并正在進入人們的日常生活。智能手表、智能眼鏡的問世為可穿戴設備的發展帶來了新的方向,Android系統正廣泛地應用于智能可穿戴設備、智能手機中。為了使可穿戴設備更好地與手機相互配合,滿足人們的需求,本文研究了通過藍牙遠程控制功能實現具有遠程控制功能的應用程序。由于通過藍牙傳送的數據能夠被追蹤竊取,發送數據的安全性就尤為重要,通過比較,本文采用RC4和RSA混合加密方式對發送的數據進行加密。

1 藍牙模塊設計

1.1 Android設備間建立藍牙連接

實現通過藍牙進行遠程控制[1],最基本的操作是要先建立設備之間的藍牙連接,Android SDK提供了功能完善的API,通過調用系統的API能夠完成搜索附近藍牙設備、返回遠程設備的硬件地址、建立藍牙連接、斷開連接等工作。藍牙連接的建立主要分為兩個步驟。

(1) 搜索附近藍牙設備

Bluetooth Adapter類中提供了本地藍牙適配器的接口,所有的藍牙交互都是從此API開始的,主要功能有開關藍牙設備、掃描藍牙設備、設置或獲取藍牙狀態值、獲取藍牙名稱、獲取藍牙Mac地址等。調用enable()打開本地藍牙,然后調用startDiscovery()搜索附近設備,將所有搜索到的藍牙地址存儲在列表中。通過獲得的遠程藍牙設備的地址,實例化一個藍牙設備的語句如下:

BluetoothDevice device =BluetoothAdapter.getRemoteDevice(address)

(2) 建立藍牙連接

建立藍牙連接過程中的兩個設備,分別充當了Server和Client。Server端通過UUID來創建一個BluetoothServerSocket,以收聽來自其他設備的連接請求。當有遠端設備發來建立連接的請求時,對請求進行響應從而實現藍牙的連接。在程序中使用如下語句:

BluetoothServerSocket mmServerSocket =

mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, Y_UUID_SECURE);

Client端使用第1步中實例化的藍牙設備BluetoothDevice,通過 UUID創建一個BluetoothSocket,發送連接請求,并與Server端建立連接,從而來實現數據的接收和發送。在程序中使用如下語句:

BluetoothSocket mmSocket =

device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);

Server端BluetoothServerSocket代表一個打開服務器套接字偵聽傳入的請求,類似于一個TCP SeverSocket,當連接建立成功后,調用BluetoothServerSocket接口的accept()方法,返回一個BluetoothSocket對象。BluetoothSocket代表一個藍牙套接字,類似于 TCP套接字,是應用程序的連接點,通過此接口可以實現藍牙數據的接收和發送。調用BluetoothSocket接口中的方法,得到輸入/輸出流,在應用程序中向輸出流中寫數據實現藍牙數據的發送,從輸入流讀取數據,實現藍牙數據的接收。

1.2 自定義藍牙遠程控制協議

Android系統上的藍牙連接過程通過1.1節中的兩步即可完成,在應用中藍牙使用僅限于數據的傳送,對于數據的內容并不關心。然而這并不能滿足用戶的需求,用戶更期望通過藍牙實現遠程控制功能[2]。當前藍牙發送的數據并沒有對內容進行考慮,僅僅是簡單的數據傳送,如果想實現藍牙的遠程控制,就需要自定義發送的數據結構??刂菩畔⒑推胀〝祿畔⒕ㄟ^藍牙在設備之間進行傳送,若想對控制信息和數據信息進行區分,就要在已有的發送數據的首部添加頭結點。設置頭結點占用1字節的存儲空間,作為控制位標識,用來標識傳遞信息的類型。1字節的頭結點最多可以標識出256種不同的信息類型,在現階段的使用過程中能夠滿足需求,如果控制類型增加,只需增加控制位的位數。

本應用程序實現了手機通過藍牙遠程控制另一部手機進行圖片預覽以及拍照功能[3],因此發送信息分為兩類:一類發送的是圖像的數據信息,在Android程序中定義控制位為“private static final byte DATA =(byte) 0”;另一類是拍照指令,在Android程序中定義控制位為“private static final byte TAKE_PHOTO = (byte)1”。

如果欲實現更多的控制功能,可以自定義更多的控制位類別,在程序中進行相應地響應。

當Sever端收到數據以后,對于數據的頭結點進行判斷。通過判斷控制位的類型來區分是數據信息還是控制信息,返回給主函數對其進行響應。如果接收到的數據包為數據信息,則調用圖像顯示功能,將接收的圖片顯示出來。如果收到的數據的是拍照指令,則可調用拍照功能模塊,將拍攝的照片進行存儲。

2 加密模塊設計

雖然自定義的藍牙數據結構滿足了人們通過藍牙遠程控制的需求,但也存在著一定的安全性問題。在實際生活中,環境比較復雜,無線傳輸的信號會被他人通過一些工具監測并且竊取。如果傳送的圖片信息被他人截取,用戶的隱私就會被輕易地泄露。然而這并不算最危險的,如果在程序中添加了很多控制信息,被他人截取并且掌握后,就會導致手機被他人控制,給用戶帶來更大的損失。

為了保證信息的安全性,需要對藍牙發送的數據進行加密操作。數據的加密一般要經過復雜加密算法來實現,然而對于手機而言,運算效率不是很高,而且若要實時預覽遠程設備采集到的數據,就意味著要在極短的時間內加密和解密大量的數據,那么加密算法的加密效率就更加關鍵。

4通過使用一種基于AES和RSA的混合加密算法來保證藍牙通信過程中的數據安全。AES算法以其在塊加密高效的特點應用于藍牙通信的數據信息加密上,RSA算法在秘鑰管理上比較有優勢,有很高的安全性,因此用來加密AES的秘鑰信息。

參考文獻5對RC4 和AES在設備CPU時間占用、內存消耗以及電池電量的消耗方面進行了分析對比,得出RC4更適合于大數據包的加密,而AES更適合于小數據包的加密。

圖1 數據加密過程

經過多方面的綜合比較,本文采用RC4和RSA混合加密的方式對數據進行加密。利用RC4對大數據包加密速度快的優勢,首先對數據使用RC4進行加密,由于RC4加密算法相對簡單,其安全性也存在著一定的風險,因此采用混合加密的處理方式對數據進行操作。使用RC4加密算法加密完數據信息后進行第二次加密——加密RC4的秘鑰信息。由于RC4秘鑰的長度比較短可以采用運算過程相對復雜,但是安全性較高的RSA加密算法。數據加密過程如圖1所示。

圖2 數據解密過程

加密的過程主要分為兩步:第一步,對于原始數據用RC4秘鑰來進行加密;第二步,對于RC4秘鑰使用RSA進行加密,以保證此秘鑰數據傳輸的安全性,降低信息被截取后RC4秘鑰內容被破解的風險。解密過程如圖2所示。

解密過程同樣分為兩個步驟:第一步當應用程序收到發送來的數據后,讀取RC4秘鑰部分,通過RSA的私有秘鑰進行解密,還原RC4秘鑰;第二步,使用RC4秘鑰對數據部分進行解密,還原出圖像信息。

掌握了RC4加密算法和RSA加密算法后,即可實現混合加密算法。對發送的數據進行混合加密,保證用戶數據的安全。

最終寫入藍牙輸出流中的數據主要包含3部分,如下所示:

數據長度RC4秘鑰數據信息

第一部分是數據長度。在Android程序中,為了將連續發送的圖片的信息的每一幀識別出來,需要在頭部添加一個數據信息長度,以便在數據被接收到后確定所要讀取的字節數。

第二部分是RC4秘鑰。RC4秘鑰是被RSA加密后的結果,能夠保證RC4的秘鑰被竊取后也無法直接使用,在當今計算機的運算效率下,還不能夠實現對RSA加密算法的破解。

第三部分是經RC4加密的數據信息。來自上層的應用程序欲發送的未加密數據進入此模塊后要進行RC4加密,信息中保存所有用戶操作的信息。這部分的數據長度根據情況來分配,長度信息由第一部分的數據長度進行記錄。如果是控制信息,信息長度會非常短;如果是圖片數據,信息長度會比較長。

3 藍牙遠程控制拍照程序設計

本程序是在基于Android操作系統的智能手機上構建的遠程控制程序,包括藍牙連接的建立、藍牙數據的編碼與發送、數據加密3部分,實現了通過手機實時顯示另一部手機端攝像頭采集到的數據,以及通過點擊拍照鍵控制手機進行照片的拍攝。藍牙遠程控制程序的流程圖如圖3所示。

圖3 藍牙遠程控制程序流程圖

3.1 藍牙連接建立

創建DeviceListActivity類用于藍牙設備的搜索,返回選擇的藍牙設備的名稱和地址。其功能流程略——編者注。

通過搜索設備功能可獲得周圍可見的藍牙設備信息,以列表的形式顯示所有搜索到的設備。用戶根據需要選擇所要連接的設備、DeviceListActivity類返回設備的名稱以及MAC地址。

3.2 藍牙數據編碼與發送

根據 DeviceListActivity返回的遠端藍牙設備的名稱和地址,調用Bluetooth API建立藍牙設備的連接,當連接建立完成后便進入到主功能模塊。

首先在onCreat()函數中完成參數的初始化工作,初始化發送標志位SendFlag=0,在此狀態下,應用程序處于接收數據的狀態。攝像頭停止采集圖像信息,不進行數據發送。接著初始化Button監聽事件,應用程序中定義了兩個Button,一個Button用來控制此Activity處于發送還是接收的狀態,另一個Button用來控制是否對拍照功能予以響應。

Activity處于發送狀態時,將Camera采集到的每一幀數據進行處理,由于圖片比較大,藍牙發送的數據速率是有限的,為了保證接收端收到的視頻圖像的連貫性,要對采集到的圖片進行壓縮處理??烧{用Android API中 Matrix的postScale()方法設置縮放比例,實現圖片的縮放。

接下來數據部分要添加信息頭,如果是拍照的控制信息,添加第1節中設定的TAKE_PHOTO(為數值1);如果是照片信息,添加DATA(為數值0)。通過添加信息頭,便實現了對于數據信息和控制信息的區分。最后,對數據進行加密。

3.3 數據加密

數據加密采用RC4與RSA混合加密方式,數據加密的流程如圖4所示。

在接收端,線程一直等待藍牙發送的數據,當讀取到數據時根據解密的方法依次去除加密信息。解密流程如圖5所示。

對于解密出來的數據,要對其分析判斷數據的類型,根據自定義的藍牙數據結構可知,數據的第一位為數據類型位。進行數據類型判斷的主要程序略——編者注。

圖4 數據加密流程圖

圖5 數據解密流程圖

通過以上3個步驟,便實現了遠程控制功能。在實際應用中,其中一部手機作為被控制端,實時地將照相機采集到的數據發送到另一部手機,控制端實時顯示接收到的圖像,當需要拍攝照片時,點擊拍照按鈕完成照片的拍攝,并將照片存儲起來。系統運行的結果如圖6所示,在圖中左側手機為被控制端,右側手機為控制端。右側手機能夠實時顯示左側手機采集到的圖像,并且能夠控制其進行拍照,拍攝的照片如圖7所示。

圖6 系統運行結果

結 語

本文實現了基于Android系統的藍牙遠程控制功能,大大地豐富了智能設備的功能。在數據傳送的過程中,使用了混合加密算法對數據加密,保證了用戶數據的安全和設備不被他人控制。本文中實現的遠程控制拍攝照片的功能可移植到手表端,核心程序部分均不需要改動,只需在程序顯示界面部分根據不同種類設備的分辨率進行相應地調整,便能實現通過藍牙進行遠程控制的功能。

圖7 被控制端拍攝到的圖片

參考文獻

[1] IBM Corporation.An Overview Of The Bluetooth Wireless Technology[J].IEEE Communications Magazine,2001(12).

[2] 周進波.基于Android系統藍牙開發的研究與實現[J].光學儀器,2013(2).

[3] 吳晶.Android 手機端遠程監控系統的設計與實現[D].上海:上海交通大學,2012.

[4] Komal Rege,Nikita Goenka.Bluetooth Communication using Hybrid Encryption Algorithm based on AES and RSA [J].International Journal of Computer Applications,2013(6).

[5] Prasithsangaree P,Krishnamurthy P.Analysis of Energy Consumption of RC4 and AES Algorithms in Wireless LANs[J].IEEE Communications Magazine,2003(8).

陳鈺琨、曾禮(碩士研究生),馬忠梅(副教授):主要研究方向為嵌入式系統和物聯網應用。

英飛凌為智能可穿戴設備保駕護航

英飛凌科技股份公司為Watchdata Technologies最新推出的“Sharkey”智能可穿戴設備提供增強型NFC安全元件。作為智能腕表或腕帶,“Sharkey”帶來了便捷的移動生活方式:購物時,它是安全的銀行卡;搭乘公共交通工具時,它是非接觸式車票;此外,它還具備個人運動管理功能。它是具備非接觸式支付和交通票務等功能的智能可穿戴設備。

英飛凌出品的增強型NFC安全元件家族可支持ISO14443 A/B、ISO18092標準,適用于非接觸式通信和財務安全功能。它已被成功部署在智能微型SD或SIM/UICC卡中,在常規手機上實現了NFC支付功能。歸功于其小巧的外形,它是適用于智能穿戴設備的最優解決方案,其杰出的設計可全面支持這種環境中要求的超小NFC天線。提供了最大500 KB的用戶存儲安全空間,以便用于動態多應用加載,這為系統廠商和服務提供商帶來了最大靈活性。為了提供可互通的交通票務解決方案,增強型NFC安全元件可支持CIPURSE開放式安全標準,并可兼容基于Mifare技術的交通票務系統。

Chen Yukun,Ma Zhongmei,Zeng Li

(School of Computer Science and Technology,Beijing Institute of Technology, Beijing 100081,China)

Android operating system has been widely used in smart phone,smart watch and other smart wearable devices,because it is open-source and user-friendly.Information is interacted between devices through bluetooth.To realize the remote control,this paper customizes a structure of bluetooth data,achieving distinction between ordinary data and control information.This paper designs an application that can use an Android-based phone to control another phone to take photos and real-time preview image.In order to ensure the security of transimission,data is encrypted by a hybrid encryption algorithm based on RC4 and RSA.

remote control;bluetooth;Android;encryption;RC4;RSA

TP393

A

士然

2014-08-24)

猜你喜歡
秘鑰加密算法藍牙
藍牙音箱的直線之美
ETC秘鑰國產化升級改造方案設計與實現
干細胞開啟未來大健康的“秘鑰” 專家與媒體面對面活動走進中源協和—山西省干細胞基因工程有限公司
簡單、易用,可玩性強Q AcousticsBT3藍牙音箱
適合自己的才是最好的 德生(TECSUN) BT-50藍牙耳機放大器
緊急:藍牙指尖陀螺自燃!安全隱患頻出
基于Unity 3D的產品秘鑰二維碼實現
HES:一種更小公鑰的同態加密算法
基于小波變換和混沌映射的圖像加密算法
基于二元多項式與中國剩余定理的多秘密分享方案
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合