SlideShare a Scribd company logo
LFSR
oalieno
⼩例⼦
⊕
⊗
⊕
⊗
⊕
⊗0 1 1
001
⼩例⼦
⊕
⊗
⊕
⊗
⊕
⊗0 1 1
1 000
⼩例⼦
⊕
⊗
⊕
⊗
⊕
⊗0 1 1
1 0001
⼩例⼦
⊕
⊗
⊕
⊗
⊕
⊗0 1 1
1 00011
⼩例⼦
clk FF2 FF1 FF0
0 1 0 0
1 0 1 0
2 1 0 1
3 1 1 0
4 1 1 1
5 0 1 1
6 0 0 1
7 1 0 0
7 個 clock ⼀個循環
從數學的觀點
s2
⊕
s1 s0
⊗
⊕
⊗
⊕
⊗p2 p1 p0
• 初始值
• 回饋係數
• 轉移⽅程
s0, s1, s2
p0, p1, p2
si ≡ pi−1si−1 + pi−2si−2 + pi−3si−3 mod 2
從數學的觀點
• 初始值
• 回饋係數
• 轉移⽅程
s0, s1, ⋯, sm−1
p0, p1, ⋯, pm−1
si ≡ pi−1si−1 + pi−2si−2 + ⋯ + pi−msi−m mod 2
sm ≡ pm−1sm−1 + pm−2sm−2 + ⋯ + p0s0 mod 2
sm+1 ≡ pm−1sm + pm−2sm−1 + ⋯ + p0s1 mod 2
⋮
使⽤ LFSR 作為 Stream Cipher
• 把 LFSR 產⽣的輸出當作 key,拿去做 xor cipher
⊕
⊗
⊕
⊗
⊕
⊗0 1 1
1 00011
0 01
⊕
0 01
密鑰
明⽂
密⽂
Known Plaintext Attack
• 攻擊者不知道黃⾊的部分
• 攻擊者知道了⼀⼩部分明⽂以及對應的密⽂,可推出⼀些 LFSR 的輸出
⊕
⊗
⊕
⊗
⊕
⊗0 1 1
1 00011
0 01
⊕
0 01
密鑰
明⽂
密⽂
解聯立⽅程式
• 只要知道 2n 個 bits 的輸出,攻擊者就可以算出回饋係數
• 比如知道 ,那下⾯式⼦只會有 三個未知數
• 簡單的⾼斯消去法即可求解 ( 不⼀定有唯⼀解,也不⼀定最短 )
s0, s1, ⋯, s5 p0, p1, p2
s3 ≡ p2s2 + p1s1 + p0s0 mod 2
s4 ≡ p2s3 + p1s2 + p0s1 mod 2
s5 ≡ p2s4 + p1s3 + p0s2 mod 2
Berlekamp Massey Algorithm
• 先介紹 Linear Recurrence
• 在 mod 13 下,[ 1, 2, 3, 2, 12 ] 符合 linear recurrence relation [ 7, 3, 1 ]
•
•
1 ⋅ 1 + 2 ⋅ 3 + 3 ⋅ 7 ≡ 2 mod 13
2 ⋅ 1 + 3 ⋅ 3 + 2 ⋅ 7 ≡ 12 mod 13
Sequence satisfy a linear recurrence relation
iff
a0, a1, ⋯ p1, p2, ⋯, pm
∀i ≥ m, ai =
m
∑
j=1
ai−jpj
Berlekamp Massey Algorithm
• 這個演算法可以找到最短的 Linear Recurrence Relation
• 也可以⽤ Polynomial 來表⽰這個 Relation
• Relation [ 7, 3, 1 ] 就會是 x3
− 7x2
− 3x − 1
Berlekamp Massey Algorithm
from sage.matrix.berlekamp_massey import berlekamp_massey
berlekamp_massey([GF(7)(1), 5, 1, 5])
x^2 + 6
sagemath
output
Mixed LFSRhttps://en.wikipedia.org/wiki/Trivium_(cipher)
• 既然⼀個 LFSR 很容易被預測,那就兩個 LFSR
• 兩個不⾏,就三個,於是就有了 Trivium
Correlation Attack
• 那⾃⼰來簡單的組合⼀組 LFSR 來試試
class MYLFSR:
def getbit(self):
x1 = LFSR1.getbit()
x2 = LFSR2.getbit()
x3 = LFSR3.getbit()
return (x1 & x2) ^ ((not x1) & x3)
Correlation Attack
x1 x2 x3 輸出
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
75% of x3 = 輸出
Correlation Attack
x1 x2 x3 輸出
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
75% of x2 = 輸出
Correlation Attack
• 假設回饋係數是已知的
• 要找回三個 LFSR 的初始值最簡單的做法就是暴搜全部可能
• 假設⼀個 LFSR 有的初始值有 32 bits 那就要爆搜 96 bits
• 其實可以單獨暴搜 LFSR3,根據暴搜的初始值產出的 x3 去跟輸出比對,
相同的比例有⼤約 75% 的話,就很有可能是真正的初始值
• 同理 LFSR2 也可以這樣做,最後只剩下 LFSR3 就直接暴
• 從要暴搜 296 變成暴搜 3 232×
Fast Correlation Attack
• 有沒有比暴搜更好的做法,有
• Fast Correlation Attacks: Methods and Countermeasures
• A Fast Correlation Attack Implementation

More Related Content

DOC
02.第二章用Matlab求导
PPTX
10种排序简介
ODP
Ihome inaction 篇外篇之fp介绍
PDF
Pseudo Random Code
PPTX
DOC
計算機
PDF
Fast fading, Slow fading and Multipath effect in wireless communications
PDF
Optimum receiver for digital signal
02.第二章用Matlab求导
10种排序简介
Ihome inaction 篇外篇之fp介绍
Pseudo Random Code
計算機
Fast fading, Slow fading and Multipath effect in wireless communications
Optimum receiver for digital signal

What's hot (20)

PDF
Phy b9 1-2
PDF
Equalization in digital communication
PDF
C1 discrete time signals and systems in the time-domain
PDF
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
PDF
C2 discrete time signals and systems in the frequency-domain
DOC
09.第九章用Matlab求二元泰勒展开式
PDF
Channel
PPT
7习题课 机械波
PDF
Random Process
PDF
C5 correlation function and power spectrum density of a signal
PDF
電路學第七章 交流穩態分析
PPT
11 4环路定理
PDF
Phy b13 1-2
RTF
博大正方C语言试题V2.0
PDF
Lambda演算与邱奇编码
PDF
Deterministic Signal
DOC
07.第七章用Matlab解常微分方程
PPT
南开大学暑期ACM集训
 
PDF
指考甲公式
PDF
Digital Baseband Communication
Phy b9 1-2
Equalization in digital communication
C1 discrete time signals and systems in the time-domain
一维和二维移相光栅光强分布的计算及其在制备有序纳米硅阵列中的应用
C2 discrete time signals and systems in the frequency-domain
09.第九章用Matlab求二元泰勒展开式
Channel
7习题课 机械波
Random Process
C5 correlation function and power spectrum density of a signal
電路學第七章 交流穩態分析
11 4环路定理
Phy b13 1-2
博大正方C语言试题V2.0
Lambda演算与邱奇编码
Deterministic Signal
07.第七章用Matlab解常微分方程
南开大学暑期ACM集训
 
指考甲公式
Digital Baseband Communication
Ad

More from WEI CHIEH CHAO (7)

PDF
[Crypto Course] Hash
PDF
[Crypto Course] Block Cipher Mode
PDF
[Crypto Course] Bleichenbacher RSA Signature Forgery
PDF
[Crypto Course] RSA
PDF
[Crypto Course] Blockchain Security
PDF
Rootkit 101
PPTX
滲透測試基本技巧與經驗分享
[Crypto Course] Hash
[Crypto Course] Block Cipher Mode
[Crypto Course] Bleichenbacher RSA Signature Forgery
[Crypto Course] RSA
[Crypto Course] Blockchain Security
Rootkit 101
滲透測試基本技巧與經驗分享
Ad

[Crypto Course] LFSR