亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android平臺(tái)短信的來源認(rèn)證系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2018-04-18 11:07:56胡先祥

        胡先祥 曹 斌

        (貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院 貴州 貴陽 550000)

        0 引 言

        近幾年基于Android系統(tǒng)的智能手機(jī)的廣泛普及,同時(shí)短信資費(fèi)的降低,短信業(yè)務(wù)與此同時(shí)在上漲,特別是短信在朋友與朋友聯(lián)系,通信商與客戶,銀行與客戶之間的業(yè)務(wù)溝通占據(jù)很大的一部分。但是與此同時(shí)電信詐騙分子利用短信來實(shí)施詐騙、利用偽基站扮演10086及銀行官方電話發(fā)送詐騙短信,并且詐騙短信信息包含網(wǎng)站鏈接,點(diǎn)擊鏈接很可能導(dǎo)致手機(jī)木馬病毒的下載?;诖爽F(xiàn)狀,必須要確認(rèn)短信發(fā)送方的真實(shí)身份之后才能確認(rèn)短信的真假性,因此必須提供一種身份認(rèn)證技術(shù),即采用數(shù)字證書,以及RSA加解密等相結(jié)合的技術(shù)。數(shù)字證書含有用戶的個(gè)人信息。該技術(shù)必須具有的功能是接收方能夠核實(shí)確認(rèn)短信發(fā)送方的身份,并且能夠事后追查短信發(fā)送方的身份。

        本文研究了RSA算法,SHA-1算法,再對數(shù)字簽名,數(shù)字證書相關(guān)技術(shù)進(jìn)行分析,最后利用相關(guān)算法,數(shù)字證書相結(jié)合的方式設(shè)計(jì)系統(tǒng)并應(yīng)用到Android平臺(tái)短信身份認(rèn)證上。最后在Android手機(jī)平臺(tái)以及服務(wù)器上采用Java語言實(shí)現(xiàn)在短信認(rèn)證的相關(guān)技術(shù),最后實(shí)現(xiàn)了短信發(fā)送方的真實(shí)身份認(rèn)證。

        1 數(shù)字簽名相關(guān)算法

        甲方向乙方通過網(wǎng)絡(luò)發(fā)送消息,甲方首先對消息進(jìn)行處理得到一個(gè)附帶的“簽名”消息并發(fā)送給乙方,乙方通過相關(guān)算法驗(yàn)證簽名的真?zhèn)渭拌b別相應(yīng)的簽名者,數(shù)字簽名原理之一:私鑰對消息加密,接受者利用匹配的公鑰解密即采用非對稱式加解密算法。這就是非對稱密碼體制,非對稱密碼體制不同于對稱密碼體制,對稱密碼體制密鑰與公鑰相同,非對稱密碼體制私鑰與公鑰不相同,私鑰與公鑰是一對,用私鑰(公鑰)加密,必須用相應(yīng)的公鑰(私鑰)來解密。數(shù)字簽名算法包含了消息摘要算法和非對稱式加密算法,是網(wǎng)絡(luò)安全機(jī)制以及數(shù)字證書的基礎(chǔ)之一,并且數(shù)字簽名算法具有認(rèn)證信息來源,抗否認(rèn)的作用。數(shù)字簽名算法遵循利用私鑰對信息簽名,利用公鑰對信息驗(yàn)證,簽名需要私鑰和待簽信息,驗(yàn)證利用公鑰和簽名信息[3]。

        數(shù)字簽名算法主要包括DSA、RSA、ECDSA算法,其中RSA算法是數(shù)字簽名算法中的經(jīng)典,該算法在Java語言中是完全支持的,并且提供了實(shí)現(xiàn)加密,解密的類函數(shù),能夠用Java來實(shí)現(xiàn)該算法。RSA簽名算法主要有MD系列和SHA系列,MD系列包含MD2withRSA, MD3withRSA簽名算法,SHA系列包含SHA1withRSA,SHA512withRSA等算法[6]。

        1.1 數(shù)字簽名算法—RSA

        算法1非對稱式加密算法RSA具有比較高的安全性是源于整數(shù)因子分解困難性。RSA加密算法是非對稱式加密算法中比較經(jīng)典的算法,具有高的可靠性、安全性,在商業(yè)應(yīng)用上具有廣泛性。RSA加密算法不同于對稱式加密算法中私鑰與公鑰相同,它的私鑰與公鑰是不相同。RSA加密算法數(shù)學(xué)原理描述如下:

        ① 選定兩個(gè)不同大的素?cái)?shù)p和q,p和q私有,不對外公布。

        ② 計(jì)算n=pq(可以公開),&(n)=(p-1)(q-1)(私有,不對外公布);

        ③ 任意選取一個(gè)與&(n)互素的整數(shù)e,得到公鑰(e,n);

        ④ 通過de=1(mod&(n))公式求得d,得到私鑰(d,n)(必須保密);

        ⑤ 對消息m加密算法為c=E(m)=me(modn);

        ⑥ 對已加密的消息c解密算法為m=D(c)=cd(modn)[1]。

        1.2 數(shù)字簽名算法—SHA-1

        算法2SHA-1算法屬于SHA系列,Hash函數(shù)應(yīng)用廣泛包括兩個(gè)重要分支系列即SHA系列,MD系列。Hash函數(shù)在密碼學(xué)應(yīng)用中占據(jù)舉足輕重的位置,它在消息認(rèn)證、身份認(rèn)證、電子簽名等諸多鄰域有相關(guān)應(yīng)用。這里主要對Hash函數(shù)中SHA-1做相關(guān)介紹。SHA-1算法是SHA-0算法的改進(jìn)版,在商業(yè)應(yīng)用很廣。SHA-1算法中的重要的函數(shù):

        式中:x∧y,x⊕y分別表示x,y按位進(jìn)行AND,XOR運(yùn)算,x表示x按位進(jìn)行取反運(yùn)算[5]。

        SHA-1算法首先對信息進(jìn)行預(yù)處理,預(yù)處理原理是將信息添加若干bit的0或1后分成512 bit的信息組。這樣,被處理之后的信息長度就為512的倍數(shù)[5]。

        2 數(shù)字證書

        數(shù)字證書應(yīng)用了密碼學(xué)中的消息摘要算法、非對稱式加密算法、數(shù)字簽名算法多種算法。消息摘要算法驗(yàn)證數(shù)據(jù)的完整性,非對稱式加密算法用于數(shù)據(jù)保密性,數(shù)字簽名算法用于抗否認(rèn)性,可鑒別消息來源。同時(shí)數(shù)字證書包含用戶個(gè)人信息,從而具有識(shí)別身份的作用。

        獲得數(shù)字證書,需要通過使用數(shù)字證書管理工具如Keytool,它是Java自帶的用于存儲(chǔ)密鑰,數(shù)字證書的管理工具,主要應(yīng)用在申請、導(dǎo)入、導(dǎo)出和撤銷數(shù)字證書方面。Keytool與本機(jī)密鑰庫相連,通過本機(jī)的命令行創(chuàng)建自簽名的數(shù)字證書,在創(chuàng)建之前先下載安裝jdk,其中Keytool位于%JDK_HOME%in。通過本地在密鑰庫中生成本地自簽名的數(shù)字證書,建立相應(yīng)的加密算法、密鑰、以及用戶自身提供的信息。構(gòu)建的自簽名數(shù)字證書需要第三方CA機(jī)構(gòu)認(rèn)證,只有認(rèn)證后的數(shù)字證書才具有法律效力。經(jīng)CA機(jī)構(gòu)認(rèn)證的證書通過相關(guān)工具導(dǎo)入本地密鑰庫和信任庫[6]。生成數(shù)字證書的流程圖如圖1所示。

        圖1 數(shù)字證書生成

        3 系統(tǒng)總體設(shè)計(jì)方案

        首先通過DOS界面執(zhí)行相關(guān)命令生成密鑰庫和自簽名證書,并將本地生成的自簽名證書并導(dǎo)入第三方權(quán)威數(shù)字證書認(rèn)證機(jī)構(gòu)進(jìn)行認(rèn)證,密鑰庫Keystore和數(shù)字證書導(dǎo)入本地。本方案采用非對程式加密算法為RSA算法,簽名算法為SHA-1withRSA算法,消息摘要算法為SHA-1算法,私鑰加密,公鑰解密。用戶A首先自主設(shè)計(jì)短信信息,然后使用APP向本地部署的Tomcat服務(wù)器發(fā)出請求,服務(wù)器會(huì)獲取到本地密鑰庫中的私鑰和數(shù)字證書中的公鑰,并將私鑰返回給用戶A客戶端后臺(tái),公鑰發(fā)送給A所要發(fā)送短信的接收方(客戶端B),客戶端后臺(tái)對要發(fā)送的信息進(jìn)行加密并發(fā)送給對方B,同時(shí)接收方B對接收到短信利用之前接收到的公鑰進(jìn)行解密。設(shè)計(jì)方案圖如圖2所示。

        圖2 系統(tǒng)設(shè)計(jì)框架圖

        4 系統(tǒng)主要模塊設(shè)計(jì)

        4.1 客戶端APP軟件模塊

        該模塊的作用是對短信信息的處理,包括請求服務(wù)器獲取私鑰、發(fā)送公鑰、加密短信、解密短信、發(fā)送短信等。主要分為短信加密發(fā)送模塊和短信接收解密模塊兩大模塊。

        獲取私鑰函數(shù)模塊其主要功能:客戶端采用http協(xié)議方式請求服務(wù)器端,服務(wù)器獲取本地密鑰庫中私鑰和公鑰并返回給客戶端后臺(tái)。http協(xié)議是Android手機(jī)網(wǎng)絡(luò)常用協(xié)議之一,http協(xié)議的傳輸特點(diǎn):請求訪問基于應(yīng)用接口簡單,容錯(cuò)性強(qiáng),支持B/S及C/S兩種應(yīng)用模式,可以傳輸任意類型的數(shù)據(jù)對象。客戶端向服務(wù)器發(fā)出請求時(shí),通過post和get方式以及相關(guān)路徑和方法獲取數(shù)據(jù)。請求函數(shù)如下:

        URLurl=new URL(″http://192.168.0.145:8080/servlet/Cerficate″);HttpURLConnection http=(HttpURLConnection)url.openConnection();http.connect();

        此函數(shù)模塊功能通過url實(shí)例化請求,客戶端向服務(wù)器端發(fā)出請求并建立連接,url括號(hào)里的字符是建立請求連接的路徑,http.connect()函數(shù)就是建立連接。

        建立請求連接后,服務(wù)器獲取本地私鑰公鑰返回給客戶端,客戶端讀取服務(wù)器返回的私鑰和公鑰,讀取字符流函數(shù)如下:

        InputStream

        is=http.getInputStream();

        InputStreamReader isr=new InputStreamReader(is);

        BufferedReader br=new BufferedReader(isr);

        Userjson=br.readline();

        客戶端獲取私鑰后,利用私鑰對短信信息進(jìn)行加密處理,Android系統(tǒng)基于Java語言,Java中的API支持多種加密算法,其中的Cipher類支持構(gòu)建RSA非對稱式加密算法,Certificate類用于數(shù)字證書的操作。

        PKCS8EncodedKey pkcs8KeySpec=nePKCS8 EncodedKeySpec(byte_privatekey), byte_privatekey是獲取服務(wù)器返回Json格式的私鑰字符串轉(zhuǎn)化為byte字節(jié)的數(shù)據(jù)。PrivateKey privateKey=keyFactory.generatePrivate(pkcs8KeySpec); 主要生成私鑰。cipher.init(Cipher.ENCRYPT_MODE, privateKey); cipher.doFinal(data);主要初始化cipher類,并對數(shù)據(jù)加密處理。data就是待加密的信息數(shù)據(jù)。

        發(fā)送已加密的短信模塊:主要利用SmsManager類,SmsManager是Android提供常見的服務(wù),主要管理短信操作。通過SmsManager類的相關(guān)方法將已經(jīng)加密的信息發(fā)送給對方,該模塊通過調(diào)用該服務(wù)相關(guān)函數(shù):PendingIntent paIntent = PendingIntent.getBroadcast(SendActivity.this,0,new Intent(“SMS_SENT”),θ),該函數(shù)首先創(chuàng)建paIntent對象,Intent(“SMS_SENT”)及時(shí)啟動(dòng)短信發(fā)送功能,PendingIntent處理將要發(fā)生的事務(wù),利用getBroadcast廣播將短信發(fā)送模塊,patentsmsManager.divideMessage(content2),主要將短信字符過長時(shí)將其分割短信再發(fā)送smsManager.sendTextMessage();將其電話,短信內(nèi)容,觸發(fā)事務(wù)封裝,利用smsManager服務(wù)將短信內(nèi)容發(fā)送出去。

        接受短信并顯示模塊函數(shù):此函數(shù)主要將接收到的短信顯示出,Uri uri = Uri.parse(SMS_URI_ALL);主要作用是讀取短信信息cursor cur= getContentResolver().query(uri, projection,null,null, ″date desc″); 獲取手機(jī)內(nèi)部短信。

        解密接受的短信模塊,利用公鑰對接受短信信息(發(fā)送方已利用私鑰對短信加密)解密處理,Java支持解密處理,自帶相關(guān)解密類X509EncodedKeySpec x509KeySpec=new X509EncodedKeySpec(key);KeyFactory keyFactory=KeyFactory.getInstance(KEY_ALGORITHM);PublicKey publicKey=keyFactory.generatePublic(x509KeySpec);key是獲取公鑰字符串轉(zhuǎn)化為byte字節(jié),publicKey是生成公鑰對象。cipher.init(Cipher.DECRYPT_MODE, publicKey);是初始cipher類并指定解密模式,cipher.doFinal(data)是生成解密信息,data是待解密信息。

        4.2 服務(wù)器端Tomcat模塊

        該模塊主要采用Tomcat服務(wù)器,Tomcat服務(wù)器有幾個(gè)主要應(yīng)用:Web服務(wù)器和jsp容器以及servlet容器。通過URL地址訪問的方式,客戶端訪問請求Web服務(wù)器中的資源,把接收到的http請求封裝成Request對象,本模塊的實(shí)現(xiàn)通過實(shí)現(xiàn)servlet接口,每一次客戶端請求訪問servlet,獲取到Response對象。服務(wù)器端模塊實(shí)現(xiàn)的功能包括:接受請求、獲取密鑰、返回請求。服務(wù)器端各模塊關(guān)系如圖3所示。

        圖3 服務(wù)器端模塊

        獲取密鑰(公鑰和私鑰)模塊:獲取密鑰庫私鑰,首先加載密鑰庫文件到服務(wù)器中,再從密鑰庫中獲取私鑰,數(shù)字證書中獲取公鑰。FileInputStream in = new FileInputStream(″c:/users/Administrator/ael.keystore″);該函數(shù)用于加載ael.keystore密鑰庫,PrivateKey privateKey=(PrivateKey)ks.getKey(alias, password.toCharArray());該函數(shù)從密鑰庫文件中獲取私鑰。Certificate cert=ks.getCertificate(alias);PublicKey publicKey= cert.getPublicKey(),主要從證書中獲取公鑰。

        返回請求模塊:該模塊主要是返回給客戶端相關(guān)請求的數(shù)據(jù)(私鑰和公鑰),該模塊功能主要是將獲取的私鑰和公鑰封裝成Json格式的數(shù)據(jù)返回給客戶端。相關(guān)函數(shù)如下:

        jsonObject.put(″privatekey″,user.getPrivatekey());jsonObject.put(″publickey″,user.getPublickey());jsonArray.put(jsonObject);

        response.getWriter().println(jsonArray.toString());

        5 系統(tǒng)測試軟件界面

        該系統(tǒng)測試主要包括Web服務(wù)器啟動(dòng),APP獲取服務(wù)器密鑰,APP加密短信,發(fā)送短信,解密短信。連接Wifi,點(diǎn)擊APP后進(jìn)入界面包含三個(gè)功能按鈕,點(diǎn)擊“進(jìn)入加密發(fā)送界面”之后,輸入相關(guān)信息,點(diǎn)擊“加密發(fā)送”按鈕,后臺(tái)獲取服務(wù)器私鑰,公鑰,并利用私鑰加密短信,最后發(fā)送給對方。點(diǎn)擊“發(fā)送公鑰”,接受方利用公鑰解密已加密短信。

        6 結(jié) 語

        本文圍繞短信信息識(shí)別進(jìn)行系統(tǒng)設(shè)計(jì),包括相關(guān)算法研究與應(yīng)用、模塊功能設(shè)計(jì),一定程度到達(dá)識(shí)別短信發(fā)送方身份目的。10086、銀行發(fā)送短信應(yīng)用此設(shè)計(jì)方法具有重大價(jià)值,但有諸多不足。同時(shí),防止犯罪分子冒充10086、銀行官網(wǎng)電話以及好友電話發(fā)送短信實(shí)施詐騙,還必須加強(qiáng)社會(huì)各個(gè)層面的監(jiān)管。本文的相關(guān)研究與應(yīng)用,特別是RSA算法以及數(shù)字證書在短信身份認(rèn)證應(yīng)用上將會(huì)越來越受到重視。

        [1] 蒙峭緣.非對稱密碼算法RSA及其用JAVA2的實(shí)現(xiàn)[J].玉林師范學(xué)院學(xué)報(bào),2006,27(5):153-157.

        [2] 郭霖霖.第一行代碼Android[M].人民郵電出版社,2014.

        [3] 趙小明,章美仁.RSA數(shù)字簽名技術(shù)在電子公文流轉(zhuǎn)中的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(5):1214-1216.

        [4] 李龍景,楊琪.基于RSA的多元非對稱密碼系統(tǒng)在數(shù)字簽名中的應(yīng)用[J].吉林大學(xué)學(xué)報(bào):理學(xué)版,2002,40(2):165-167.

        [5] 李世明.關(guān)于Hash算法SHA-1的研究與分析[D].西南大學(xué),2013.

        [6] 梁棟.Java加密與解密的藝術(shù)[M].北京:機(jī)械工業(yè)出版社,2014.

        [7] Phillips B J,Burgess N.Implementing 1,024-Bit RSA Exponentiation on a 32-Bit Processor Core[C]//Application-Specific Systems,Architectures,and Processors,2000.Proceedings.IEEE International Conference on.IEEE,2002:127.

        [8] Islam S K H,Biswas G P.Provably secure and pairing-free certificateless digital signature scheme using elliptic curve cryptography[J].International Journal of Computer Mathematics,2013,90(11):2244-2258.

        [9] Janagan M,Devanathan M.Area compactness architecture for eliptic curve ography[C]//2012 nternational Conference on Pattern Recognition,ngineering(PRIME),USA:Hawaii,2012:131-134.

        高清成人在线视频播放| 成人国产精品一区二区八戒网 | 国产麻豆久久av入口| 7m精品福利视频导航| 国产精品户露av在线户外直播| 仙女白丝jk小脚夹得我好爽| 91麻豆精品久久久影院| 中文字幕亚洲精品一区二区三区| 水蜜桃精品一二三| 一本到无码AV专区无码| 日韩精品一级在线视频| 午夜视频国产在线观看| 免费人成视频xvideos入口| 夜夜躁狠狠躁2021| 国产精品麻花传媒二三区别| 四虎永久在线精品免费观看地址| 亚洲国产一区久久yourpan| 国产激情在线观看免费视频| 国产偷国产偷精品高清尤物| 97一区二区国产好的精华液 | 少妇无套裸按摩呻吟无呜| 精品国产一区av天美传媒| 中文字幕亚洲综合久久菠萝蜜| 亚洲国产黄色在线观看| 亚洲最全av一区二区| 国产在视频线精品视频| 欧美亚洲国产人妖系列视| 国产精品女同久久久久久| 91九色视频在线国产| 亚洲国产精品无码专区| 久久天天躁狠狠躁夜夜爽蜜月| av东京热一区二区三区| 国产日产韩国av在线| 免费观看a级片| 精品少妇ay一区二区三区| 久久久久AV成人无码网站| 亚洲一区二区三区地址| 久久综合给合综合久久| 国产精品天堂avav在线| 日本一区二区视频免费在线观看| 国产精品无码人妻在线|