密碼學專題 非對稱加密算法指令概述 DH算法指令

DH概述

  • 用于密鑰交換的公開算法,廣泛應用于各種安全協議
  • SSL協議同樣支持DH算法
  • DH算法使用之前需要預先共享兩個參數,本原元g和模n,這兩個參數影響到算法的安全性,因此需要預先生成并檢測其安全性
  • 生成這些必要參數和管理這些參數的指令dhparam、gendh和dh
  • 注意事項:DH算法本身不定義加密和解密的操作,只是單純的提供一個安全交換或者生成共同數據加密密鑰(用于對稱加密的會話密鑰)的方法
  • OpenSSL也沒有提供利用DH進行加密和解密操作的指令和生成DH的指令,只提供了生成DH參數和對DH管理的指令
  • 雖然OpenSSL目前的版本還保留了三個DH算法相關指令,但是dhparam指令已經集成了gendh和dh兩個指令的所有功能,在后續的版本中,gendh和dh指令很可能被取消或者賦予新的功能定義

生成DH算法參數

  • DH算法參數包括本原元g和模n,OpenSSL提供的指令gendh和dhparam都可以生成DH參數,并可以經過編碼保存在文件中。gendh指令的功能目前已經集成在dhparam指令中,但是dhparam指令還集成了dh指令的所有功能,在這部分,我們只介紹gendh指令。
  • 首先來看看gendh指令的格式:

  • out選項指定了DH算法參數輸出和保存的文件名,可以是標準輸出設備,比如Windows下就是當前指令行界面。
  • gendh指令沒有輸入選項
  • 使用gendh指令輸出的DH算法參數都是PEM編碼的?
  • DH算法參數指令的主要目的是產生公共模數n,而本原元g是指定的,目前常用的本原元有2和5,雖然3也偶爾被使用,但是OpenSSL并沒有提供支持。默認情況下使用2作為本原元。
  • 產生DH算法參數的時候engine選項的影響體現在兩個方面,DH算法產生函數方面隨機數生成函數方面。如果engine指定的設備有效并且支持DH算法參數的產生,那么將會調用Engine設備提供的DH參數生成函數而不再使用OpenSSL函數庫本身的DH參數產生函數。同時,如果Engine設備支持隨機數生成函數,那么在產生DH算法參數需要的隨機數的時候,調用的系列隨機數函數將直接使用Engine設備提供的相應函數,這時候,rand選項指定的隨機數種子文件是否有意義就依具體的Engine接口而定。
  • 隨機數文件選項randrand選項指定了產生隨機數時使用的隨機數種子文件,該文件一般來說可以為任意類型的文件。如果沒有指定,指令會從其他途徑獲取必要的隨機數種子。如果使用了engine選項并且該Engine接口支持隨機數產生函數,那么該rand選項指定隨機數文件的意義及是否被真正使用要根據具體的Engine接口而定。
  • DH密鑰長度依據DH算法參數的長度而定,所以,生成的DH算法參數的長度決定了DH密鑰的長度。一般來說,現在512位的DH密鑰是可以信任的,當然,如果你愿意,也可以采用更長的密鑰。密鑰越長,生成DH參數的時間越長,而安全性也越高。

例子

?管理DH算法參數

dh指令格式

  • 將生成的DH參數保存在某個文件里面,并不需要對其進行加密,因為這個參數原本就是公開的,但是為了使用這個參數需要進行一些管理操作
  • 管理操作:格式轉換、安全性測試、轉換成C編碼等操作
  • dh指令的格式

  • nform和outform選項指定DH參數編碼輸入和輸出文件的格式,默認情況下是PEM編碼。目前來說,支持的格式包括PEM編碼和DER編碼兩種格式。如果輸出信息不是編碼的DH參數,比如-text和-C選項的輸出,則不會受到out form格式選項的影響。
  • (3)輸入和輸出文件選項in和out? ?in選項指定了輸入的DH參數文件,該文件應該保存了PEM編碼或者DER編碼格式的DH參數,如果你是使用gendh指令生成的DH參數文件,那么肯定就是PEM編碼的。如果是DER編碼的DH文件,則需要在inform中指定其格式。out選項指定了輸出文件,包括輸出格式轉換后DH參數和text選項輸出的明文解析信息。
  • (4)DH參數檢測選項check? ?DH參數文件存放一段時間之后,你如果對該文件產生了懷疑,可以使用check選項對其中的DH參數進行檢查。check選項提供的檢查包含四個方面:模數是否正確,模數是否安全,本原元g是否正確及本原元是否合適。如果檢查有問題,指令會輸出提示信息。
  • (5)輸出C語言代碼選項CDH算法參數在使用的時候,既可以從文件讀入,也可以直接集成在代碼里面。OpenSSL提供了從DH文件參數轉換成相應的C語言代碼的方法,就是使用C選項。使用該選項后,輸出三部分信息:模數數組、本原元g數組及getdh函數。需要注意的是,C語言的輸出代碼只輸出到標準輸出設備,不會輸出到out選項指定的文件中
  • ?使用C選項后輸出的一個512位DH算法參數C代碼的例子

  • 其他選項? ?engine選項指定了要使用的Engine設備,如果該Engine接口支持在使用dh指令中要使用到的某個函數或者操作,那么就會使用Engine設備而不是OpenSSL本身算法庫的函數。text選項告訴指令輸出DH算法參數的明文解析信息,這包括模數n和本原元g的十六進制編碼數據。noout選項的使用會忽略輸出選項out,不輸出DH編碼參數到out選項指定文件或標準輸出設備。?

?更豐富和綜合的 DH算法參數指令 dhparam

  • 綜合利用了gendh和dh指令的所有功能

  • dsaparam選項是dhparam指令比gendh指令和dh指令唯一多出來的選項,該選項告訴指令生成一個DSA風格的DH參數,而不是使用典型的DH參數生成方式。所謂DSA風格的DH參數是利用DSA參數類型跟DH參數具有相似性的特點,先生成一個DSA參數,然后將其轉換為DH參數。
  • DSA參數生成相對于DH參數來說速度更快,而其達到相同安全性能需要的密鑰長度更短一些,所以使用DH算法的時候效率就顯得更高。但也是有代價的,使用DSA風格的DH算法參數,最好為每一個應用生成一個算法參數,否則容易受到一種稱為“小群”(smal-subgroup)的方法的攻擊。使用了dsaparam選項之后,如果使用了輸入文件,那么輸入文件格式都被視作DSA參數文件,dhparam指令將會把DSA參數轉換成DH參數。輸出則是一個DSA風格的DH參數文件。?
  • 輸出格式可以由用戶進行指定,可以選擇是保存成PEM格式還是DER格式,而不再受到gendh指令限制只能保存成PEM格式,然后再使用dh指令才能轉換成DER格式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446190.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 封裝和隱藏 權限修飾符

概念 問題的引入 封裝性的體現 權限修飾符 案例 package lesson.l11_oop2;/*** Illustration** author DengQing* version 1.0* datetime 2022/7/3 15:28* function*/ public class Person {private int age;public void setAge(int age) { /* if (age<0||age>…

if __name__ == __main___python中 __name__ == #x27;__main__#x27; 有什么作用?

python中if __name__ ‘__main__’ 的作用&#xff0c;到底干嘛的&#xff1f;有句話經典的概括了這段代碼的意義&#xff1a;“Make a script both importable and executable”就是讓你寫的腳本模塊既可以導入到別的模塊中用&#xff0c;另外該模塊自己也可執行。這句話&…

密碼學專題 非對稱加密算法指令概述 DSA算法指令

DSA算法和DSA指令概述 DSA算法是美國國家標準的數字簽名算法&#xff0c;只具備數字簽名的功能不具備密鑰交換的功能生成DSA參數然后生成DSA密鑰&#xff0c;DSA參數決定了DSA密鑰的長度三個指令首先是dsaparam指令&#xff0c;該指令主要用來生成DSA密鑰參數&#xff0c;并提…

每天定時打開某個網頁_Python科普帖定時通知

0 復習上一關我們學習了selenium&#xff0c;它有可視模式與靜默模式這兩種瀏覽器的設置方法&#xff0c;二者各有優勢。然后學習了使用.get(URL)獲取數據&#xff0c;以及解析與提取數據的方法。在這個過程中&#xff0c;我們操作對象的轉換過程&#xff1a;除了上面的方法&am…

java 構造器

概念 案例1 package lesson.l11_oop2;/*** Illustration** author DengQing* version 1.0* datetime 2022/7/3 15:28* function*/ public class Person {private int age;private String name;public Person() {this.age 18;}public Person(int age, String name) {this.age …

密碼學專題 信息摘要和數字簽名指令

信息摘要 區別于對稱加密和非對稱加密&#xff0c;信息摘要算數是一種不可逆的操作&#xff0c;無論輸入數據的大小輸出的數據長度是固定的信息摘要算數對輸入很敏感&#xff0c;即使數據變化很細微&#xff0c;輸出的結果會出現很大的差異從不同輸入得到相同的輸出的概率非常…

dataframe 篩選_Spark.DataFrame與Spark.ML簡介

本文是PySpark銷量預測系列第一篇&#xff0c;后面會陸續通過實戰案例詳細介紹PySpark銷量預測流程&#xff0c;包含特征工程、特征篩選、超參搜索、預測算法。在零售銷量預測領域&#xff0c;銷售小票數據動輒上千萬條&#xff0c;這個量級在單機版上進行數據分析/挖掘是非常困…

密碼學專題 證書和CA指令 證書和CA功能概述

為什么需要證書 實現了公鑰和私鑰的相互驗證&#xff0c;但是任何人都可以生成很多的密鑰對&#xff0c;密鑰對并沒有關聯實體身份&#xff0c;因此誕生可數字證書前提是CA是所有用戶都信任的用戶需要將自己的信息和公鑰交給CA進行認證生成一個屬于自己并被其與用戶認可的數字…

python怎么接外活_java和Python兩門語言,哪個適合接活單干?

謝邀。 根據知乎規矩&#xff1a;不說需求就挑語言的行為就是耍流氓。 如果接的活傾向于OA系統、管理系統之類的&#xff0c;建議是java&#xff0c;畢竟框架模板都很成熟&#xff0c;也比較好找&#xff0c;快速開發什么的在晚上搜一下&#xff0c;改改樣式就可以了。這些項目…

密碼學專題 證書和CA指令 申請證書|建立CA|CA操作|使用證書|驗證證書

Req指令介紹 功能概述和指令格式 req指令一般來說應該是提供給證書申請用戶的工具&#xff0c;用來生成證書請求以便交給CA驗證和簽發證書。但是&#xff0c;OpenSSL的req指令的功能遠比這樣的要求強大得多&#xff0c;它不僅可以生成RSA密鑰、DSA密鑰&#xff0c;以及將它們…

python語言編寫一個生成九宮格圖片的代碼_python實現圖片九宮格分割

大家都知道在微信朋友圈或者微博以及QQ動態中&#xff0c;有很多“強迫癥患者”發圖片都愛發9張&#xff0c;而有些圖是一張圖片分成的九宮圖&#xff0c;對于這種操作&#xff0c;大家知道是怎么做到的嗎&#xff1f; 本文就是用Python做的一個九宮格圖片生成器&#xff0c;是…

密碼學專題 OpenSSL標準轉換指令

概述 繁多復雜的各種文件編碼格式、證書格式和密鑰格式等。事實上&#xff0c;并非OpenSSL開發者想要將數字世界弄得如此令人頭疼&#xff0c;只是由于各種原因&#xff0c;數字世界存在各種不同的標準&#xff0c;為了盡量兼容這些不同的標準&#xff0c;OpenSSL開發者才相應…

java pakage、import關鍵字

package介紹 常用的包 import 案例

python數組初始化_Python Numpy 數組的初始化和基本操作

Python 是一種高級的&#xff0c;動態的&#xff0c;多泛型的編程語言。Python代碼很多時候看起來就像是偽代碼一樣&#xff0c;因此你可以使用很少的幾行可讀性很高的代碼來實現一個非常強大的想法。 一.基礎&#xff1a; Numpy的主要數據類型是ndarray&#xff0c;即多維數組…

密碼學專題 OpenSSL中SSL相關指令

再談SSL和OpenSSL 由于SSL協議已經是密碼學和PKI技術中非常具體的一個應用協議&#xff0c;為了實現它&#xff0c;OpenSSL在密碼學基礎應用和PKI技術的基礎實現上做了大量的工作&#xff0c;才逐漸形成和奠定了OpenSSL在密碼學應用和PKI技術開發中的重要基礎軟件包地位。Open…

python企業發放的獎金_你公司的年終獎發了嗎?

沒發, 被裁了. 跨境電商行業, 2017.7 入職,2018.11.19 下午接到裁員通知.. 人事找我聊了下,叫我一個星期之內走,補償1個月工資.... 我想想有點不對勁.. 于是我百度了下,5分鐘之后,提出了我的方案: 1、按照勞動法應該補償1.5個月,并且提前1月通知 2、補償2.5個月. 我立馬走. 最后…

使用MetaMask實現轉賬交易時附帶Input Data數據

進入如下頁面&#xff0c;點擊View Assert in Explorer進入Etherscan網站&#xff0c;就可以看到本賬戶先前所有的交易信息。 字段分析 Txn Hash 是交易的HashMethod&#xff1a;交易的類型&#xff0c;一般是兩種&#xff0c;如果是Transfer指定的是合約部署&#xff1b;如…

Ubuntu安裝Google瀏覽器

下載谷歌瀏覽器 直接使用Ubuntu自帶的火狐瀏覽器進行下載 默認下載到/tmp臨時文件夾里面&#xff0c;考慮到權限問題&#xff0c;需要將其移動到 Downloads文件夾下面使用命令 sudo mv ./goo&#xff08;Tab&#xff09;~/Down(Tab)使用命令行的方式進行下載 wget https://dl.g…