大連財(cái)經(jīng)學(xué)院管理系,遼寧 大連 116622
當(dāng)今移動(dòng)設(shè)備應(yīng)用開發(fā)市場(chǎng)日益繁榮。隨著大數(shù)據(jù)、物聯(lián)網(wǎng)概念與移動(dòng)應(yīng)用開發(fā)的不斷融合,基于位置的服務(wù)(Location Based Services)成為移動(dòng)應(yīng)用開發(fā)的熱點(diǎn)。究其原因,首先,使用Google Map API、Baidu Map API 等類庫開發(fā)的移動(dòng)應(yīng)用,能夠給用戶提供在線地圖、實(shí)時(shí)交通、路線規(guī)劃、周邊服務(wù)等實(shí)用信息;其次,通過上述API 的定位功能,移動(dòng)應(yīng)用能夠記錄用戶的時(shí)空位置,從而為大數(shù)據(jù)應(yīng)用提供數(shù)據(jù)源,成為數(shù)據(jù)分析的金礦;最后,用戶雙方位置信息的交互,能夠滿足用戶的交流需求。
本文即研究用戶雙方移動(dòng)設(shè)備位置信息的交互方式。對(duì)于當(dāng)前的移動(dòng)設(shè)備來說,其是不能夠直接以點(diǎn)對(duì)點(diǎn)的方式交換位置信息的。解決的方案是在兩個(gè)移動(dòng)設(shè)備間加入一個(gè)中間層,作為信息交互的中介。移動(dòng)設(shè)備A 發(fā)送位置信息給中間層,移動(dòng)設(shè)備B 再從中間層獲取A 的位置信息。這個(gè)中間層通常由網(wǎng)絡(luò)服務(wù)器來完成,其優(yōu)點(diǎn)在于:一、當(dāng)前移動(dòng)設(shè)備均可以通過標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議訪問網(wǎng)絡(luò)服務(wù)器。二、網(wǎng)絡(luò)服務(wù)器可以提供大的帶寬,可以同時(shí)滿足大數(shù)量的移動(dòng)設(shè)備來進(jìn)行位置信息的交互。
在網(wǎng)絡(luò)服務(wù)器上運(yùn)行的服務(wù)程序,其實(shí)現(xiàn)方式主要由兩種:基于傳輸層的、使用編譯型語言開發(fā)與基于應(yīng)用層的、使用解釋型語言開發(fā)。第一種方式通常用C/C++等語言開發(fā),實(shí)現(xiàn)復(fù)雜,開發(fā)周期長(zhǎng);第二種方式使用PHP、JSP 等語言開發(fā),實(shí)現(xiàn)簡(jiǎn)單,能夠做到快速開發(fā)。
在用戶進(jìn)行位置信息交互的過程中,必須考慮信息安全,即用戶雙方的位置信息在信息交互過程中及交互結(jié)束后不被第三方所得知。一種傳統(tǒng)的位置信息交互方式是,用戶需首先在網(wǎng)絡(luò)服務(wù)器上注冊(cè)用戶名與密碼,用戶在交互信息前必須登錄系統(tǒng),并互相認(rèn)證為好友,才可以進(jìn)行位置交互,一個(gè)用戶有好友列表,可以看到多個(gè)好友位置。這種方式一是實(shí)現(xiàn)較復(fù)雜,二是依然存在著信息安全隱患。假定甲乙兩人互相認(rèn)證為好友,乙丙兩人互相認(rèn)證為好友,在某時(shí)乙運(yùn)行軟件希望與丙交互位置,而又不希望被甲得知自己的位置,上述交互方式就無法辦到。因此,位置信息交互雙方間應(yīng)該有一個(gè)點(diǎn)對(duì)點(diǎn)且經(jīng)過驗(yàn)證的交互方式。本文僅研究用戶點(diǎn)對(duì)點(diǎn)間的信息安全的交互方式,不涉及單個(gè)用戶與多個(gè)用戶同時(shí)交互位置的情況,而本文所提出的方式,可以很容易應(yīng)用在多用戶相互定位系統(tǒng)上,即在多用戶相互定位系統(tǒng)中,每?jī)蓚€(gè)用戶間使用該方式。
另外,對(duì)于移動(dòng)設(shè)備位置信息的獲取方式及精確度,需要在本文中做一提及。當(dāng)前移動(dòng)設(shè)備位置信息的獲取方式有三種:通過GPS 定位、通過Wi-Fi 定位與通過手機(jī)基站信號(hào)定位。GPS 定位的理論精度在30m 左右,但定位時(shí)間慢,對(duì)移動(dòng)設(shè)備耗電較高,且戶外的效果好于室內(nèi)。Wi-Fi 定位的理論精度在30m~200m,實(shí)際測(cè)試精度基本相當(dāng)于GPS 定位,但使用時(shí)必須有Wi-Fi 環(huán)境。手機(jī)基站信號(hào)定位的理論精度在100m~300m,實(shí)際測(cè)試精度也與GPS 定位與Wi-Fi 定位相差較大,但好處是不需要特殊環(huán)境,隨時(shí)可用。用戶相互定位的典型應(yīng)用方式應(yīng)是使用手機(jī)基站信號(hào)定位,其定位精度基本滿足需要,因此,開發(fā)出用戶使用移動(dòng)設(shè)備相互定位的軟件系統(tǒng)也是實(shí)用可行的。
兩臺(tái)移動(dòng)設(shè)備要進(jìn)行位置信息交互,就需要把每臺(tái)移動(dòng)設(shè)備的位置信息,即緯度、經(jīng)度,上傳并保存在網(wǎng)絡(luò)服務(wù)器中供另一方下載。本文所提出的交互方式使用一個(gè)數(shù)據(jù)庫表來保存信息,緯度與經(jīng)度作為數(shù)據(jù)庫表的兩個(gè)字段。為區(qū)別每臺(tái)移動(dòng)設(shè)備的位置信息,移動(dòng)設(shè)備的唯一標(biāo)識(shí),如手機(jī)號(hào)碼,也作為表的一個(gè)字段。
本文所提出的交互方式使用三種措施來保證信息安全:一、雙方唯一標(biāo)識(shí)(如手機(jī)號(hào)碼)的驗(yàn)證。二、雙方相互約定的密鑰的驗(yàn)證。三、一方請(qǐng)求時(shí)間與另一方信息更新時(shí)間的驗(yàn)證。兩方的手機(jī)進(jìn)行位置信息交互時(shí),每一方都向網(wǎng)絡(luò)服務(wù)器請(qǐng)求另一方的位置。運(yùn)行于網(wǎng)絡(luò)服務(wù)器上的程序判斷該請(qǐng)求是否通過上述三種驗(yàn)證,如通過驗(yàn)證,則返回請(qǐng)求的位置信息,如未通過驗(yàn)證,則返回相應(yīng)的描述性代碼。
為實(shí)現(xiàn)以上三種驗(yàn)證措施,網(wǎng)絡(luò)服務(wù)器上的數(shù)據(jù)庫表,需設(shè)計(jì)成表1所示的結(jié)構(gòu),包含本機(jī)標(biāo)識(shí)、對(duì)方標(biāo)識(shí)、本機(jī)緯度、本機(jī)經(jīng)度、會(huì)話密鑰、記錄更新時(shí)間六個(gè)字段。表1中還包含了兩條樣例記錄,以便下文解釋本交互方式的實(shí)現(xiàn),并且以典型的移動(dòng)設(shè)備—智能手機(jī)為例(見表1)。
假定進(jìn)行位置信息交互的用戶為A、B,雙方進(jìn)行位置信息交互時(shí)均需在智能手機(jī)上運(yùn)行實(shí)現(xiàn)本文所提出方式的軟件。在開始雙方位置信息交互前,軟件要求用戶A 輸入本機(jī)號(hào)碼A、對(duì)方號(hào)碼B 以及雙方約定的會(huì)話密鑰。然后即開始兩個(gè)過程:一個(gè)過程是向網(wǎng)絡(luò)服務(wù)器上傳本機(jī)號(hào)碼A、對(duì)方號(hào)碼B、本機(jī)緯度A、本機(jī)經(jīng)度A、A 輸入的密鑰A,即上傳本機(jī)位置信息過程,網(wǎng)絡(luò)服務(wù)器在收到A 的位置信息時(shí),如存在字段 “本機(jī)標(biāo)識(shí)”為號(hào)碼A 的記錄,則使用收到的信息更新該記錄,并且將該記錄的“記錄更新時(shí)間”更改為收到位置信息的時(shí)間(更新時(shí)間A);如不存在字段 “本機(jī)標(biāo)識(shí)”為號(hào)碼A 的記錄,則新建一條記錄并將收到的信息保存,且保存“記錄更新時(shí)間”信息(更新時(shí)間A)。另一個(gè)過程是向網(wǎng)絡(luò)服務(wù)器請(qǐng)求“本機(jī)標(biāo)識(shí)”為號(hào)碼B 的位置信息,即下載對(duì)方位置信息過程。軟件每隔一段時(shí)間都要進(jìn)行上傳本機(jī)位置信息過程以更新服務(wù)器端數(shù)據(jù)庫表里的數(shù)據(jù),并且每隔一段時(shí)間都要進(jìn)行下載對(duì)方位置信息過程。當(dāng)本機(jī)軟件退出時(shí),本機(jī)的以上兩執(zhí)行過程也隨之終止。

表1

圖1
對(duì)于用戶B 來說,軟件也要求用戶B 輸入本機(jī)號(hào)碼B,對(duì)方號(hào)碼A 及雙方約定的會(huì)話密鑰。上傳本機(jī)位置信息過程會(huì)上傳本機(jī)號(hào)碼B、對(duì)方號(hào)碼A、本機(jī)緯度B、本機(jī)緯度A,B 輸入的密鑰B。下載對(duì)方位置信息過程會(huì)向網(wǎng)絡(luò)服務(wù)器請(qǐng)求“本機(jī)標(biāo)識(shí)”為號(hào)碼A 的位置信息。
整體的位置信息交互過程如圖1所示。
以上上傳本機(jī)位置信息過程不需要服務(wù)器程序進(jìn)行驗(yàn)證,而請(qǐng)求對(duì)方位置信息需要經(jīng)過服務(wù)器程序驗(yàn)證。服務(wù)器端三種驗(yàn)證詳細(xì)描述如下:
1)雙方唯一標(biāo)識(shí)的認(rèn)證,是為了確保信息只在相互要求進(jìn)行位置信息交互的雙方間進(jìn)行傳遞。當(dāng)用戶A 請(qǐng)求B 的位置信息時(shí),服務(wù)器程序首先在數(shù)據(jù)庫表中尋找“本機(jī)標(biāo)識(shí)”為號(hào)碼B 的記錄,如存在該記錄,則再檢查該記錄的“對(duì)方標(biāo)識(shí)”是否為號(hào)碼A。當(dāng)且僅當(dāng)上述兩個(gè)條件均滿足時(shí),才可認(rèn)為通過對(duì)雙方唯一標(biāo)識(shí)的驗(yàn)證。同樣,在用戶B 請(qǐng)求A 的位置信息時(shí)也要經(jīng)過該驗(yàn)證。但是,僅有該驗(yàn)證并不能確保信息安全,如用戶C 在軟件要求輸入本機(jī)號(hào)碼、對(duì)方號(hào)碼時(shí)將號(hào)碼A 和號(hào)碼B 輸入,以將自己偽造成用戶A 來獲取B 的位置信息。因此需要有附加方式來確保信息安全,本文提出下面的密鑰方式。
2)雙方相互約定的密鑰的驗(yàn)證,需要雙方在進(jìn)行位置信息交互前通過打電話、發(fā)短信等方式約定一個(gè)共同的密鑰。當(dāng)用戶A 請(qǐng)求B 的位置信息時(shí),服務(wù)器程序判斷“本機(jī)號(hào)碼”為號(hào)碼A 的記錄的“會(huì)話密鑰”密鑰A 是否與“本機(jī)號(hào)碼”為號(hào)碼B 的記錄的“會(huì)話密鑰”密鑰B 相同。如相同,則通過該驗(yàn)證。在上傳本機(jī)位置信息過程的具體實(shí)現(xiàn)中,雙方約定密鑰是以密文形式上傳并保存的,如MD5 碼形式。
3)一方請(qǐng)求時(shí)間與另一方信息更新時(shí)間的驗(yàn)證,在以上兩種驗(yàn)證的基礎(chǔ)上,為用戶提供更多的信息安全保護(hù)。當(dāng)用戶A 請(qǐng)求B 的位置信息時(shí),服務(wù)器程序計(jì)算請(qǐng)求時(shí)間與“本機(jī)號(hào)碼”為號(hào)碼B 的記錄的“記錄更新時(shí)間”更新時(shí)間B 的時(shí)間差,如小于某個(gè)閾值,則通過該驗(yàn)證。該驗(yàn)證確保了位置信息交互中的一方軟件退出時(shí),即上傳本機(jī)位置過程停止時(shí),另一方會(huì)很快得到對(duì)方退出的信息,并且提高了安全性,避免了以下情況:①用戶A 與用戶B 發(fā)起了一次成功的位置信息交互,交互后用戶A 的軟件忘記退出,用戶B 軟件退出了。過了一段時(shí)間后,在用戶A 不希望泄露位置信息時(shí)用戶B 卻可以再次運(yùn)行軟件得到A 的位置信息。②用戶C 得知了用戶A、B 的號(hào)碼及某次交互的雙方約定密鑰,通過偽造身份,在A、B 間某次交互的若干時(shí)間之后得到A、B 的最后位置信息。
如對(duì)對(duì)方位置信息的請(qǐng)求通過了上述三個(gè)驗(yàn)證,服務(wù)器端程序?qū)⒎祷貙?duì)方位置信息給請(qǐng)求方。雙方軟件均上傳己方位置信息,請(qǐng)求對(duì)方位置信息并獲得對(duì)方位置信息,從而實(shí)現(xiàn)了雙方位置信息的交互。
本文描述了一種信息安全、實(shí)現(xiàn)簡(jiǎn)單的移動(dòng)設(shè)備位置信息交互方式。該方案已在移動(dòng)設(shè)備為Android 手機(jī),服務(wù)器端為PHP + MySQL 的系統(tǒng)中實(shí)現(xiàn)。本交互方式在系統(tǒng)實(shí)現(xiàn)簡(jiǎn)單的情況下確保了安全性。正如前文所述,本交互方式是點(diǎn)對(duì)點(diǎn)的,但可以被很容易的應(yīng)用在多用戶位置信息交互系統(tǒng)中。因此,希望本文所做的工作能成為后續(xù)研究工作的基石。
