加密基本知識:密鑰、簽名、證書

一、密碼(clpher)

  • 是一種用于加密或者解密算法
密碼學中的密碼(cipher)和我們日常生活中所說的密碼不太一樣,計算機術語『密碼 cipher』是一種用于加密或者解密算法,而我們日常所使用的『密碼 password』是一種口令,它是用于認證用途的一組文本字符串,這里我們要討論的是前者:cipher。

二、密鑰(key)

  • 密鑰是一種參數,它是在使用密碼(cipher)算法過程中輸入的參數
  • 密文 = 密碼(密鑰,明文) 或者 密文 = 加密函數(密鑰,明文)
  • 密鑰是決定密文是否安全的重要參數,通常密鑰越長,破解的難度越大,越安全。
  • 密鑰分為對稱密鑰非對稱密鑰
密鑰是一種參數,它是在使用密碼(cipher)算法過程中輸入的參數。同一個明文在相同的密碼算法和不同的密鑰計算下會產生不同的密文。很多知名的密碼算法都是公開的,密鑰才是決定密文是否安全的重要參數,通常密鑰越長,破解的難度越大,比如一個8位的密鑰最多有256種情況,使用窮舉法,能非常輕易的破解,知名的DES算法使用56位的密鑰,目前已經不是一種安全的加密算法了,主要還是因為56位的密鑰太短,在數小時內就可以被破解。密鑰分為對稱密鑰與非對稱密鑰

三、明文/密文

  • 明文(plaintext):加密之前的原始數據。
  • 密文(ciphertext):是通過密碼運算后得到的結果。

四、對稱密鑰(Symmetric-key algorithm)

  • 又稱為共享密鑰加密。(通訊的兩端共享)
  • 對稱是指:加密和解密的過程中使用的密鑰相同。
  • 需要在通訊的兩端共享,讓彼此知道密鑰是什么對方才能正確解密。
  • 計算速度快,但是不安全。?密文 = 密碼(密鑰,明文) ,知道了密文,密鑰和密碼,就可推出明文數據
  • 如果每個客戶端與服務端單獨維護一個密鑰,那么服務端需要管理的密鑰將是成千上萬,這會給服務端帶來噩夢
  • 常見的對稱加密算法:DES、3DES、AES、RC5、RC6
  • 采用更復雜的密鑰管理和交換協議,如公鑰基礎設施(PKI)和密鑰分發中心(KDC),來提高系統的安全性。

五、非對稱密鑰(public-key cryptography)

  • 又稱為公開密鑰加密
  • 服務端生成一對密鑰,私鑰與公鑰
  • 私鑰保存在服務端,公鑰發布出去,供任何人使用
  • 加密:密文 =? 密碼(明文,公鑰)==解密==>? ?明文 = 密碼(密文,私鑰)
  • 公鑰加密,私鑰解密
  • 客戶端公鑰加密明文得到密文傳輸給服務端
  • 服務端私鑰解密密文得到明文

六、數字簽名

  • 驗證傳輸的數據是不是真實數據
  • 防止傳輸的數據篡改或者被調包
  • 非對稱加密的一種應用場景,不過是反過來的,用私鑰來加密,通過與之配對的公鑰來解密。

過程梳理:

第一階段:創建并發送簽名
  • 生成摘要:服務器先使用SHA-256哈希算法對原始報文進行處理,產生一個唯一的摘要信息(Digest)。這一步確保了任何對報文的微小改動都會導致摘要不同。

  • 簽名生成:接著,服務器利用自己的私鑰對生成的摘要信息(Digest)進行加密,形成數字簽名。這一操作基于非對稱加密技術,確保了只有對應的公鑰能夠驗證簽名,從而證明報文來源的可靠性和完整性。

  • 發送信息:服務器將原始報文這個數字簽名一起發送給客戶端。注意,這里原始報文并未加密,而是明文發送,因為真正的安全在于簽名的驗證過程。

    • 摘要=hash(報文)
      數字簽名 = 密碼(摘要,私鑰)

      數字簽名 = 密碼(hash(報文),私鑰)

第二階段:驗證簽名與身份
  • 接收數據:客戶端收到服務器發送的原始報文及簽名。

  • 簽名驗證:客戶端使用服務器提供的公鑰嘗試解密接收到的數字簽名。如果解密成功,說明簽名確實是用對應的私鑰生成的,從而驗證了發送者的身份。同時,解密結果得到摘要信息(Digest1)。

    • 摘要 = 密碼(數字簽名,公鑰)

第三階段:驗證報文完整性
  • 計算本地摘要:客戶端對收到的原始報文同樣應用SHA-256哈希算法,計算出一個新的摘要信息(Digest2)。

  • 比對摘要:最后,客戶端比較從簽名解密得到的摘要(Digest1)與自己計算出的摘要(Digest2)。如果兩者完全相同,這表明報文在傳輸過程中未被篡改,內容完整可信。反之,如果摘要不匹配,則報文可能已被修改。

    • 摘要 = hash(報文)

七、數字證書(Certificate Authority)

????????權威機構給某網站頒發的認可憑證,確定服務器是真實的。

問題

舉例子:

????????A廠家給你們家安裝鎖,同時把鑰匙也交給你,只要鑰匙能打開鎖,你就可以確定鑰匙和鎖是配對的,如果有人把鑰匙換了或者把鎖換了,你是打不開門的,你就知道肯定被竊取了,但是如果有人把鎖和鑰匙替換成另一套表面看起來差不多的,但質量差很多的,雖然鑰匙和鎖配套,但是你卻不能確定這是否真的是A廠家給你的,那么這時候,你可以找質檢部門來檢驗一下,這套鎖是不是真的來自于A廠家,質檢部門是權威機構,他說的話是可以被公眾認可的。 ?

????????同樣的, 因為如果有人(張三)用自己的公鑰把真實服務器發送給瀏覽器的公鑰替換了,于是張三用自己的私鑰執行相同的步驟對文本Hash、數字簽名,最后得到的結果都沒什么問題,但事實上瀏覽器看到的東西卻不是真實服務器給的,而是被張三從里到外(公鑰到私鑰)換了一通

解決

? ? ? ? 如何保證你現在使用的公鑰就是真實服務器發給你的呢?

????????我們就用數字證書來解決這個問題。數字證書一般由數字證書認證機構(Certificate Authority)頒發,證書里面包含了真實服務器的公鑰和網站的一些其他信息,數字證書機構用自己的私鑰加密后發給瀏覽器,瀏覽器使用數字證書機構的公鑰解密后得到真實服務器的公鑰。這個過程是建立在被大家所認可的證書機構之上得到的公鑰,所以這是一種安全的方式。

? ? ? ? 機構私鑰:GS? ? 機構公鑰:GG

? ? ? ? 服務器公鑰:FG

? ? ? ? 實際上就是,在服務器分發公鑰FG給瀏覽器的時候,經過了一層機構的包裝,由機構用它自己的私鑰GS加密這個服務器給的公鑰FG信息,并會將對應的公鑰GG給到瀏覽器,瀏覽器通過這個公鑰GG解密得到公鑰FG。

八、數字簽名為什么要用私鑰加密公鑰解密?

數字簽名使用私鑰加密而公鑰解密的機制,其核心目的在于確保信息的完整性和來源的不可抵賴性

  • 驗證發送方身份:私鑰只有簽名者本人持有,且應保持秘密。使用私鑰進行簽名意味著任何人都可以使用與之對應的公鑰來驗證簽名,但不能偽造簽名。這證明了信息確實出自持有對應私鑰的發送方,從而確認了發送者的身份。

  • 保證數據完整性:數字簽名通常包括對原始消息的哈希值進行加密,而不是直接加密消息本身。這樣,接收方在用公鑰驗證簽名時,會重新計算消息的哈希并與解密后的簽名比較。如果兩者一致,說明消息在傳輸過程中未被篡改。

  • 不可抵賴性:由于私鑰的私密性,一旦消息被私鑰簽名,發送方就不能否認他們曾經發送過該消息,因為除了他們自己,沒有人能生成有效的簽名。這提供了法律上的可接受證據,即發送方認可了消息內容。

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

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

相關文章

數據恢復篇:5 款最佳 Mac 數據恢復軟件

說到保護我們的數字生活,數據恢復軟件的重要性怎么強調都不為過。無論您是意外刪除了假期照片的普通用戶,還是面臨硬盤損壞的專業人士,隨之而來的恐慌都是普遍存在的。幸運的是,數據恢復工具可以緩解這些壓力。在Mac用戶可用的眾多…

搜維爾科技:使用Manus VR手套和ART光學追蹤功能實現虛擬場景工業仿真操作

:使用Manus VR手套和ART光學追蹤功能實現虛擬場景工業仿真操作 搜維爾科技:使用Manus VR手套和ART光學追蹤功能實現虛擬場景工業仿真操作

Android C++系列:JNI中的線程操作

Java中創建線程三種方式: 繼承Thread類創建線程類;通過Runnable接口創建線程類;通過Callable和Future創建線程。Native 中支持的線程標準是 POSIX 線程,它定義了一套創建和操作線程的 API 。 我們可以在 Native 代碼中使用 POSIX 線程,就相當于使用一個庫一樣,首先需要包…

android中獲取視頻的預覽圖

1.將視頻導入raw文件中(轉為bitmap圖像) MediaMetadataRetriever 類主要用于從本地文件或者網絡上的文件獲取元數據信息,例如視頻的幀圖像、持續時間等,并不支持直接從網絡地址獲取視頻幀 MediaMetadataRetriever retriever new…

zabbix小白入門:從SNMP配置到圖形展示——以IBM服務器為例

作者 樂維社區(forum.lwops.cn)許遠 在運維實踐中,Zabbix作為一款強大的開源監控工具,被廣泛應用于服務器、網絡設備和應用程序的監控,成為保障業務連續性和高效運行的關鍵。然而,對于Zabbix的初學者來說&a…

FactoryBean 原理簡介

FactoryBean 首先是一個工廠類,它可以生產指定的Bean,特殊之處在于它可以向Spring容器中注冊兩個Bean,一個是它本身,一個是FactoryBean.getObject()方法返回值所代表的Bean。通過實現 FactoryBean 接口,你可以控制某個…

線程和進程的區別及應用場景

線程和進程的區別及應用場景 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!今天我們將深入探討計算機中兩個重要的概念:線程和進程。這兩者在操作系…

人工智能--循環神經網絡

個人主頁:歡迎來到 Papicatch的博客 課設專欄 :學生成績管理系統 專業知識專欄: 專業知識 文章目錄 🍉引言 🍉概述 🍈基本概念 🍍定義 🍍結構 🍌輸入層 &#…

行業模板|DataEase旅游行業大屏模板推薦

DataEase開源數據可視化分析工具于2022年6月發布模板市場(https://templates-de.fit2cloud.com),并于2024年1月新增適用于DataEase v2版本的模板分類。模板市場旨在為DataEase用戶提供專業、美觀、拿來即用的大屏模板,方便用戶根據…

探索編程世界的奇妙之旅

在這個數字化時代,編程,這一曾經看似高深莫測的技能,正逐漸滲透到我們生活的方方面面。從智能手機上的應用程序,到自動駕駛的汽車,再到支撐互聯網運行的龐大服務器集群,背后都離不開編程的力量。今天&#…

【CSharp】使用enum枚舉編程的優點

【CSharp】使用enum枚舉編程的優點 1.背景2.代碼1.背景 在程序開發中為什么會使用enum枚舉呢,其實不使用enum代碼也能跑, 但是隨著業務越來越復雜,年代久遠,那也許就只能你能跑。 所謂面向bug編程,來獲得不可取代地位的思維邏輯,在AI時代洪流面前,從一開始就將錯付。 …

開關電源的電路組成原理

一、 開關電源的電路組成 開關電源的主要電路是由輸入電磁干擾濾波器(EMI)、整流濾波電路、功率變換電路、PWM控制器電路、輸出整流濾波電路組成。輔助電路有輸入過欠壓保護電路、輸出過欠壓保護電路、輸出過流保護電路、輸出短路保護電路等。 開關電源…

【語音識別】傳統語音識別算法概述,應用場景,項目實踐及案例分析,附帶代碼示例

傳統語音識別算法是將語音信號轉化為文本形式的技術,它主要基于模式識別理論和數學統計學方法。以下是傳統語音識別算法的基本概述: 1. 基本原理 傳統語音識別算法包括以下幾個關鍵步驟: 預處理:將原始語音信號進行采樣、濾波、…

基于Hadoop平臺的電信客服數據的處理與分析④項目實現:任務18: 數據展示

任務描述 接下來我們需要將根據業務需求將某人按照不同維度查詢出來的結果,展示到Web頁面上。 任務指導 數據展示模塊流程圖: 數據展示使用Java的SSM框架,需要實現的代碼包括: 1. 實體類 2. 數據庫操作 3. 業務邏輯操作 4.…

新疆水博會將舉辦多場高端論壇探析水利科技創新發展

由新疆維吾爾自治區水利學會主辦的第三屆新疆國際水利科技博覽會暨新疆水利科技創新發展論壇,將于2024年8月8日至9日在新疆國際會展中心召開,同期將舉辦第三屆新疆國際供排水及智慧水務技術設備展覽會。 據悉,新疆水博會期間將舉辦新疆水利科…

springboot旅游管理系統-計算機畢業設計源碼16021

摘 要 本文旨在設計和實現一個基于Spring Boot框架的旅游管理系統。該系統通過利用Spring Boot的快速開發特性和豐富的生態系統,提供了一個高效、可靠和靈活的解決方案。系統將實現旅游景點信息的管理、線路規劃、跟團游玩、旅游攻略、酒店信息管理、訂單管理和用戶…

MySQL—創建和修改數據表結構

創建表 實例: CREATE TABLE user (id INT,name VARCHAR(255),password VARCHAR(255),birthday DATE) CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB; 顯示數據庫中的表 show tables from hsp; 顯示表結構 desc dept; 修改表 實例: 代碼&…

Rust破界:前端革新與Vite重構的深度透視(中)

Rust破界:前端革新與Vite重構的深度透視 Rust 重構 Vite 的深度剖析技術瓶頸與 Rust 的解法實例分析:性能躍升的實踐 Rust 在前端工具鏈的廣泛影響從 Vite 到更廣闊的舞臺成功案例:其他前端項目的 Rust 實踐技術動因與行業趨勢多樣性思考&…

第十五章 路由器綜合路由配置

實驗目標 掌握綜合路由器的配置方法; 掌握查看通過路由重分布學習產生的路由; 熟悉廣域網線纜的鏈接方式; 實驗背景 假設某公司通過一臺三層交換機連到公司出口路由器 R1 上,路由器 R1 再和公司外的另一臺路由器 R2 連接。…

C++中using關鍵字介紹

C中using關鍵字介紹 C中using關鍵字有兩種用法,using 指令(Using Directive)和using 聲明(Using Declaration) using 指令影響整個命名空間,using 聲明只影響特定名稱。 using 指令 定義:usi…