1. 程式人生 > >RSA與Diffie-Hellman相結合的保密通訊

RSA與Diffie-Hellman相結合的保密通訊

最近由於工作需要在思考身份驗證和保密通訊 ,把它記錄下來.
Deffie-Hellman 金鑰交換演算法最大的缺點的存在中間人攻擊的弱點,Deffie-Hellman簡述如下:
前提:約定一個大素數p,一個小於p的大整數g.
A: X = gx mod p; x是一隨機整數.
B: Y = gy mod p; y是一隨機整數.
A tell B X, B tell A Y.
那麼,Key = XY mod p.
此時AB雙方計算出來的金鑰相等,這是一個基於公認的求離散對數數學難題的演算法.
從上面的過程中很容易發現:如果有中間人監聽到交換過程,就可以知道X和Y,由於p和g是公開的,那麼中間人很容易根據Key = XY mod p計算出金鑰.從而成功實現中間人攻擊!

RSA是一個公鑰-私鑰加密演算法,對外公開Public Key,外部使用公鑰加密資料傳送給內部,內部使用Private Key解密資料。那麼可以使用這一特性來加密Diffie-Hellman的交換過程,以達到保密的目的。過程如下:
Client:從Server獲得Server的公鑰。
Client:生成一個臨時金鑰TempKey,用Public Key加密傳送給Server,同時附上
Deffie-Hellman生成的X
Server:使用TempKey加密Deffie-Hellman生成的Y,發給Client。
Client和Server分別計算將要使用的Key後,即可使用Key作為此次會話的會話金鑰。
為了加強安全性,Server的Public Key - Private Key可以定期更換,用於Deffie-Hellman的p和g也可以定期更換。

其實寫完這篇文章發現:使用RSA就可以達到協商金鑰的目的。不過寫了就寫了吧。

相關推薦

RSADiffie-Hellman結合保密通訊

最近由於工作需要在思考身份驗證和保密通訊 ,把它記錄下來.Deffie-Hellman 金鑰交換演算法最大的缺點的存在中間人攻擊的弱點,Deffie-Hellman簡述如下: 前提:約定一個大素數p,一個小於p的大整數g.A: X = gx mod p; x是一隨機整數.B:

《ServerSuperIO Designer IDE使用教程》- 7.增加機器學習算法,通訊采集數據算法結合。發布:4.2.5 版本

智能 play 路線 cnblogs 集成系統 互聯網平臺 active per git v4.2.5更新內容:1.修復服務實例設置ClearSocketSession參數時,可能出現資源無法釋放而造成異常的情況。2.修復關閉宿主程序後進程仍然無法退出的問題。2.增加機

子類的構造方法(super關鍵字結合

1、 隱式呼叫:子類構造方法沒有顯示呼叫父類構造方法(子類中沒有super()),那麼父類必須顯示提供無參構造方法。 這個時候,系統必須在父類中顯示呼叫無參建構函式。 顯示呼叫: 2、例項1: 在calcPerimeter方法中使用

二十分鐘教你如何將區塊鏈應用函式計算結合

前言 本篇文章適合對區塊鏈應用感興趣或是想要通過函式計算服務進一步開發區塊鏈應用的新人。本文將結合阿里雲區塊鏈服務、阿里雲函式計算服務、阿里雲日誌服務 以及社群應用 Marbles,手把手教大家如何將阿里雲區塊鏈服務與阿里雲函式計算服務相結合,並進一步提供業務上的結合場景,供大家開拓思路。 本文分為以下幾

Android底部tab標題欄結合

Android底部tab切換介面的實現比較簡單,可以利用TabHost直接實現,實現方式網上資源很多。那麼除了用特定的元件來實現tab外能不能自己寫程式碼實現呢。答案是肯定的。還有一個很常用的問題,就是不同的tab介面能否實現不同的標題欄?這個需求在專案中經常碰到,本文將講

Concepts NREC 8.7.X Suite Win32_64 6CD 楷模測量,適用於CAD系統結合的復雜測量工作

building ida 檢查 儀器 立體聲 sp1 linu 結構 編程 Trimble Inpho UASMaster 8.0.1 Win64 1DVD無人機數據處理系統 Trimble Inpho Photogrammetry 8.0.1 Win64 1DVD數字

AESRSA結合資料加密方案

RSA演算法是公開金鑰系統的代表,其安全性建立 在具有大素數因子的合數,其因子分解困難這一法則之上的。Rijndael演算法作為新一代的高階加密標準,執行時不需要計算機有非常高的處理能力和大的內 存,操作可以很容易的抵禦時間和空間的攻擊,在不同的執行環境下始終能

Android開發之聲網即時通訊訊飛語音識別結合

聲網是一家提供語音、視訊即時通訊服務的公司,他的服務大多基於WebRTC開源專案並進行一些優化和修改。而訊飛語音識別應該不用多說了,老羅在釋出會上介紹得已經夠詳細了。 那麼下面進入今天的主題,就是讓聲網和訊飛識別同時使用,之前可能有朋友沒遇到過這樣的需求,那先說一下讓兩者同

h5 網絡斷網時,返回上一個頁面 demo (檢測網絡代碼結合,更直觀看到結果)

oct width 加載 doctype lin 測試 htm mini offline 頁面一: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">

互聯網時代智能門鎖低功耗WiFi門鈴結合的發展趨勢

低功耗WiFi門鈴方案 智能門鎖 攬勝科技 WiFi門鈴 1080P低功耗WiFi攝像機 隨著互聯網應用的進一步擴展和延伸,繼手機之後,家居是又一個被逼到交叉路口的行業,特別是傳統企業都將面臨生死抉擇。如若不能及時抓住機遇,參與進來,下場恐怕會與諾基亞、摩托羅拉一樣完全被邊緣化,傳統智能門

Java的遞迴、如何結合

遞迴技術 需求:掃描D:\test所有子資料夾及子子資料夾下的.jpg檔案。 我們如果用迴圈來做這件事,我們不知道迴圈的結束條件,也不知道到底有多少層,所以比較麻煩。 我們可以用一種新的思想:遞迴。 遞迴舉例: 從前有一座山,山裡有座廟,廟裡有個老和尚,老和尚在給小和尚講故

expressexpress-art-template兩者結合使用方法

var express = require('express'); var app = express(); var comments = [ { name:'姓名', message:'你好呀', dateTime:'2018-12-12'

androidHTML5結合實現的省市縣三級聯動

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w

4.2JMeter 介面測試fiddler結合

關於JMeter工具的功能點介紹在網上找了一個相對全面的認知https://blog.csdn.net/zl1zl2zl3/article/details/78194194   安裝fiddler 連結:https://pan.baidu.com/s/1UNjatNPNO5my

將使用者物品結合的CF

1、Collaborative Filtering and Deep Learning Based Recommendation System For Cold Start Items 將冷啟動問題CS,根據稀疏程度進一步劃分CCS(稀疏性為100%)和ICS(稀疏性達到85%) (1)利

ssh遠端免密登入alias結合

操作Linux是現在任何一家IT公司都要求的技能,而且Linux博大精深,都是以各種命令l來操作,要學會靈活使用,提高工作效率 ssh免密登入和alias命令結合使用 在測試工作中,對於檢視一些問題,一些程序的時候,我們需要登入到服務端的後臺機器,去檢視

Opencv之HOG特徵SVM結合的人體檢測(增加自舉法)

Hello~洛基在上一篇關於人體檢測的文章末尾提到了自舉法,這裡科普一下,所謂自舉法,即在一個容量為n的原始樣本中重複抽取一系列容量也是n的隨機樣本,並保證每次抽樣中每一樣本觀察值被抽取的概率都為1/n。好像不是很通俗易懂,說人話就是——應用於行人檢測中的自舉方法是,對於訓

ssh祕鑰交換詳解實現 diffie-hellman-group-exchange-sha

    ssh的DH祕鑰交換是一套複合幾種演算法的祕鑰交換演算法。在RFC4419中稱為diffie-hellman-groupX-exchange-shaX 的演算法(也有另一種單純的 rsaX-shaX 交換演算法)。本文就以diffie-hellman-group-

Node.js 基於 ursa 模組的 RSA 加密解密(已IOS,Android實現加密通訊

前幾天除錯一個RSA加密,遇到一些問題,在網上找了好久好久,與Node.js相關的資源少得非常可憐,最後還是靠自己一步一步解決了,今天把程式碼和一些心得拿出來分享一下: cnode連結地址:https://cnodejs.org/topic/54d2de4cf

websocketnode.js完美結合

nds node spl 簡化 下載地址 iostat match 根據 所有 之所以寫下此文,是我覺得越是簡單的技術往往能發揮越重要的作用,隨著各種新的技術的誕生,實時web技術已經走進我們。websocket和node.js使開發實時應用非常簡單,同時性能也非常高。 關