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

        ?

        基于Java語(yǔ)言的ECC加密技術(shù)研究

        2018-09-13 10:54:44梁玉英
        電腦與電信 2018年7期
        關(guān)鍵詞:私鑰公鑰加密算法

        梁玉英

        (廣東理工學(xué)院信息工程系,廣東 肇慶 526100)

        1 引言

        ECC(Elliptic Curves Cryptography),橢圓曲線密碼編碼學(xué),該算法由華盛頓大學(xué)NealKoblitz和IBM的VictorM iller在1985年提出應(yīng)用在加密技術(shù)上,根據(jù)是有限域上的橢圓曲線上的點(diǎn)群中的離散對(duì)數(shù)問題ECDLP。在公鑰密碼體制中,ECC算法是目前已知的公鑰體制中對(duì)每比特所提供加密強(qiáng)度最高的一種加密機(jī)制。很多軟件的序列號(hào)通常都采用該算法,它在軟件注冊(cè)保護(hù)方面起到很大的作用[1]。

        在歐美發(fā)達(dá)國(guó)家的一些公司,以及不少的密碼學(xué)研究小組都已實(shí)現(xiàn)了橢圓曲線密碼體制,最有名的ECC密碼技術(shù)公司是加拿大的Certicom。中國(guó)也有一些密碼學(xué)者做了相關(guān)的ECC加密研究,有不少的廠商已經(jīng)開發(fā)基于橢圓曲線的產(chǎn)品。國(guó)內(nèi)外對(duì)于ECC算法的研究也是方興未艾。

        目前,C++、VB和Java都能解決數(shù)據(jù)加密的設(shè)計(jì)與實(shí)現(xiàn),其中Java是一款面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,在2014至2017年的世界編程語(yǔ)言排行榜中,Java一直排名第一,由此可見Java語(yǔ)言應(yīng)用的廣泛性[2]。它具有跨平臺(tái)性、安全性、多線程和簡(jiǎn)單易用性,它提供了密鑰管理、認(rèn)證、加密、數(shù)字簽名和存取控制功能,利用Java程序設(shè)計(jì)語(yǔ)言能較好地實(shí)現(xiàn)對(duì)文件、數(shù)據(jù)的加密。

        2 ECC加密算法的原理

        ECC是基于橢圓曲線離散對(duì)數(shù)問題的各種公鑰密碼體制,它是利用有限域上橢圓曲線的有限點(diǎn)群代替基于離散對(duì)數(shù)問題密碼體制中有限循環(huán)群所得到的一類密碼體制。在有限域Fp中定義一個(gè)橢圓曲線,常用y2=x3+ax+b;[3]

        (1)Fp中只有p個(gè)元素,p為素?cái)?shù);

        (2)Fp中,a+b≡c(mod p),a×b≡c(mod p),a/b≡c(mod p);

        (3)4a3+27b2≠0 (mod p),a,b是小于p的非負(fù)整數(shù);

        (4)x,y屬于0到p-1間的證書,曲線標(biāo)記為Ep(a,b);

        階:橢圓曲線上一點(diǎn)P,存在正整數(shù)n,使得nP=O∞,則n為P的階,若n不存在,則P是無限階的,有限域上定義的橢圓曲線上所有點(diǎn)的階都存在[4]。

        橢圓曲線難解性為:其中Q,G為Ep(a,b)上的點(diǎn),k為小于n的整數(shù),n是點(diǎn)G的階,給定k和G,計(jì)算Q容易,但是給定Q和G,求k就很難了。因此,設(shè)Q為公鑰,k為私鑰,G為基點(diǎn)[5]。

        ECC算法的依據(jù)就是利用定義在橢圓曲線點(diǎn)群上的離散對(duì)數(shù)問題的難解性。要對(duì)明文信息m加密,首先必須把要發(fā)送的明文信息m編碼形成(x,y)的點(diǎn)Pm,并對(duì)點(diǎn)Pm進(jìn)行加密,然后對(duì)密文進(jìn)行解密。注意,不能簡(jiǎn)單地將信息編碼成點(diǎn)x坐標(biāo)或y坐標(biāo),因?yàn)椴⒉皇撬械淖鴺?biāo)都在Ep(a,b)[6]。具體的加密過程如下:

        首先,用戶A選定一個(gè)大的整數(shù)p及橢圓曲線的參數(shù)a和b。由此可以定義出點(diǎn)的橢圓群Ep(a,b)。其次,在Ep(a,b)中挑選基點(diǎn)G=(xG,yG),G的階為一個(gè)非常大的數(shù)n。

        接著用戶A選定一個(gè)私鑰k,并生成公鑰K=kG;若A將Ep(a,b)和k,G發(fā)送給用戶B,B收到后將明文編碼到Ep(a,b)上一點(diǎn)M,并產(chǎn)生一個(gè)隨機(jī)數(shù)r;然后B計(jì)算點(diǎn)C1=M+rK,C2=rG,B將C1,C2傳給A,A計(jì)算C1-kC2=M+rkG-krG=M,A對(duì)M解碼得到明文。

        攻擊者只能得到Ep(a,b),G,K,C1,C2,沒有k就無法得到M。

        簽名驗(yàn)證的過程如下:

        用戶A選定一條橢圓曲線Ep(a,b),并取曲線上一點(diǎn)作為基點(diǎn)G;A選擇一個(gè)私鑰k,并生成公鑰K=kG;A產(chǎn)生一個(gè)隨機(jī)數(shù) r,計(jì)算 R(x,y)=rG;A 計(jì)算 Hash=SHA(M),M'=M(modp);A計(jì)算S=(Hash+M'k)/r(modp);B獲得S和M',Ep(a,b),K,R(x,y);B計(jì)算Hash=SHA(M),M'=M(modp);B計(jì)算R'=(Hash*G+M'*K)/S=(Hash*G+M'*kG)*r/(Hash+M'k)=rG=R(x,y),若R'=R,則驗(yàn)簽成功。

        從上述的研究看,橢圓曲線離散對(duì)數(shù)問題比有限域上的離散對(duì)數(shù)問題更難以處理[7]。

        3 ECC加密算法的優(yōu)勢(shì)

        (1)密鑰長(zhǎng)度短,占用帶寬少:ECC加密算法的密鑰長(zhǎng)度是256位,占用的存儲(chǔ)空間少,CPU開銷低,帶寬的占用也自然比較少。隨著移動(dòng)網(wǎng)絡(luò)技術(shù)的發(fā)展,ECC算法為移動(dòng)互聯(lián)網(wǎng)提供了更可靠、更安全的環(huán)境。

        (2)性能更好,安全性更高:安全性能一般通過算法的抗擊強(qiáng)度來反映,ECC加密算法需要較短的密鑰長(zhǎng)度來提供更好的安全性,相對(duì)其他的公鑰算法,ECC算法能更好地防止攻擊。采用256位的ECC密鑰與3072位RSA密鑰的加密強(qiáng)度水平相同,目前公鑰加密應(yīng)用廣泛的RSA密鑰長(zhǎng)度是2048位,則210位ECC與2048位的RSA具有相同的安全強(qiáng)度。ECC算法采用更低的計(jì)算能力代價(jià)得到了更高的安全性[8]。

        (3)延長(zhǎng)硬件使用壽命:ECC算法由于提供了更高的安全性,可以更好地保護(hù)投資的基礎(chǔ)設(shè)施。ECC的密鑰長(zhǎng)度增加度一般按128位增長(zhǎng),而RSA則是倍數(shù)增長(zhǎng),采用ECC加密算法將延長(zhǎng)計(jì)算機(jī)硬件的使用壽命。經(jīng)國(guó)外有關(guān)權(quán)威機(jī)構(gòu)測(cè)試,在Apache和IIS服務(wù)器采用ECC算法,Web服務(wù)器響應(yīng)時(shí)間比RSA快十幾倍[9]。

        4 用JAVA實(shí)現(xiàn)ECC對(duì)文件的加密

        在jak 1.5后的版本中加入了ECC算法,采用ECC算法對(duì)文件加密的算法如下:

        Java語(yǔ)言的安全性高,安全的類主要在java.security包中,實(shí)現(xiàn)ECC算法還需要導(dǎo)入包java.math、java.util、javax.crypto、sun.security?;贘ava語(yǔ)言的數(shù)字簽名密鑰生成、數(shù)字簽名和驗(yàn)證設(shè)計(jì)實(shí)現(xiàn)如下:

        (1)密鑰對(duì)的生成實(shí)現(xiàn)

        密鑰對(duì)的生成實(shí)現(xiàn)算法如下:

        聲明公有的靜態(tài)字符串常量ALGORITHM="ECC";

        聲明公有的靜態(tài)字符串常量PUBLIC_KEY="ECCPublicKey";

        聲明公有的靜態(tài)字符串常量PRIVATE_KEY="ECCPrivateKey";

        用私鑰解密:byte[]keyBytes=decryptBASE64(key);

        取得私鑰,創(chuàng)建一個(gè)PKCS8EncodedKeySpec對(duì)象pkcs8KeySpec,使用PKCS#8標(biāo)準(zhǔn)作為密鑰規(guī)范管理的編碼格式來表示私鑰;

        創(chuàng)建一個(gè)KeyFactory對(duì)象keyFactory;

        用ECPrivateKdy類創(chuàng)建對(duì)象priKey,用ECPrivateKey-Spec類創(chuàng)建對(duì)象ecPrivateKeySpec;

        對(duì)數(shù)據(jù)解密priKey.getParams();

        Cipher類為加密和解密提供密碼功能,它構(gòu)成了Java Cryptographic Extension框架的核心。創(chuàng)建Cipher對(duì)象cipher,調(diào)用init函數(shù)進(jìn)行初始化數(shù)據(jù)。

        (2)用公鑰加密

        BASE64是用來將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法,BASE64雖然不是安全領(lǐng)域下的加密解密算法,但它適合在http、m ime協(xié)議下快速傳輸數(shù)據(jù),常見于郵件、http加密。

        取得公鑰byte[]keyBytes=decryptBASE64(private Key);

        X509EncodedKeySpec類繼承EncodedKeySpec類,以編碼格式來表示公鑰,實(shí)例化X509EncodedKeySpec對(duì)象x509KeySpec;

        利用KeyFactory類生成密鑰對(duì)象keyFactory;

        創(chuàng)建EC公鑰對(duì)象pubKey;

        利用函數(shù)generatePublic(x509KeySpec)生成相應(yīng)的密鑰規(guī)范公鑰對(duì)象;

        利用ECPublicKeySpec類創(chuàng)建帶關(guān)聯(lián)參數(shù)的橢圓曲線公用密鑰ecPublicKeySpec;

        利用函數(shù)pubKey.getParams()對(duì)數(shù)據(jù)加密;

        創(chuàng)建Cipher類的加密/解密對(duì)象cipher。

        (3)取得私鑰

        聲明Key接口變量key;

        利用keyMap.get(PRIVATE_KEY)取得私鑰;

        返回encryptBASE64(key.getEncoded());

        (4)取得公鑰

        聲明Key接口變量key;

        利用keyMap.get(PUBLIC_KEY)取得私鑰;返回encryptBASE64(key.getEncoded());

        5 結(jié)束語(yǔ)

        本文研究基于java語(yǔ)言的ECC算法的加密技術(shù),應(yīng)用了Java系統(tǒng)中的安全類,采用對(duì)稱密鑰封裝方法得到密文。研究得出,采用該方法進(jìn)行對(duì)文件加密,抗攻擊性好,加密性能好,具有較高的應(yīng)用價(jià)值,可以應(yīng)用在電子商務(wù)和電子政務(wù)等Web應(yīng)用中得。但如果想要獲得ECC算法實(shí)現(xiàn),需要調(diào)用硬件完成加密和解密,涉及Java Card領(lǐng)域、PKCS#13。上述的加密/解密算法使用CPU進(jìn)行,由于比較耗費(fèi)資源,效率較低。

        猜你喜歡
        私鑰公鑰加密算法
        比特幣的安全性到底有多高
        基于改進(jìn)ECC 算法的網(wǎng)絡(luò)信息私鑰變換優(yōu)化方法
        一種基于混沌的公鑰加密方案
        一種基于虛擬私鑰的OpenSSL與CSP交互方案
        HES:一種更小公鑰的同態(tài)加密算法
        SM2橢圓曲線公鑰密碼算法綜述
        基于小波變換和混沌映射的圖像加密算法
        Hill加密算法的改進(jìn)
        基于格的公鑰加密與證書基加密
        對(duì)稱加密算法RC5的架構(gòu)設(shè)計(jì)與電路實(shí)現(xiàn)
        亚洲三区在线观看内射后入| 蜜桃一区二区免费视频观看| 日韩伦理av一区二区三区| 亚洲乱码av中文一区二区| 特级毛片爽www免费版| 午夜婷婷国产麻豆精品| 午夜精品一区二区久久做老熟女| 国产精品国三级国产a| 天天爽夜夜爽人人爽一区二区| 亚洲欧美日韩一区在线观看| 免费在线观看亚洲视频| 亚洲精品一区二区三区52p| 青草内射中出高潮| 久久综合五月天| 久久亚洲精精品中文字幕早川悠里| 蜜桃18禁成人午夜免费网站| 柠檬福利第一导航在线| 亚洲女同精品一区二区久久 | 国产日产高清一区二区三区| 丰满熟妇乱又伦精品| 日本无遮挡吸乳呻吟视频| 玩弄人妻奶水无码AV在线| 沐浴偷拍一区二区视频| 亚欧色一区w666天堂| 国产污污视频| 在线观看女同一区二区| 色与欲影视天天看综合网| 18禁高潮出水呻吟娇喘蜜芽| 男人深夜影院无码观看| 久久一区二区三区老熟女| 两个人看的www免费视频中文| 亚洲精品国产字幕久久vr| 蜜桃人妻午夜精品一区二区三区| 日本污ww视频网站| 宝贝把腿张开我要添你下边动态图| 97人妻无码免费专区| 精品女同一区二区三区| 天堂aⅴ无码一区二区三区| 国产免费看网站v片不遮挡| 国产丝袜一区丝袜高跟美腿| 亚洲视频在线观看|