彭浩然
摘要:隨著科學(xué)技術(shù)的發(fā)展,近距離無(wú)線通信在電子門(mén)禁、電子車(chē)鎖等安全系統(tǒng)上得到了廣泛應(yīng)用。然而,確保系統(tǒng)安全性的手段大多采取偽隨機(jī)數(shù)加密的方式,容易被各種分析器捕獲、破譯。本研究針對(duì)近距離無(wú)線通信的安全問(wèn)題設(shè)計(jì)制作了基于環(huán)境聲音的真隨機(jī)數(shù)生成器,對(duì)生成的真隨機(jī)數(shù)進(jìn)行質(zhì)量測(cè)試,與偽隨機(jī)數(shù)進(jìn)行對(duì)比測(cè)試,驗(yàn)證了其可靠性,并將其運(yùn)用在汽車(chē)防盜等近距離無(wú)線通信設(shè)備的安全加密上。
關(guān)鍵詞:真隨機(jī)數(shù);聲音;質(zhì)量評(píng)估;近距離通信安全
中圖分類(lèi)號(hào):TN710 文獻(xiàn)標(biāo)識(shí)碼:A 論文編號(hào):1674-2117(2019)07-0072-05
緒論
隨機(jī)數(shù)是一組同時(shí)具有無(wú)偏性和不可預(yù)測(cè)性的值,它是均勻分布的隨機(jī)過(guò)程輸出,而且輸出的值之間是統(tǒng)計(jì)獨(dú)立的。[1]隨機(jī)數(shù)一般分為真隨機(jī)數(shù)、偽隨機(jī)數(shù)兩類(lèi)。真隨機(jī)數(shù)通常利用一些物理過(guò)程的隨機(jī)性質(zhì)來(lái)產(chǎn)生[2],如針對(duì)電路噪聲,設(shè)計(jì)相應(yīng)的電路進(jìn)行放大,通過(guò)適當(dāng)?shù)哪?shù)轉(zhuǎn)換和規(guī)格化后,生成真隨機(jī)數(shù)[3];或者利用光子的量子力學(xué)特性構(gòu)造真隨機(jī)數(shù)。[4]偽隨機(jī)數(shù)是基于某一事先確定的序列來(lái)生成,依賴(lài)選定的隨機(jī)數(shù)“種子”來(lái)產(chǎn)生隨機(jī)序列,如C語(yǔ)言中的隨機(jī)函數(shù)可以選用系統(tǒng)時(shí)間作為隨機(jī)數(shù)的種子。[5]
對(duì)于如何衡量隨機(jī)數(shù)的質(zhì)量,德國(guó)聯(lián)邦信息安全辦公室給出了隨機(jī)數(shù)發(fā)生器質(zhì)量評(píng)判的四個(gè)標(biāo)準(zhǔn)[6],如表1所示。
這是一種定性的評(píng)判標(biāo)準(zhǔn),偽隨機(jī)數(shù)大多只能滿(mǎn)足K1、K2標(biāo)準(zhǔn),安全性較低,易被破解。真隨機(jī)數(shù)則基本都能滿(mǎn)足,安全性高很多,可在信息安全、密碼學(xué)等領(lǐng)域發(fā)揮重要作用。
目前關(guān)于真隨機(jī)數(shù)的研究主要集中在兩個(gè)方面:真隨機(jī)數(shù)的產(chǎn)生、真隨機(jī)數(shù)的應(yīng)用。例如,本文參考文獻(xiàn)[3][4]分別介紹了基于環(huán)境噪聲、糾纏光子對(duì)、鼠標(biāo)移動(dòng)軌跡產(chǎn)生真隨機(jī)數(shù)的方法,[2]論述了真隨機(jī)數(shù)在信息安全系統(tǒng)中的應(yīng)用。這些研究注重理論的論證,為本文提供了理論支持。
本文從實(shí)踐的角度出發(fā),以環(huán)境聲音作為真隨機(jī)數(shù)種子,在Arduino Nano開(kāi)源硬件上實(shí)現(xiàn)產(chǎn)生真隨機(jī)數(shù)的算法;按照隨機(jī)數(shù)質(zhì)量評(píng)判標(biāo)準(zhǔn)進(jìn)行評(píng)估,驗(yàn)證其可靠性;最后,以提高汽車(chē)電子鎖的安全性為具體案例,將基于環(huán)境聲音的真隨機(jī)數(shù)發(fā)生器應(yīng)用于近距離無(wú)線通信安全中。
基于環(huán)境聲音數(shù)據(jù)的真隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)
隨機(jī)數(shù)產(chǎn)生的兩大要素分別是“種子”和“算法”。在“種子”的選擇上,我們將聲音、光線、溫度、濕度和加速度等物理環(huán)境數(shù)據(jù)進(jìn)行對(duì)比,發(fā)現(xiàn)聲音在短時(shí)間內(nèi)變化較快,而且方便收集、利用,所以使用聲音傳感器收集環(huán)境聲音數(shù)據(jù)作為隨機(jī)數(shù)的“種子”。關(guān)于隨機(jī)數(shù)算法的研究,已經(jīng)有比較成熟的算法,比如線性同余法[7]、梅森旋轉(zhuǎn)法。[8]這兩種算法產(chǎn)生的都是偽隨機(jī)數(shù),其中線性同余法算法簡(jiǎn)潔,適合用于Arduino Nano平臺(tái)。
1.算法設(shè)計(jì)
線性同余法的核心算法為:xn+1=(axn+c)modm,其產(chǎn)生隨機(jī)數(shù)的最大周期為m,而且只有在幾個(gè)參數(shù)滿(mǎn)足一定條件的情況下,其周期才能達(dá)到m。一般的線性同余產(chǎn)生隨機(jī)數(shù)的算法中a和c都是最初就給定的常量,所以在每次運(yùn)算后,都將環(huán)境信息中得到的一些數(shù)字作為新的參數(shù),參與下一個(gè)隨機(jī)數(shù)的生成,就可以解決線性同余法循環(huán)周期過(guò)短的問(wèn)題。環(huán)境信息包括聲音音量和從本次啟動(dòng)到當(dāng)前為止的微秒數(shù),其中聲音通常是兩位數(shù)字,環(huán)境聲音較大時(shí)可能達(dá)到三位數(shù)。
m固定為10000,因此產(chǎn)生的隨機(jī)數(shù)為0到9999的整數(shù)。但是由于不同場(chǎng)合需要的隨機(jī)數(shù)范圍及步長(zhǎng)可能不同,我們?cè)O(shè)計(jì)了一個(gè)允許用戶(hù)修改范圍和步長(zhǎng)的控制臺(tái),通過(guò)一個(gè)映射函數(shù)將原始隨機(jī)數(shù)映射到設(shè)置的范圍內(nèi)。由于直接按比例縮放和分配的方法在整數(shù)范圍內(nèi)可能導(dǎo)致概率分布不均等,我們選擇舍棄在可利用范圍之外的原始隨機(jī)數(shù)并再次生成,以保證概率均等,程序?qū)崿F(xiàn)如圖1所示。
2.結(jié)構(gòu)設(shè)計(jì)及制作
整個(gè)結(jié)構(gòu)需要的電子元件有Arduino Nano主控板、聲音傳感器、四位數(shù)碼管、開(kāi)關(guān)、按鈕和電池,電路設(shè)計(jì)如圖2所示,采取手工焊接的方式連接電路。出于便攜考慮,將所有原件集中在一個(gè)體積較小的盒子內(nèi),如圖3所示。由于對(duì)各孔洞尺寸精度要求較高,采用了PLA材料3D打印技術(shù)制作外殼。
3.測(cè)試評(píng)估
NIST(美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究院)發(fā)布了一個(gè)用于評(píng)價(jià)隨機(jī)數(shù)質(zhì)量的測(cè)試[9],其中包含15項(xiàng)測(cè)試,如表2所示。
采用NIST的隨機(jī)數(shù)質(zhì)量測(cè)試軟件,由聲音生成的隨機(jī)數(shù)可以通過(guò)其中的13項(xiàng),如圖4所示,而偽隨機(jī)數(shù)只能通過(guò)其中的第8~11項(xiàng)測(cè)試,這足以證明其可靠性。
4.對(duì)比評(píng)估
為比較上文中提到的兩種偽隨機(jī)數(shù)算法和基于環(huán)境聲音數(shù)據(jù)的新算法,分別使用三種算法生成10000個(gè)由0到9999的隨機(jī)數(shù)進(jìn)行分析,測(cè)試結(jié)果及分析如下。
(1)線性同余法
采用了C++STL中的線性同余法模板庫(kù)函數(shù),如圖5所示。在取a=31、c=13、m=10000的條件下,數(shù)據(jù)分布較為均勻,但每1250個(gè)數(shù)字就會(huì)出現(xiàn)一個(gè)循環(huán),讓偽隨機(jī)數(shù)的缺陷展露無(wú)疑,如圖6所示。
(2)梅森旋轉(zhuǎn)法
采用C++STL中的梅森旋轉(zhuǎn)法模板庫(kù)函數(shù),如圖7所示。生成的偽隨機(jī)數(shù)質(zhì)量較高,但2KiB以上的內(nèi)存消耗使其無(wú)法在Arduino Nano的便攜平臺(tái)上運(yùn)行。梅森旋轉(zhuǎn)法算法部分測(cè)試結(jié)果及分析如下頁(yè)圖8所示。
(3)混合聲音數(shù)據(jù)與線性同余法
不存在周期性,隨機(jī)數(shù)質(zhì)量較高。在不同的聲音環(huán)境下,測(cè)試結(jié)果并無(wú)太大差異。但隨機(jī)數(shù)獲取速度主要受限于Arduino Nano與電腦間串口通信的傳輸速度,有待提高,如下頁(yè)圖9所示。
聲音隨機(jī)數(shù)在近距離無(wú)線通信安全中的應(yīng)用
1.近距離無(wú)線通信安全現(xiàn)狀
在某些特定場(chǎng)合,如面對(duì)面手機(jī)支付、手機(jī)門(mén)禁和手機(jī)會(huì)場(chǎng)簽到,需要檢測(cè)兩設(shè)備是否處于相近的物理位置。傳統(tǒng)的方法是通過(guò)簡(jiǎn)單的藍(lán)牙、NFC等短距離無(wú)線通信手段進(jìn)行檢測(cè)的,而這種方法有著信息可預(yù)知、信號(hào)易模擬等易被攻陷的漏洞。作為一種無(wú)法預(yù)知且僅在相同物理位置可以獲得的環(huán)境數(shù)據(jù),如果可以將聲音數(shù)據(jù)利用到檢測(cè)過(guò)程中,則可以加強(qiáng)其安全性,避免遠(yuǎn)程操控的發(fā)生。
2.基本原理
在兩設(shè)備在物理位置十分接近的情況下,同一時(shí)間段內(nèi)采集到的聲音數(shù)據(jù)會(huì)具有一定的共同特征,而若相距較遠(yuǎn),則不具有上述特性。因此,可以通過(guò)比較兩設(shè)備在一定時(shí)間段內(nèi)采集的聲音數(shù)據(jù)來(lái)檢測(cè)其物理位置是否接近。
3.技術(shù)實(shí)現(xiàn)
(1)客戶(hù)端
數(shù)據(jù)采集:使用兩臺(tái)Android手機(jī)作為客戶(hù)端,收到采集指令后,分別在接下來(lái)的3s內(nèi)均勻采集共60個(gè)時(shí)間點(diǎn)的環(huán)境聲音分貝值。
初步處理:為消除錄音設(shè)備本身的差異影響,方便服務(wù)端進(jìn)行比對(duì),客戶(hù)端將在發(fā)送前對(duì)原始數(shù)據(jù)進(jìn)行一次規(guī)范化線性處理,使得所有的數(shù)據(jù)均變?yōu)?~94范圍內(nèi)的整數(shù),且平均值為47.5。
壓縮發(fā)送:發(fā)送前,客戶(hù)端會(huì)將60個(gè)數(shù)據(jù)值壓縮為包含60個(gè)常見(jiàn)字符的字符串,便于數(shù)據(jù)傳輸。
(2)服務(wù)端
解壓比對(duì):服務(wù)端收到信息后,將60個(gè)字符解壓為初步處理后的數(shù)據(jù)形式,進(jìn)行相似度的比對(duì),并在下列兩個(gè)輔助措施下計(jì)算區(qū)別度。
單點(diǎn)容錯(cuò):由于難以保證同一個(gè)特征性聲音脈沖在兩個(gè)設(shè)備中在十分微小的時(shí)間誤差內(nèi)被記錄,比對(duì)時(shí)除另一設(shè)備同時(shí)間點(diǎn)的數(shù)據(jù)外,還會(huì)考察與其相鄰的兩個(gè)數(shù)據(jù)點(diǎn),并取差值最小者計(jì)算。
平移擇優(yōu):由于難以保證兩個(gè)設(shè)備開(kāi)始記錄的時(shí)間點(diǎn)完全一致,會(huì)進(jìn)行數(shù)據(jù)整體左右平移最多10個(gè)單位以及不平移共21次計(jì)算,最終取區(qū)別度最小者,盡量消除由于開(kāi)始時(shí)間不同而造成的誤差。
4.初步測(cè)試
在深圳實(shí)驗(yàn)學(xué)校高中部校園內(nèi)不同環(huán)境下進(jìn)行測(cè)試,每次測(cè)試使用3臺(tái)設(shè)備,其中兩臺(tái)(HP24,HP23)相距不超過(guò)10cm,另一臺(tái)設(shè)備(zzw24)與前兩臺(tái)相距數(shù)米。測(cè)試得到的數(shù)據(jù)用折線圖表示,如下頁(yè)圖10所示。
以HP24為參照,分別比較HP23、zzw24與其區(qū)別度。測(cè)試結(jié)果如表3所示。
由測(cè)試結(jié)果可知,即使是相距僅數(shù)米,得到的區(qū)別度也較大。若企圖在不同環(huán)境下蒙混過(guò)關(guān),難度較大,可以用于提升檢測(cè)安全性。
5.具體應(yīng)用舉例:汽車(chē)防盜
目前,最常用的破解汽車(chē)門(mén)鎖的方式有兩種:①使用“干擾器”,使得遙控鎖車(chē)失效。②利用“解碼器”復(fù)制車(chē)主遙控鑰匙信號(hào)(如圖11),仿造一把遙控鑰匙。
解決以上第一種問(wèn)題,可在鎖車(chē)后,順手拉一下門(mén)把,確認(rèn)是否鎖上即可。第二種問(wèn)題可以使用聲音隨機(jī)數(shù)設(shè)計(jì)防盜遙控鑰匙。
當(dāng)遙控鑰匙發(fā)送鎖門(mén)(或開(kāi)門(mén))信號(hào)時(shí),使用聲音隨機(jī)數(shù)進(jìn)行加密。車(chē)鎖接收信號(hào)后,與自身聲音隨機(jī)數(shù)設(shè)備產(chǎn)生的數(shù)據(jù)在一定范圍內(nèi)進(jìn)行匹配,能有效提高遙控鑰匙的安全系數(shù)。
參考文獻(xiàn):
[1]徐恒.確定性隨機(jī)數(shù)產(chǎn)生器安全性分析及改進(jìn)[D].上海:上海交通大學(xué),2009.
[2]黃顯明.真隨機(jī)數(shù)發(fā)生器在信息安全系統(tǒng)中的應(yīng)用[J].電子產(chǎn)品世界,2015,22(6):13-15.
[3]邢錦江,馮允成.基于環(huán)境噪聲的真隨機(jī)數(shù)的產(chǎn)生[J].計(jì)算機(jī)工程,2006(3):31-33+36.
[4]馬海強(qiáng),常君弢,吳令安.基于糾纏光子對(duì)的真隨機(jī)數(shù)源[J].量子光學(xué)學(xué)報(bào),2002(S1):45.
[5]謝宇,周建儒.探尋C語(yǔ)言隨機(jī)數(shù)生成函數(shù)的實(shí)現(xiàn)原理[J].自動(dòng)化與儀器儀表,2016(2):219-220+222.
[6]德國(guó)聯(lián)邦信息安全辦公室[DB/OL].https://www.bsi.bund.de.
[7]CAYRE F, MACQ B.Data hiding on 3-D triangle meshes[J].Signal Processing IEEE Transactions on,2003,51(4):939-949.
[8]鄭列,宋正義.偽隨機(jī)數(shù)生成算法及比較[J].湖北工業(yè)大學(xué)學(xué)報(bào),2008,23(5):65-68.
[9]Chen I T. Random Numbers Generated from Audio and Video Sources[J].Mathematical Problems in Engineering,2013(2):289-307.
項(xiàng)目基金:本研究受深圳市教育科學(xué)“十三五”規(guī)劃重大招標(biāo)課題“普通高中創(chuàng)客教育課程建設(shè)與實(shí)施方案研究”(課題編號(hào):zdazz16005)基金支持。