91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

算法科普:非對(duì)稱算法

嵌入式物聯(lián)網(wǎng)開發(fā) ? 來源:嵌入式物聯(lián)網(wǎng)開發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開發(fā) ? 2022-09-05 21:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通過本文的閱讀,你可以了解到以下知識(shí):

什么是非對(duì)稱加密算法

對(duì)稱加密算法和非對(duì)稱加密算法最本質(zhì)的區(qū)別是什么?

常見的非對(duì)稱算法哪些以及它們的特性和區(qū)別是什么?

非對(duì)稱加密算法的應(yīng)用場(chǎng)景有哪些?


非對(duì)稱加密算法


世界萬物都是平衡的,正如計(jì)算機(jī)的世界一樣,有0的地方就一定有1;同樣的,在算法理論上,既然有【對(duì)稱加密算法】,那肯定就會(huì)有【非對(duì)稱加密算法】。

非對(duì)稱算法,顧名思義:算法的執(zhí)行過程是不對(duì)稱的,也就是說加解密雙方的密鑰是不對(duì)稱的。在非對(duì)稱算法的理論上,密鑰有公鑰和私鑰之分:其中私鑰是代表自己唯一身份的一組密鑰標(biāo)識(shí),不同的非對(duì)稱加密算法,采用不同的數(shù)學(xué)理論來標(biāo)識(shí)這個(gè)“唯一性”,比如RSA算法,使用的是“很大的素?cái)?shù)”這種方法來標(biāo)識(shí);通常來說,私鑰是不對(duì)外公開的,就好比藏在自己心里的秘密一樣,不能被外人知曉,否則,數(shù)據(jù)的加密就變得不可靠,存在密鑰泄露的風(fēng)險(xiǎn)。與私鑰對(duì)應(yīng)的密鑰叫公鑰,公鑰與私鑰正好相反,它是允許對(duì)外公開的,也就是任何人都可以持有加密方的公鑰信息??吹竭@里,很多童鞋開始疑問:既然密鑰(公鑰)都公開了,那加密還有什么用,談何安全性可言?有這樣疑問的童鞋,大概思路還停留在【對(duì)稱加密算法】的基礎(chǔ)上,等我詳細(xì)講解完【非對(duì)稱加密算法】的加密和解密,你就一定明白到底是怎么一回事了。

非對(duì)稱算法的加密和解密的特點(diǎn)是:一段數(shù)據(jù)明文經(jīng)私鑰加密后,則需要使用該私鑰對(duì)應(yīng)的公鑰做解密;反之,一段數(shù)據(jù)明文經(jīng)公鑰加密后,則需要使用該公鑰對(duì)應(yīng)的私鑰做解密;即【公鑰加密對(duì)應(yīng)私鑰解密,私鑰加密對(duì)應(yīng)公鑰解密】。使用公式表達(dá)如下:其他E表示加密,D表示解密,PriKey表示私鑰,PubKey表示公鑰,A、B分別表示通訊雙方,P表示數(shù)據(jù)明文,C表示數(shù)據(jù)密文。

通訊方A 通訊方B

E(P) by PriKey[A] = C 對(duì)應(yīng) D(C) by PubKey[A] = P

E(P) by PubKey[B] = C 對(duì)應(yīng) D(C) by PriKey[B] = P

通過如上公式,我們可以很清晰的看到,通訊AB雙方需要使用非對(duì)稱算法加密通訊報(bào)文,必須想方設(shè)法獲取到對(duì)方的公鑰,這樣整個(gè)加密的通道才能完全打通。而前面我們也說到了,自己的公鑰一般都是公開的,允許任何人持有,只要保證自己的私鑰是保密的即可,這就是SSL通訊的理論基礎(chǔ)。在SSL通訊之前,通常會(huì)有通訊握手動(dòng)作,這個(gè)握手動(dòng)作就是為了取得對(duì)方可信任的公鑰,至于如何保證自己取得的公鑰就是對(duì)方的真實(shí)公鑰,而不是非法監(jiān)聽報(bào)文的“中間人”的假公鑰,這就是SSL雙向認(rèn)證要解決的核心問題。該部分的內(nèi)容,后續(xù)會(huì)有更為詳細(xì)的文章做更近一步的介紹。


對(duì)稱加密算法與非對(duì)稱加密算法的本質(zhì)區(qū)別


通過上面對(duì)非對(duì)稱算法的介紹,大家可以了解到非對(duì)稱算法核心的部分就是:密鑰分為公鑰和私鑰,私鑰保密公鑰公開,私鑰加密的密文需要使用公鑰解密,公鑰加密的密文需要私鑰解密。具體的非對(duì)稱算法和對(duì)稱算法的區(qū)別如下表所列:

算法 密鑰類型 加密解密的特點(diǎn)
對(duì)稱加密算法 通訊雙方有且只有一個(gè)共同的密鑰K 加密方使用密鑰K加密,解密方使用密鑰K解密
非對(duì)稱加密算法 密鑰有分私鑰和公鑰; 通訊雙方分別持有自己的私鑰和對(duì)方的公鑰; 加密方使用自己的私鑰加密數(shù)據(jù),解密方使用對(duì)方的公鑰解密數(shù)據(jù); 加密方使用對(duì)方的公鑰加密數(shù)據(jù),解密方使用自己的私鑰解密數(shù)據(jù);

非對(duì)稱加密算法的分類和對(duì)比


常見的非對(duì)稱加密算法有RSA算法、SM2算法;前者是國際通用的算法,后者是國密算法的一種。

RSA算法

RSA加密算法是一種非對(duì)稱加密算法。在公開密鑰加密和電子商業(yè)中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當(dāng)時(shí)他們?nèi)硕荚诼槭±砉W(xué)院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的?!菊裕?百度百科 RSA算法 】

RSA加密算法的密鑰長(zhǎng)度不像我們所認(rèn)知的對(duì)稱加密算法 ,它的密鑰長(zhǎng)度是可變的,一般用位來表示,常見的有1024位和2048位,甚至4096位。密鑰的位數(shù)越長(zhǎng),理論上來說,解密的難度越大,加密的強(qiáng)度就越大。綜合加密級(jí)別和使用的便利性,【RSA2048】是我們最常見的。當(dāng)RSA的密鑰位數(shù)確定了,那它的【模長(zhǎng)】也就確定了,模長(zhǎng)的值為密鑰位數(shù)對(duì)應(yīng)的字節(jié)數(shù);計(jì)算公式如下,其實(shí)M為模長(zhǎng),B為密鑰的長(zhǎng)度:

M = (B + 7) / 8 當(dāng)M等于1024位時(shí),對(duì)應(yīng)的模長(zhǎng)為128字節(jié);當(dāng)M等于2048位時(shí),對(duì)應(yīng)的模長(zhǎng)為256字節(jié)。

了解【模長(zhǎng)】的概念之后,我們需要知道RSA算法執(zhí)行加密解密操作時(shí),基本的數(shù)據(jù)塊長(zhǎng)度。在RSA算法中,執(zhí)行加密和解密操作,輸入的數(shù)據(jù)塊長(zhǎng)度都必須等于模長(zhǎng),否則算法內(nèi)部無法處理;即RSA密鑰的長(zhǎng)度不同,對(duì)應(yīng)輸入數(shù)據(jù)塊的長(zhǎng)度也是不同的,這一點(diǎn)與DES、AES等對(duì)稱加密算法是完全不一樣的。

假設(shè)我們有4個(gè)RSA接口

RSA_prikey_encrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pri_key);

RSA_prikey_decrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pri_key);

RSA_pubkey_encrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pub_key);

RSA_pubkey_decrypt(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pub_key);

有趣的是,當(dāng)我們有一段固定的數(shù)據(jù)in,分別輸入RSA_pubkey_encrypt和RSA_pubkey_decrypt接口,得出的out居然是一樣的!同樣的在類似的私鑰接口,也有類似的現(xiàn)象。經(jīng)過這個(gè)實(shí)驗(yàn),我么可以得出結(jié)論:根本沒有所謂的公鑰加密和公鑰解密之分,公鑰加密就是公鑰解密,私鑰加密也就是私鑰解密;所以我們應(yīng)該對(duì)公鑰私鑰、加密解密做個(gè)統(tǒng)一叫法,應(yīng)該就是私鑰運(yùn)算和公鑰運(yùn)算。所以以上的接口應(yīng)改為:

RSA_prikey_operation(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pri_key);

RSA_pubkey_operation(uint8_t *out, int *out_len, const uint8_t *in, int in_len, const RSA_KEY *pub_key);

SM2算法

SM2算法是國產(chǎn)的非對(duì)稱算法,它的誕生就是為了取代RSA算法。SM2性能更優(yōu)更安全:密碼復(fù)雜度高、處理速度快、機(jī)器性能消耗更小。SM2算法和RSA算法比較如下:

SM2 RSA
算法結(jié)構(gòu) 基本橢圓曲線(ECC) 基于特殊的可逆模冪運(yùn)算
計(jì)算復(fù)雜度 完全指數(shù)級(jí) 亞指數(shù)級(jí)
存儲(chǔ)空間 192-256bit 2048-4096bit
秘鑰生成速度 較RSA算法快百倍以上
解密加密速度 較快 一般

SM2算法與RSA算法類型,它也有公鑰和私鑰之分,它的密鑰特點(diǎn)是私鑰固定長(zhǎng)度32字節(jié),而公鑰有x和y兩個(gè)分量,每個(gè)分量都是32字節(jié),總共是64字節(jié)。

在執(zhí)行加密運(yùn)算時(shí),輸入數(shù)據(jù)塊的長(zhǎng)度是變長(zhǎng)的,而加密后的密文長(zhǎng)度等于輸入長(zhǎng)度+96字節(jié)。

在執(zhí)行簽名運(yùn)算時(shí),輸入數(shù)據(jù)塊的長(zhǎng)度也是變長(zhǎng)的,但簽名后的數(shù)據(jù)長(zhǎng)度則固定為64字節(jié)。

限于篇幅原因,后續(xù)再寫專門的文章來介紹SM2算法。


非對(duì)稱加密算法的應(yīng)用場(chǎng)景


值得注意的是,數(shù)據(jù)加解密的過程中,雖然公鑰和私鑰都可以用于加密,也都可以用于解密,并沒有嚴(yán)格的限制;但是,在實(shí)際的應(yīng)用中,通常有:

私鑰加密,公鑰解密:通常應(yīng)用有簽名、驗(yàn)簽,即產(chǎn)生簽名的一方使用自己的私鑰對(duì)數(shù)據(jù)進(jìn)行簽名操作,而驗(yàn)簽簽名數(shù)據(jù)是否合法的一方使用簽名方的公鑰對(duì)簽名數(shù)據(jù)進(jìn)行驗(yàn)簽;所以這里可以簡(jiǎn)單地認(rèn)為,簽名就是私鑰加密,驗(yàn)簽就是公鑰解密。

公鑰解密,私鑰解密:通常應(yīng)用在對(duì)數(shù)據(jù)的加密傳輸,即加密方使用解密方的公鑰做加密動(dòng)作,這樣就意味著這段加密數(shù)據(jù)只有解密方一人能解開,因?yàn)榻饷芊降乃借€是不公開的,只有它自己知道,這樣就可以很好地保證的加密數(shù)據(jù)的安全性。


此次關(guān)于非對(duì)稱加密算法的介紹,就到此結(jié)束,如果需要學(xué)習(xí)更多有關(guān)非對(duì)稱加密算法的知識(shí),可以自行深入學(xué)習(xí)RSA算法和SM2算法的更多算法細(xì)節(jié),相信你一定有更多的收獲。后續(xù)會(huì)有詳細(xì)介紹非對(duì)稱算法在實(shí)際應(yīng)用場(chǎng)景的文章,敬請(qǐng)關(guān)注,謝謝。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20442

    瀏覽量

    333986
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

    98040
  • 加密算法
    +關(guān)注

    關(guān)注

    0

    文章

    219

    瀏覽量

    26219
  • 非對(duì)稱算法
    +關(guān)注

    關(guān)注

    0

    文章

    1

    瀏覽量

    1002
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入解析SMFA非對(duì)稱系列表面貼裝TVS二極管

    深入解析SMFA非對(duì)稱系列表面貼裝TVS二極管 在電子設(shè)備的設(shè)計(jì)中,保護(hù)關(guān)鍵元件免受電壓瞬變和浪涌的影響至關(guān)重要。TVS(瞬態(tài)電壓抑制)二極管作為一種常用的保護(hù)器件,能夠在瞬間吸收大量的能量,將電壓
    的頭像 發(fā)表于 12-15 16:40 ?376次閱讀

    TPSMB非對(duì)稱系列TVS二極管:汽車應(yīng)用的理想保護(hù)方案

    TPSMB非對(duì)稱系列TVS二極管:汽車應(yīng)用的理想保護(hù)方案 在汽車電子領(lǐng)域,隨著電動(dòng)汽車的快速發(fā)展,對(duì)電子元件的性能和可靠性提出了更高的要求。TVS(瞬態(tài)電壓抑制)二極管作為一種重要的過電壓保護(hù)元件
    的頭像 發(fā)表于 12-15 16:20 ?468次閱讀

    深入淺出GMSSL:掌握SM2、SM3、SM4國密算法的高效實(shí)踐

    隨著國家信息安全戰(zhàn)略的推進(jìn),國密算法在各類安全系統(tǒng)中的應(yīng)用日益廣泛。GMSSL作為支持國密標(biāo)準(zhǔn)的重要工具庫,為開發(fā)者提供了SM2(非對(duì)稱加密)、SM3(哈希算法)和SM4(對(duì)稱加密)的
    的頭像 發(fā)表于 12-12 18:20 ?604次閱讀
    深入淺出GMSSL:掌握SM2、SM3、SM4國密<b class='flag-5'>算法</b>的高效實(shí)踐

    【深度實(shí)戰(zhàn)】MYD-LR3576 AMP非對(duì)稱多核開發(fā)指南:從配置到實(shí)戰(zhàn)

    一、什么是AMP?為什么重要?AMP(AsymmetricMulti-Processing)非對(duì)稱多處理架構(gòu),允許單個(gè)芯片的不同核心運(yùn)行不同的操作系統(tǒng)或裸機(jī)程序。相比傳統(tǒng)的SMP(對(duì)稱
    的頭像 發(fā)表于 12-05 08:07 ?7123次閱讀
    【深度實(shí)戰(zhàn)】MYD-LR3576 AMP<b class='flag-5'>非對(duì)稱</b>多核開發(fā)指南:從配置到實(shí)戰(zhàn)

    SM4算法實(shí)現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進(jìn)行加密、解密運(yùn)算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴(kuò)展都是采用32輪非線性迭代結(jié)構(gòu)
    發(fā)表于 10-30 08:10

    SM4算法原理及分享1

    SM4算法是一種分組密碼算法。其分組長(zhǎng)度為128bit,密鑰長(zhǎng)度也為128bit。加密算法與密鑰擴(kuò)展算法均采用32輪非線性迭代結(jié)構(gòu),以字(32位)為單位進(jìn)行加密運(yùn)算,每一次迭代運(yùn)算均
    發(fā)表于 10-30 06:54

    國密系列算法簡(jiǎn)介及SM4算法原理介紹

    所示: 非對(duì)稱加密算法:SM2算法可用于電子認(rèn)證服務(wù);SM9算法可用于各種互聯(lián)網(wǎng)新興應(yīng)用。 對(duì)稱加密
    發(fā)表于 10-24 08:25

    加密算法的應(yīng)用

    加密算法非對(duì)稱加密算法兩類。 對(duì)稱加密是一種加密方式,也稱為共享密鑰加密。加密和解密使用同一個(gè)密鑰。這種加密算法的優(yōu)點(diǎn)是加密和解密速度快,
    發(fā)表于 10-24 08:03

    非對(duì)稱密鑰生成和轉(zhuǎn)換規(guī)格詳解

    ”由“非對(duì)稱密鑰算法”和“密鑰長(zhǎng)度”拼接而成,用于在創(chuàng)建非對(duì)稱密鑰生成器時(shí),指定密鑰規(guī)格。 非對(duì)稱密鑰算法密鑰長(zhǎng)度(bit)曲線名字符串參數(shù)
    發(fā)表于 09-01 07:50

    如何在 MA35 系列微處理器 (MPU) 上開發(fā) AMP(非對(duì)稱多處理)應(yīng)用程序?

    如何在 MA35 系列微處理器 (MPU) 上開發(fā) AMP(非對(duì)稱多處理)應(yīng)用程序,并通過建立多個(gè)端點(diǎn)的過程促進(jìn)與其他內(nèi)核的多通道數(shù)據(jù)傳輸。
    發(fā)表于 08-19 06:11

    DFT算法與FFT算法的優(yōu)劣分析

    一概述 在諧波分析儀中,我們常常提到的兩個(gè)詞語,就是DFT算法與FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT算法,用戶往往關(guān)注的是能否達(dá)到所要分析諧波次數(shù)的目的,
    的頭像 發(fā)表于 08-04 09:30 ?1396次閱讀

    三種SPWM波形生成算法的分析與實(shí)現(xiàn)

    摘要:變頻技術(shù)作為現(xiàn)代電力電子的核心技術(shù),集現(xiàn)代電子、信息和智能技術(shù)于一體。而SPW(正弦波脈寬調(diào)制)波的產(chǎn)生和控制則是變頻技術(shù)的核心之一。本文對(duì)SPI波形生成的三種算法-對(duì)稱規(guī)則采樣法、不對(duì)稱規(guī)則
    發(fā)表于 07-31 13:34

    凌科芯安LKT4304安全芯片在智能家居網(wǎng)關(guān)中的應(yīng)用

    采用對(duì)稱加密與非對(duì)稱加密相結(jié)合的混合加密架構(gòu)。在智能家居網(wǎng)關(guān)與服務(wù)器通信過程中,非對(duì)稱加密算法(如RSA或SM2)用于密鑰協(xié)商與身份認(rèn)證。RSA
    的頭像 發(fā)表于 06-16 17:43 ?1227次閱讀
    凌科芯安LKT4304安全芯片在智能家居網(wǎng)關(guān)中的應(yīng)用

    安芯半導(dǎo)體發(fā)布全新防復(fù)制加密芯片RJGT28E30

    ECC橢圓曲線加密算法是一種非對(duì)稱加密算法,相對(duì)于對(duì)稱加密算法,更便于密鑰的管理,且相對(duì)于等密鑰長(zhǎng)度的RSA
    的頭像 發(fā)表于 06-10 17:53 ?1332次閱讀
    安芯半導(dǎo)體發(fā)布全新防復(fù)制加密芯片RJGT28E30

    請(qǐng)問OpenVINO?工具套件是否支持使用非對(duì)稱卷積的支持模型?

    無法確定使用非對(duì)稱卷積的模型是否受 OpenVINO? Toolkit 的支持
    發(fā)表于 03-06 07:58