梁菲惜
(成都理工大學核技術(shù)與自動化工程學院,四川成都,610059)
中國是網(wǎng)上支付使用大國,根據(jù)《中國互聯(lián)網(wǎng)發(fā)展報告2018》顯示,到2017年底,中國網(wǎng)上支付用戶人數(shù)達5.31億,第三方互聯(lián)網(wǎng)支付金額達到143萬億。從網(wǎng)銀支付到手機支付,互聯(lián)網(wǎng)支付已經(jīng)成為中國最主流的支付方式[1~2]。目前密碼泄露以病毒、黑客以及旁窺為主要原因。密碼泄露不僅會造成個人財產(chǎn)損失,某些平臺賬號的密碼泄露也可能造成他人的財產(chǎn)損失,如盜取社交軟件密碼騙取失主親友錢財。采用隨機鍵盤能有效地避免密碼旁窺和泄露,不僅能在公共場合避免密碼旁窺,也能有效防止通過記憶鍵盤點擊位置的木馬竊取密碼。當前已經(jīng)有部分銀行采用隨機軟鍵盤的控件。
隨機鍵盤設(shè)計旨在通過密碼輸入鍵盤的隨機排列解決公共場合的密碼旁窺和泄露問題。本設(shè)計主要達到兩個效果:一是使輸入鍵盤隨機排列,二是密碼匹配?;谝陨夏康模驹O(shè)計采用STM32F103RCT6作為主要處理器,用于隨機數(shù)列產(chǎn)生和密碼匹配。產(chǎn)生隨機數(shù)列采用兩兩交換法,初始密碼存儲在EEPROM中,密碼鍵盤顯示采用迪文DGUS液晶屏。方案設(shè)計思路如圖1所示。
圖1 隨機鍵盤設(shè)計原理圖
單片機系統(tǒng)采用STM32F103RCT6。由法意半導體推出的STM32增強型系列STM32F103為高密度性能線的32位微處理器,其內(nèi)核為Cortex-M3,具有成本低廉、功耗較低、性能較好、集成度高、便于調(diào)試等優(yōu)點,在醫(yī)療、工業(yè)、電子等領(lǐng)域得到廣泛應用[3~4]。STM32F103RCT6最大處理速度為72MHz,兼有串行單線調(diào)試SWD和JTAG接口,具有5個串口,可與迪文DGUS液晶屏進行串口通信控制;具有2個I2C接口,可掛載EEPROM進行密碼存儲。STM32F103RCT6內(nèi)嵌晶振,為提高時鐘穩(wěn)定性,外接8M無源晶振和32.765K晶振。另連接復位電路和電源指示LED,引出JTAG接口,進行下載和調(diào)試。
STM32F103RCT6工作電壓為 2V~3.6V,常用工作電壓為3.3V。由于USB供電為 5V,無法直接為其提供工作電壓。穩(wěn)壓芯片 AMS1117有可調(diào)電壓和多種固定電壓版,可選用3.3V固定電壓版為STM32供電,且電路簡單。電源開關(guān)使用自鎖按鍵,使電路板在上電時不用一直插拔電源線,通過自鎖開關(guān)來控制電源的通電和斷電。
EEPROM可以即插即用,具有掉電數(shù)據(jù)不丟失的特點。AT24C02最大時鐘頻率400kHz,達到讀寫密碼速度;內(nèi)存容量250B,足夠初始密碼存儲空間;I2C通信方式節(jié)省I/O口且控制方便;工作電壓范圍為1.8V 至 6.0V,可直接使用與STM32相同的工作電壓供電。
圖2 DGUS的硬件結(jié)構(gòu)
DGUS是迪文科技推出的一款圖形服務軟件,是基于迪文屏K600+內(nèi)核設(shè)計的人機界面系統(tǒng)軟件,迪文DGUS屏就是基于該軟件設(shè)計的液晶顯示屏[5~6]。DGUS液晶屏為串口液晶屏,可支持CMOS、RS232、RS485三種電平通信方式,本次采用MINI DGUS液晶屏支持RS232通信方式。DGUS液晶屏支持SD卡,可使用畫圖軟件設(shè)計界面通過SD卡下載使用,使界面設(shè)計豐富和多樣化。其硬件結(jié)構(gòu)如圖2所示。
本設(shè)計中隨機數(shù)產(chǎn)生為0~9的隨機排列,以及26個字母的隨機排列。對于這兩種隨機排列均使用兩兩交換法,原理簡單易操作,且隨機效果較好。將0~9以及26個字母分別隨機處理,在此以0~9的數(shù)字排列為例說明。
(1)將0~9進行順序排列;(2)利用隨機函數(shù)產(chǎn)生0~9中的兩個隨機數(shù)m、n;(3)將第m個數(shù)和第n個數(shù)進行位置交換;(4)重復步驟②和步驟③X次,本設(shè)計中數(shù)字隨機序列中取重復次數(shù)X=20。由于產(chǎn)生的隨機數(shù)m、n可能重復,因此實際進行的位置交換次數(shù)可能小于20次,但一般不會低于10次,如此即可實現(xiàn)數(shù)字鍵盤的隨機排列,理論上可實現(xiàn)的不同排列為10!種。26個字母的隨機排列方法與此相同,適當增加交換次數(shù)X即可。以X=10為例,對于0~9的隨機排列如表1所示。由表所示經(jīng)過10次兩兩交換以后,數(shù)字序列由[6,0,9,7,2,8,4,1,5,3]變?yōu)閇9,5,4,6,3,0,7,2,1,8],實現(xiàn)了隨機數(shù)列的效果。
表1 兩兩交換法示意圖(交換10次)
使用畫圖軟件設(shè)計顯示界面,如CorelDRAW軟件,調(diào)節(jié)圖片大小和分辨率至適應屏幕;將設(shè)計好的顯示界面通過SD卡下載至DGUS屏,檢查顯示是否正確;STM32通過IIC通信將預設(shè)密碼存入EEPROM;在STM32中產(chǎn)生隨機數(shù)列,將DGUS屏與STM32進行串口連接通信,并將隨機數(shù)列放入指定觸控區(qū)域;用戶輸入密碼并確認,STM32通過串口讀取用戶鍵入密碼;STM32讀取EEPROM預設(shè)密碼,并進行比較;若用戶鍵入密碼與預設(shè)密碼一致,則通過串口使DGUS屏跳轉(zhuǎn)輸入正確頁面;若用戶鍵入密碼與預設(shè)密碼不一致,則跳轉(zhuǎn)輸入密碼錯誤頁面,并點擊重新輸入[7~8]。系統(tǒng)流程圖如圖3所示。
本設(shè)計基于STM32和迪文DGUS屏的隨機鍵盤設(shè)計,以STM32位主控制芯片,以迪文DGUS液晶屏為顯示器件,以兩兩交換法為核心算法,經(jīng)實際效果測試,隨機排列生產(chǎn)效果良好,能達到較好的隨機鍵盤效果。采用本設(shè)計,可以有效解決在公共場合的密碼輸入旁窺問題,可以有效防止在自動提取款機上通過記憶鍵盤點擊位置的木馬竊取密碼。
圖3 系統(tǒng)流程圖