密碼學題型速記

寫在前面

本篇文章根據老師給的重點有針對性的快速複習。

對於河南大學的學弟學妹們,如果你們任課老師是袁老師的話,他會給複習要點,跟着複習要點有針對性的複習就行。

判斷題2*5

  • 題型太雜無法預測,可能考PPT黃色或黑色部分的內容

簡答題5*6

範圍

  • 清楚信息安全專業學習密碼學的原因
  • 掌握流密碼的基本思想
  • 理解分組密碼的CBC工作模式,能夠畫出該模式的加密示意圖
  • 理解弱單向函數與強單向函數的定義
  • 能夠知道5種密碼學新方向或新技術(寫出來5個就行)
  • 第六個可能是標黃的也可能是標黑的

習題

1.清楚信息安全專業學習密碼學的原因 (非標準答案)(必考!

答:信息在社會中的地位和作用越來越重要,而其安全也愈發重要,而密碼學是保障信息安全的核心技術。密碼學已滲透到我們日常生活各個方面。比如公鑰密碼技術用於數字簽名,認證服務,沒有它,常用的網上支付系統就無法存在。還有一些重要的用戶登錄系統,手機通信中的信息加密等也依賴密碼學。信息安全專業學習密碼學有利於學生了解如何保障信息的安全和基本思想的建立。

2.流密碼的基本思想: (必考!)

image-20200616215215527

3.CBC工作模式爲:它一次對一個明文分組(8個字節一組)加密,每次加密使用同一密鑰,加密算法的輸入是當前明文分組和前一次密文分組的異或,因此加密算法的輸入不會顯示出這次的明文分組之間的固定關係,所以重複的明文分組不會在密文中暴露出這種重複關係 (必須背會!

CBC模式加解密示意圖必考!

image-20200614163017246

加密: Ci= Ek[Pi⊕Ci-1] (可認爲C0=IV) 解密:Pi= DK[Ci]⊕Ci-1

IV初始向量與第一個明文分組異或,應像密鑰一樣被保護。該模式能夠獲得保密性也可認證,適合加密64比特的消息

4.弱單向函數和強單向函數必考!

單向函數:已知h,求使得H(x)=h的x在計算上是不可行的。

已知x,找出y (y≠x) 使得H(y)=H(x)在計算上是不可行的,若單向函數滿足這種性質則稱其爲弱單向函數 (必須會背!

找出任意兩個不同的輸入x、y,使得H(x)=H(y)在計算上是不可行的,若單向函數滿足這種性質則稱其爲強單向函數 (必須會背!

已知一個另找一個使得H函數相等是弱單向,任意給倆使其H函數相等是強單向(看誰單的很)

5.寫出5個密碼學新方向或新技術

身份基加密(IBE)、屬性基加密(ABE)、全同態加密、動態加密、可搜索加密

計算題10*4

範圍

  • 能夠根據給定的一個字節a,給定的AES仿射變換(*)和不可約多項式m(x),求出字節a在AES S盒中字節代替變換的結果(需要自己求逆,自己試試就出來了)
  • 能夠根據RSA算法進行加密與解密計算
    • a*b (mod q) = a (mod q) * b (mod q)
    • φ(n) = φ§*φ(q) = (p-1)*(q-1)
  • 能夠使用ElGamal數字簽名體制,進行簽名與驗證計算
    • a*b (mod q) = a (mod q) * b (mod q)
  • 能夠基於D-H密鑰交換協議計算生成通信雙方的共享密鑰

習題

1.對字節a=1011 0110字節替代變換,設a的逆爲a-1必考!

答:先求a的逆,再用仿射變換即可

1️⃣ 由a得(x7+x5+x4+x2+x)a-1 ≡ 1(mod x8+x4+x3+x+1)

所以a-1=x6+x5+x4+x3 即0111 1000 (二進制對應位數有1就代表有x的那一次方)

根據老師給的考試要點,仿射變換和m(x)題目會給出,a的逆試試就出來了

a*a-1即1011 0110*0111 1000 = 1101 0110 0100 00

a*a-1 mod m(x):1101 0110 0100 00 % 1000 1101 1(m(x)) = 1

考試時試試1的二進制,2的二進制,3的二進制,和a相乘%m(x)看是否爲1

2️⃣ 使用仿射變換 (注意要用a的逆而且注意x的順序從下往上讀)

注意是模2加,即只有0和1

即(0100 1110)2=(4E)16 注意也是從下開始讀 因爲最下面的是字節高位即最前面的01…

2.1 RSA加密體制中,接收方的公開鑰是(e,n)=(5,35),接收到的密文是C=10,求明文M必考!

答:( m ≡ cd mod n 所以得先算出d -----> d*e ≡ 1 mod φ(n) )

n=35 所以 p=5,q=7

φ(35) = (p-1)*(q-1) =4*6=24

因爲 d*e ≡ 1 mod φ(n) 所以d=5 (這個到時候一個一個試就行)

m ≡ cd mod n ≡ 105 mod 35 ≡ 5 (注意不是等號)

考試可求出明文再反推密文試下看看密文是不是10

2.2 假設明文m=5,e=7,p=11,q=13,給出RSA的加密解密過程必考!

答:n=p*q=11*13=143 φ(143) = (p-1)*(q-1) = 10*12=120

因爲d*e ≡ 1 mod φ(n) 即d*7 ≡ 1 mod 120 所以 d=103

加密:c ≡ me mod n ≡ 57 ≡ 47 mod 143

解密:m ≡ cd mod n ≡ 47103 ≡ 5 mod 143

3.ElGamal簽名體制中,假設p=19,g=13。簽名者A的私鑰爲x = 10,試計算公鑰。設消息M=15,k=11,求籤名過程並驗證。 (必考!)

答:公鑰:y ≡ gx mod p ≡ 1310 mod 19 = 6

簽名:r ≡ gk (mod p) ≡ 1311 mod 19 =2

s ≡ (H(m)-xr)k-1 (mod p-1) ≡ (m-xr)k-1 (mod p-1) ≡ (15-10*2)*11-1 mod 18 = 11

所以(r,s)=(2,11)

驗證:yrrs ≡ 62*211 mod 19 ≡ 8 ≡ gm (mod p) ≡ 1315 ≡ 8 mod 19

根據老師的重點中給出的a*b (mod q) = a (mod q) * b (mod q)應該是用在比如這題求62*211 mod 19就等同於求62 mod 19 * 211 mod 19 ≡ 17 *15 ≡ 8 mod 19

求上面的11-1mod 18:

11*x ≡ 1 mod 18可算出x=5,而11*11-1 ≡ 1 mod 18 即11-1 ≡ 5 mod 18

4.在Diffie- Hellman密鑰交換過程中,設大素數p=11,a=2是p的本原根。 (必考!
(1) 用戶A的公開鑰YA=9,求其祕密鑰XA。
(2)設用戶B的公開鑰YB=3,求A和B的共享密鑰K。

答:1️⃣ YA=aXA mod p = aXA mod p 即 9=2XA mod 11 所以 XA=6 (考試時一個一個試就行)

2️⃣ K=YBXA mod p = 36 mod 11 =3

論述題1*20 (任選一個即可)

  • 介紹一種密碼學協議研究與應用動態。
  • 提出一種安全應用場景,試設計出相應的密碼協議實現安全應用。
  • 介紹一種安全應用場景,分析該安全場景應用了哪些密碼技術,並簡述如何保障了安全性。

https://baike.baidu.com/item/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E

零知識證明

介紹

零知識證明是在20世紀80年代初提出的。它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。零知識證明實質上是一種涉及兩方或更多方的協議,即兩方或更多方完成一項任務所需採取的一系列步驟。證明者向驗證者證明並使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關於被證明消息的信息。

要是太多這段可省略

零知識證明起源於最小泄露證明。設P表示掌握某些信息,並希望證實這一事實的實體,設V是證明這一事實的實體。假如某個協議向V證明P的確掌握某些信息,但V無法推斷出這些信息是什麼,我們稱P實現了最小泄露證明。不僅如此,如果V除了知道P能夠證明某一事實外,不能夠得到其他任何知識,我們稱P實現了零知識證明,相應的協議稱作零知識協議。

例如,A要向B證明自己擁有某個房間的鑰匙,假設該房間只能用鑰匙打開鎖,而其他任何方法都打不開。這時有2個方法:

①A把鑰匙出示給B,B用這把鑰匙打開該房間的鎖,從而證明A擁有該房間的正確的鑰匙。

②B確定該房間內有某一物體,A用自己擁有的鑰匙打開該房間的門,然後把物體拿出來出示給B,從而證明自己確實擁有該房間的鑰匙。

後面的②方法屬於零知識證明。它的好處在於,在整個證明的過程中,B始終不能看到鑰匙的樣子,從而避免了鑰匙的泄露。

應用動態

零知識證明在區塊鏈裏的應用非常廣泛。最早使用零知識證明技術的區塊鏈叫做 Zcash,這是許多零知識證明的做法之一,也是最有名的一個。V神就曾表示稱,零知識證明能夠被應用於以太坊區塊鏈上幾乎所有的場景。

相對於ZCash來說,比特幣的轉賬並不是完全匿名的,只要知道了一個比特幣地址,任何人都可以通過這個網站,查到這個地址的所有“消費”行爲。比如給誰轉了賬,又從誰那裏收到過轉賬,在以區塊鏈技術爲基礎的“賬本”上都詳細地記錄着。

例如A有3個BTC,要給B轉賬1個BTC,那麼在賬本上就會記錄着:A轉出了兩筆BTC,一筆爲1BTC,轉給了B;另一筆爲2BTC,轉給了自己。

那麼利用了“零知識證明”的ZCash是怎麼做到的所謂匿名呢?

ZCash的代幣爲ZEC。同樣假設A有3個ZEC,要給B轉賬1個ZEC。

首先,A會將自己的1個ZEC分成若干份隨機投入一系列的“混合容器”中,指定接收方B的地址,同時混入的時候還有其他交易方輸出的若干份ZEC。這些ZEC又被混合容器隨機拆分,再從這些被拆分生成的所有的ZEC中取出合計爲1ZEC的若干份,轉移到B的地址中,同時在發送的時間上也可以設置一定的延遲。

其中的“混合容器”,就是一條“公有鏈”。經過這條公有鏈一系列的“混幣”過程,就使得包括交易地址和具體金額在內的交易信息變得無從考證了。

零知識證明技術雖然會給區塊鏈帶來更強的匿名性,但同時會引起大量的監管問題,這是零知識證明技術無法迴避的一個問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章