網路傳輸的加密與解密
由於網際網路早期並沒有考慮到資料報文安全的問題,早期的理念都是基於進行通訊的。現在隨著網路興起,網際網路上慢慢有很多“犯罪團體”,用較低的犯罪成本通常是基於一個網路通訊協議的一個小的漏洞來完成竊取、篡改、重播其他人的資料報文。
而往往計算機網路安全維護者和那些惡意攻擊者玩的就是一個類似貓鼠遊戲,網路安全維護者處處考慮對計算機的安全負責,而惡意攻擊者處處找安全的漏洞。而對於那些惡意攻擊方式大體分兩種。
一種叫被動攻擊,大體上來說就是竊聽,攻擊者獲得傳輸資訊,捕獲了資料流量。而另外一種叫做主動攻擊,即偽裝,冒名頂替資料接受者。重播,把竊取的訊息一遍遍的傳送給接收方。修改、把其他人的資訊擷取下來篡改一番。而針對那些惡意的攻擊者,我們的網路安全機制就規定了,至少要保證在安全的網路通訊下,這兩點是必備的,
一、保證資料完整性,保證是傳送方傳送的資訊沒有被非授權修改 插入刪除重複傳送。
二、安全認證,為了驗證傳送者的身份,要求傳送者做數字簽名,證明是他自己的身份。
為了下面更好的講述,現在引入幾個概念:
明文 指的是傳送方想要接收方獲得的可讀資訊,說白了,就是大家都能看懂的資訊啦。
密文 把明文經過一些加密演算法後生成的一堆正常的地球人無法直接讀懂的字串。
金鑰 就是在同一種演算法內明文、密文之間相互轉換需要輸入的資料,如果輸錯了,就無非獲得正確的明文資訊啦。
演算法(計算機) 無非就是利用一些數學公式演算法的方式。
在計算機加密方式有以下幾種:
一、對稱加密方式:(AES、DES)
在對稱加密演算法中,資料發信方將明文(原始資料)和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的金鑰只有一個,發收信雙方都使用這個金鑰對資料進行加密和解密,這就要求解密方事先必須知道加密金鑰。
該演算法的缺點是,如果一旦金鑰洩漏,那麼加密的內容將都不可信了。
傳送方和接收方都使用同一個金鑰對資訊進行加密、解密。這裡舉個例子就好理解了,假設XX村有個寡婦叫小翠,跟隔壁的二狗有“交流”,小翠要和二狗通訊,通常都是寫一些大家都能理解的語句“月上柳梢頭,人約黃昏後。”一類的吧,萬一“信”讓不懷好意的大牛截取了,張大牛開啟信就看到了祕密了。這個似乎就很尷尬了,於是小翠和二狗商量好了,採取用他倆人的“暗號”對信加密呀。
這樣,小翠和二狗兩個人都擁有同一個金鑰,就可以情意綿綿的通訊啦,對於大牛來說,他沒有金鑰,就算截取了信,也是隻能看到一堆亂碼。但是,萬一小翠要是腳踩N只船,和不同的人都有“交流”,豈不是小翠要記得好多金鑰?萬一大牛利用一些手段,截取了資訊,破解了金鑰,這樣的加密就毫無意義了,再設想一下,大牛截取了,破解不了,但是他又一次生成了不一樣的資訊發給二狗,二狗也並不知道小翠要表達什麼,這樣豈不是曲解了原意了麼?還有最重要的,如果小翠和二狗並沒有辦法相見,小翠加密以後,怎麼把金鑰告訴二狗呢???
這樣,對稱加密的缺陷就顯現出來了:
金鑰真的是過多,身份也無法認證,更不用提資料完整性可靠了,同理,金鑰交換就很困難。
但是本質上說,對稱加密的速度還是蠻快的。
二、非對稱加密方式
非對稱加密演算法需要兩個金鑰:公開金鑰(publickey)和私有金鑰(privatekey)。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有金鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密(這個過程可以做數字簽名)。
非對稱加密主要使用的是RSA演算法。
W.Diffie和M.Hellman 1976年在IEEE Trans.on Information刊物上發表了文章,提出了“非對稱密碼體制即公開金鑰密碼體制”的概念,開創了密碼學研究的新方向。該加密方式規定了金鑰需要有一對兒
一個公鑰(Public Key)和 一個私鑰(Private Key/Security Key),如果用公鑰加密資訊,就需要用相同配對的私鑰才能解密,反之亦然。
讓我們看看非對稱加密的過程是什麼樣子的:
Tom如果想跟Jerry通訊:
Tom再獲得了Jerry的公鑰以後用Jerry的公鑰加密了一段小的“資料”,放到要傳輸的資訊後面,一併發給Jerry,假設通道傳輸時沒有被別人竊聽破壞,Jerry拿到這個資料,想讀取內容,只能通過它自己的私鑰才能開啟那小段資料。此外因為Tom用Jerry的公鑰加密,也能夠保證獲取到正確資訊的一定是Jerry本人(Jerry的私鑰沒有洩露),這樣Jerry不僅拿到了資料也保證了Jerry本人拿到的。非對稱加密方式在很大程式上保證了資料的安全性。但是沒有一種辦法能保證萬無一失,假設這個資料不幸被第三方的Dog拿到了,Dog雖然不知道Jerry的私鑰是什麼,但是Dog惡意破壞資料,隨便用一個私鑰就解密資料,得到一種錯誤的資訊。
非對稱加密的演算法:
RSA
D-H
Elgamal
等等
但是這裡有個很大的問題,Tom和Jerry雙方怎麼取得各自的公鑰呢??是不是雙方需要一個可靠的機構或者是第三方個人來擔保雙方獲得的公鑰是正規途徑得來的。而且公鑰加密本身生成的密碼就很長,意味著解密時間也就很長。
非對稱加密演算法
優點:資料可靠性相當強,很大程式上保證了身份認證。
缺點:生成大量字串故解密速度較慢,若用公鑰加密,公鑰傳輸的渠道成問題。
三、單向加密(MD5)
單向加密,它自己無法進行解密過程,不能用作直接進行加密資料資訊。它採用兩種MD5和SHA演算法方式,把一段資料進行加密處理,獲得一個叫做“特徵碼”的東西。
這段“特徵碼”跟原資料資訊半毛錢關係沒有。假設現在有人採用高科技手段篡改了檔案內容,此時檔案內容做了改動,哪怕是微小改動,被修改過以後的檔案再次提取“特徵碼”。結果也會發生翻天覆地的變化,加密學裡稱之為雪崩效應(avalanche effect)。這種對於資料內容的識別很直接,一眼就能辨別資料內容有無修改。“特徵碼”識別過程我們好比照妖鏡一樣,偽裝的再好的妖精也會被識別出來。
就讓我們採取md5方式在linux上做個小例項:
1 2 3 4 5 6 7 8 9 10 11 |
[[email protected] tmp] # cat 1.txt
I have a dream.
[[email protected] tmp] # md5sum 1.txt
431ee9fa1c63997e59586b118905d32d 1.txt
[[email protected] tmp] # cat > 1.txt << EOF
> i have a dream.
> EOF
[[email protected] tmp] # md5sum 1.txt
10734d2b3be4151b61faea8a7cc622af 1.txt
本來1.txt的文件內容是I have a dream,我們把它進行md5演算法加密,獲得一個
431ee9fa1c63997e59586b118905d32d這就是原資料1.txt的長度為256bits的“特徵碼”
|
1 |
而我們一旦對原檔案的資料內容進行個微小的修改把“I ”改成“i”結果又偷偷寫回到原檔案之中
|
結果確發現大相徑庭,10734d2b3be4151b61faea8a7cc622af變成這個“特徵碼”了。用它來甄別資料是否被人偷偷的改過是不是很有效?
讓我們對上述的做個總結,
我僅僅是想快速的對資料進行加密對其他人傳送的時候,我可以採取對稱加密的辦法。
我們要驗證傳送接收雙方的身份真偽,可以用“非對稱加密”辦法。
我們想知道資料內容有沒有被人非法篡改過,就用“單向加密”方式。
所以大致上
對稱加密:快速
非對稱加密:認證身份
單向加密:驗證資料內容
這裡就有個好的意見,如果我們想跟另一個機構或個人通訊,不妨把上述三點都揉在一起,這樣任何都會照顧到了。這樣就大致誕生了PKI裡面叫做“公鑰基礎通訊設施模型”。
模型大體上步驟是這樣的,還是以Tom和Jerry為例:
此時我們的Jerry收到資訊,它的解密步驟如下:
這樣是不是就能夠保證通訊雙方萬無一失了呢??看著很是天衣無縫,但是其實仔細想想,似乎哪裡還有蹊蹺。
Tom想跟Jerry通訊,Tom是怎麼獲得Jerry的公鑰的呢????
看看,原來是如此縝密的通訊機制裡還有遺漏,我們仍無法保證資料夠保密的。Tom和Jerry如何可靠的獲得真正屬於本人的公鑰的?看來得找一個牢靠的第三方,一個能夠保障雙方身份都可靠的仲裁機構了。對,這就是CA的誕生了。
==================================CA(Certification Authority)==========================
CA就是認證身份的中心,用它來確認公鑰擁有者的真實身份!!它會給Tom和Jerry每個人發給類似***一樣的“數字證書”。而且對於這個CA的第三方几乎沒人敢懷疑它是“冒牌貨”。那麼CA是如何進行認證的呢?
CA會利用它自己的私鑰為數字證書附加上數字簽名,類似於上公安局蓋上大印了一樣。
通常我們的CA採取x.509格式資訊的數字證書
·證書的版本資訊;
·證書的序列號,每個證書都有一個唯一的證書序列號;
·證書所使用的簽名演算法;
·證書的發行機構名稱,命名規則一般採用X.500格式;
·證書的有效期,現在通用的證書一般採用UTC時間格式;
·證書所有人的名稱,命名規則一般採用X.500格式;(這裡必須要寫真實的主機名)!!!
·證書所有人的公鑰。
·證書發行者對證書的簽名。
但如果Tom想申請一個證明自己公鑰所有權的CA的數字證書並不是那麼容易,Tom需要填寫一個類似“入黨申請書”一樣的東西交給CA,CA進行實地考察,看看Tom三代是否有不合法的,看看Tom是不是一個品德高尚的人等等,核實成功了,CA才會簽署表示同意。
相關推薦
網路傳輸的加密與解密
由於網際網路早期並沒有考慮到資料報文安全的問題,早期的理念都是基於進行通訊的。現在隨著網路興起,網際網路上慢慢有很多“犯罪團體”,用較低的犯罪成本通常是基於一個網路通訊協議的一個小的漏洞來完成竊取、篡改、重播其他人的資料報文。 而往往計算機網路安全維護者和那些惡意攻擊者
自定義網路傳輸資料加密與解密
最近做一個電商類的APP,進行後臺資料介面的呼叫。這期間涉及到財務賬目的往來,自然很需要重視資料安全的問題。我沒有搞過爬蟲、抓包之類的技術,但是如果傳輸過程中的資料被抓,如果被破解了肯定會出問題的。所以我考慮自己做一個加密和解密的演算法,在後臺將資料打包後進行加密,APP拿
加密與解密
加密與解密安全與服務:數據的加密和解密:OpenSSL(TLS):ssl基本被淘汰,TLS取而代之openssh:dropbear軟件DNS:BIND軟件,功能強大,伯克利的web server:網站服務,最重要的,工作重點 應用程序:httpd(ASF:apach軟件基金會維護)
字符串的加密與解密
ffffff end -s initial size sele har tput ear SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } .L
Java加密與解密筆記(二) 對稱加密
解決 理解 span ring println key ted utf-8 rate 前面的僅僅是做了編碼或者摘要,下面看看真正的加密技術。 DES public class DESUtil { static final String ALGORITHM = "
Java加密與解密筆記(三) 非對稱加密
arr 內容 phy 資料 密碼 load esp uid user 非對稱的特點是加密和解密時使用的是不同的鑰匙。密鑰分為公鑰和私鑰,用公鑰加密的數據只能用私鑰進行解密,反之亦然。 另外,密鑰還可以用於數字簽名。數字簽名跟上文說的消息摘要是一個道理,通過一定方法對數據內容
Java 課堂作業 加密與解密
源代碼 main nextline 流程 選擇 rgs mage put ext 1.設計思路 首先根據提示輸入一段字符串 利用charAt()將字符串的每個字符分解出來,要加密的話轉換成int類型後加3,解密的話轉換成int類型後減3,然後再轉化為char類型 新定義一個
關於字符串加密與解密
scanner ascll for str case home class 進行 todo 古羅馬皇帝凱撒在打仗時曾經使用過以下方法加密軍事情報: 請編寫一個程序,使用上述算法加密或解密用戶輸入的英文字串要求設計思想、程序流程圖、源代碼、結果截圖。 【設計思想】
3. 深入研究 UCenter API 之 加密與解密(轉載)
method href img 破解 cti subst != efault times 1. 深入研究 UCenter API 之 開篇 (轉載) 2. 深入研究 UCenter API 之 通訊原理(轉載) 3. 深入研究 UCenter API 之
安全與加密-使用gpg實現加密與解密
cal 分享圖片 進行 imp rds 根據 輸出 mon -o 對稱加密算法加密和解密使用同一個密鑰常見的算法:DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5? 特性:1、加密、解密使用同一個密鑰,效率高2、將原始數據分割成固定大
security 02: 加密與解密 、 掃描與抓包 、 總結和答疑 、 SELinux安全防護
一段 數字簽名 def 接口 數據流 5.1 調用 message systemctl day01一、selinux安全防護二、數據 加密 解密三、抓包與掃描++++++++++++++++++++++++++++++一、selinux安全防護1.1 selinux 介紹1
原創圖書:黑客攻防:實戰加密與解密工具包下載地址
ont ike ack 百度 密碼 style 工具包 下載 href 說明:百度每一年都會對分享的進行清理,所以原來的工具包地址失效,請自行下載。黑客攻防:實戰加密與解密工具包下載地址https://pan.baidu.com/s/1mjoGYso 密碼:ezwthttp
以前寫的兩本書《安全之路:Web滲透技術及實戰案例解析(第2版)》和《黑客攻防實戰加密與解密》
Web滲透技術及實戰案例解析 黑客攻防實戰加密與解密 應一些朋友的要求,我重新將書封面和購買地址發一下說明一下:www.antian365.com原來域名轉移到國外去了。現在國家對境外域名在國內訪問必須實名制,進行備份啥的,情況你懂的。最近正在制作《黑客攻防實戰加密與解密》的視頻課程,對黑客攻防過程遇
數據的加密與解密
數據機密解密基礎 數據的加密與解密基礎 系統安全實現的目標: 1)機密性:
財務軟件加密與解密設計思路
編碼 提交 base pub a* mac org 生成 pass (1)RSA目前只知道有公鑰和私鑰,能加密解密字符串,但不能直接加密解密文件。 (2)DES可以通過密碼進行加密解密文件。 (3)DES用的密碼,可以使用RSA的公鑰和私鑰進行一下二次加密,以保護。
加密與解密第三章:IDA的基本操作
substr line for src 用法 標準庫 set poi 調用 更改數據為結構體和枚舉類型 查看輸入和輸出的idc腳本 //Imports.idc ?г??????????????? //(c) www.PEDIY.com 2000-2008 #includ
ROT13 加密與解密
過去 style python list 只需要 utf-8 nbsp 開頭 down ROT13簡介: ROT13(回轉13位)是一種簡易的替換式密碼算法。它是一種在英文網絡論壇用作隱藏八卦、妙句、謎題解答以及某些臟話的工具,目的是逃過版主或管理員的匆匆一瞥。ROT13
leetcode-535. TinyURL 的加密與解密
pri sign name key tin zab you 加密 {} TinyURL是一種URL簡化服務, 比如:當你輸入一個URL https://leetcode.com/problems/design-tinyurl 時,它將返回一個簡化的URL http://ti
CryptoJS文件加密與解密
方法 latin1 文件加密 debugger bin ret put mode mar import React, { Component } from ‘react‘;import CryptoJS from ‘crypto-js/crypto-js‘import {
Linux OpenSSL 簡單加密與解密字元
場景 shell指令碼中存在明文密碼 客戶要求禁止使用明文密碼,密碼做加密處理. 方案 在網上了解到了Linux OpenSSL加密解密工具 可以指定各種加密演算法為字元,檔案做加密處理. 加密的案例比較多,解密的寥寥無幾. 有興趣的