Mật mã ứng dụng
Mã xác thực thông điệp
MÃ XÁC THỰC THÔNG ĐIỆP
‣ Toàn vẹn thông điệp
‣ MAC dựa trên PRF
‣ CBC-MAC và NMAC
‣ MAC padding
‣ PMAC và Carter-Wegman MAC
h t t p s : / / c l a s s . c o u r s e r a . o r g /
c r y p t o - p r e v i e w / c l a s s / i n d e x
MÃ XÁC THỰC THÔNG ĐIỆP
‣ Toàn vẹn thông điệp
‣ MAC dựa trên PRF
‣ CBC-MAC và NMAC
‣ MAC padding
‣ PMAC và Carter-Wegman MAC
h t t p s : / / c l a s s . c o u r s e r a . o r g /
c r y p t o - p r e v i e w / c l a s s / i n d e x
Toàn vẹn thông điệp
Mục đích ・Toàn vẹn, không cần bí mật
4
Ví dụ ・Bảo vệ các file công khai trên đĩa ・Bảo vệ các banner quảng cáo trên trang web
Toàn vẹn thông điệp: MAC (Message Authentication Code)
thông điệp m
tag
Alice
Bob
k k
?
Sinh tag: Kiểm tra tag:
tag ← S(k, m) V(k,m,tag) = ‘yes’
Định nghĩa. MAC I = (S, V) định nghĩa trên (K, M, T) là một cặp thuật
toán:
- S(k, m) output t thuộc T
5
- V(k, m, t) output ‘yes’ hoặc ‘no’
Toàn vẹn thông điệp cần một khóa bí mật
thông điệp m
tag
Bob
Alice
?
Sinh tag: Kiểm tra tag:
tag ← CRC(m) V(m,tag) = ‘yes’
・Kẻ tấn công có thể dễ dàng thay đổi thông điệp và tính lại CRC (Cyclic
redundancy check).
・CRC được thiết kế để phát hiện lỗi xảy ra ngẫu nhiên chứ không chống
6
được lỗi có chủ đích.
MAC an toàn
Khả năng của kẻ tấn công ・ kẻ tấn công có thể lấy được các tag ti ← S(k, mi) của m1, m2,…,mq
(m, t) /
(m1, t1),
, (mq, cq)
2 {
· · ·
}
Mục đích của kẻ tấn công: Giả mạo thông điệp ・đưa ra được một cặp thông điệp/tag (m, t) hợp lệ mới
7
Có nghĩa rằng: ・kẻ tấn công không thể tạo ra một tag hợp lệ cho một thông điệp mới ・đưa ra (m, t) kẻ tấn công thậm chí không tạo được (m, t’) với t’≠ t
MAC an toàn
Cho MAC I = (S, V) và một kẻ tấn công A. Ta định nghĩa một thử nghiệm
M
m2,
, mq
m1
· · ·
MAC như sau:
t2,
, tq
t1
2 S(k, m1)
· · ·
(m, t)
Thử thách k ← K Kẻ tấn công
(m1, t1),
, (mq, tq)
2 {
· · ·
}
n∏u V (k, m, t) = ’yes’ và (m, t) / ng˜Òc l§i
b = 1 b = 0
®
b
Định nghĩa. MAC I = (S, V) là MAC an toàn nếu với mọi thuật toán “hiệu
quả “ A:
8
AdvMAC[A,I] = Pr[Thử thách output =1] là “không đáng kể”
Câu hỏi
Xét I=(S,V) là một MAC.
m0
= m1
Giả sử một kẻ tấn công có thể tìm được sao cho
6
S(k, m0) = S(k, m1)
với 1/2 số khóa k trong K.
Vậy MAC này có an toàn không?
1. Có, kẻ tấn công không thể sinh tag đúng cho m0 hoặc m1
2. Không, MAC này có thể bị phá dùng tấn công chọn thông điệp
9
3. Nó phụ thuộc vào thiết kế của MAC
Câu hỏi
Xét MAC I=(S,V) và giả sử S(k,m) luôn output dãy 5 bit.
MAC này có an toàn không?
1. Không, kẻ tấn công có thể gợi ý tag cho các thông điệp
2. Nó phụ thuộc vào thiết kế chi tiết của MAC
3. Có, kẻ tấn công không thể sinh tag hợp lệ cho bất kỳ thông điệp
10
nào.
Ví dụ: Bảo vệ hệ thống files
Giả sử tại thời điểm cài đặt hệ thống tính toán:
…
File F1 File F2 File Fn
khóa k được sinh từ mật khẩu người dùng
tag=S(k, F1) tag=S(k, F2) tag=S(k, Fn)
Sau đó hệ thống bị nhiễm virus, và các file bị sửa đổi.
11
Người dùng khởi động lại vào OS sạch và nhập mật khẩu ・Khi đó: MAC an toàn sẽ cho phép phát hiện các file bị sửa đổi
MÃ XÁC THỰC THÔNG ĐIỆP
‣ Toàn vẹn thông điệp
‣ MAC dựa trên PRF
‣ CBC-MAC và NMAC
‣ MAC padding
‣ PMAC và Carter-Wegman MAC
h t t p s : / / c l a s s . c o u r s e r a . o r g /
c r y p t o - p r e v i e w / c l a s s / i n d e x
Nhắc lại: MAC an toàn
MAC: ・Thuật toán ký: t ← S(k, m) ・Thuật toán kiểm tra: V(k,m,t) = ‘yes’ hoặc ‘no’
Khả năng của kẻ tấn công ・ kẻ tấn công có thể lấy được các tag ti ← S(k, mi) của m1, m2,…,mq
(m, t) /
(m1, t1),
, (mq, cq)
2 {
· · ·
}
Mục đích của kẻ tấn công: Giả mạo thông điệp ・đưa ra được một cặp thông điệp/tag (m, t) hợp lệ mới
13
Kẻ tấn công không thể tạo tag hợp lệ cho một thông điệp mới
MAC an toàn từ PRF an toàn
Xét PRF F : K x X → Y ta định nghĩa MAC
IF = (S, V)
bởi ・S(k, m) := F(k, m) ・V(k, m, t) := [ ‘yes’ nếu t = F(k,m) ; ’no’ nếu ngược lại ]
thông điệp m
tag
Alice
Bob
k k
Sinh tag: chấp nhận nếu
14
tag ← F(k, m) tag = F(k,m)
Câu hỏi
Giả sử F : K x X → Y là một PRF an toàn với Y={0,1}10 .
MAC IF có phải là hệ MAC an toàn ?
1. Có, MAC là an toàn vì PRF là an toàn.
2. Không, độ dài tag quá ngắn: người ta có thể gợi ý ngẫu nhiên tag
cho thông điệp bất kỳ.
15
3. Phụ thuộc vào thiết kế chi tiết của hàm F .
Tính an toàn
Định lý. Nếu F : K x X → Y là một PRF an toàn và 1/|Y| là “không đáng kể”
(tức là |Y| lớn), vậy thì IF là một MAC an toàn.
Cụ thể, với mọi thuật toán “hiệu quả” A tấn công MAC IF có tồn tại một
thuật toán “hiệu quả” B tấn công PRF F thỏa mãn:
AdvMAC[A,IF] ≤ AdvPRF[B,F] + 1/|Y|
16
IF là an toàn khii |Y| lớn, ví dụ |Y| = 280
Tóm tắt chứng minh
Nếu f : X → Y là một hàm ngẫu nhiên thực sự.
X
m1, m2,
, mq
Vậy thì thuật toán A tấn công MAC phải thắng trong trò chơi sau:
· · ·
2
Thử thách
t1
f (m1), f (m2),
, f (mq)
· · ·
f thuộc Funs[X,Y]
(m, t)
và
m1,
, mq
t = f (m)
Kẻ tấn công
m / 2
· · ·
17
A thắng nếu
Ví dụ: AES là một MAC với thông điệp độ dài 16 byte.
Câu hỏi: làm thế nào chuyển từ MAC nhỏ sang MAC lớn?
• CBC-MAC (Ngân hàng - ANSI X9.9, X9.19, FIPS 186-3)
• HMAC (Giao thức cho Internet: SSL, IPSec, SSH,…)
Trả lời: Có hai cách xây dựng được dùng trong thực tế.
18
Cả hai cách này đều chuyển từ một PRF nhỏ thành PRF-lớn.
Chặt bớt MAC dựa trên PRF
Bổ đề dễ. Giả sử F : K x X → {0,1}n là một PRF an toàn. Vậy thì
Ft (k, m) := F(k, m)[1…t] với mọi 1 ≤ t ≤ n
cũng là PRF an toàn.
Hệ quả. Nếu (S, V) là một MAC dựa trên PRF an toàn với output là tag
độ dài n-bit, vậy thì MAC bị cắt chỉ lấy w bit cũng là an toàn khi 1/2w là
19
“không đáng kể” (Ví dụ, w ≥ 64).
MÃ XÁC THỰC THÔNG ĐIỆP
‣ Toàn vẹn thông điệp
‣ MAC dựa trên PRF
‣ CBC-MAC và NMAC
‣ MAC padding
‣ PMAC và Carter-Wegman MAC
h t t p s : / / c l a s s . c o u r s e r a . o r g /
c r y p t o - p r e v i e w / c l a s s / i n d e x
MAC và PRF
Nhắc lại: ・PRF an toàn F (cid:15482) MAC an toàn, khi |Y| lớn. ・Cách xây dựng: S(k, m) = F(k, m)
Mục đích của chúng ta: ・Từ PRF cho thông điệp ngắn (Ví dụ AES), tìm cách xây dựng PRF cho
21
thông điệp dài tùy ý.
Xây dựng 1: ECBC-MAC (CBC-MAC được mã hóa)
m[0]
m[1]
m[3]
m[4]
⊕
⊕
⊕
raw CBC
F(k,⋅) F(k,⋅) F(k,⋅) F(k,⋅)
tag F(k1,⋅)
Xét F: K x X ⟶ X là PRF.
L
X
FEC BC : K 2
X
⇥
!
22
Ta định nghĩa PRF:
Xây dựng 2: NMAC (nested MAC)
m[0]
m[1]
m[3]
m[4]
cascade
t k
>
>
>
>
F F F F t ll fpad
>
tag
F k1
Xét F: K x X ⟶ K là PRF.
L
K
FNMAC : K 2
X
⇥
!
23
Ta định nghĩa PRF:
Tại sao trong bước cuối của ECBC-MAC và NMAC phải mã hóa?
NMAC. Giả sử ta định nghĩa MAC I = (S, V) với
S(k, m) = cascade(k,m)
1. MAC này là an toàn.
2. MAC này có thể bị giả mạo mà không cần truy vấn bất kỳ thông điệp
nào.
3. MAC này có thể bị giả mạo bằng cách truy vấn một thông điệp.
24
4. MAC này có thể bị giả mạo chỉ bằng truy vấn hai thông điệp.
Tại sao trong bước cuối của ECBC-MAC phải mã hóa?
Giả sử ta định nghĩa MAC IRAW = (S, V) với
S(k, m) = rawCBC(k, m)
Vậy thì IRAW có thể bị phá dễ dàng dùng tấn công chọn 1 thông điệp.
• Chọn một thông điệp chỉ một khối m ∈ X.
• Truy vấn để lấy tag cho m. Anh ta được t = F(k, m).
• Output t như một MAC giả cho thông điệp gồm 2 khối (m, t⊕m).
Kẻ tấn công thực hiện:
Thật vậy,
25
rawCBC(k, (m, t⊕m) ) = F(k, F(k, m) ⊕ (t⊕m) ) = F(k, t⊕(t⊕m) ) = t
Phân tích ECBC-MAC và NMAC
Định lý. Với mọi L > 0, với mọi thuật toán “hiệu quả” với q-truy vấn A
tấn công FECBC hoặc FNMAC, có tồn tại một thuật toán “hiệu quả” B thỏa
mãn:
AdvMAC[A, FECBC] ≤ AdvPRF[B, F] + 2 q2 / |X|
AdvMAC[A, FNMAC] ≤ qL AdvPRF[B, F] + 2 q2 / |K|
CBC-MAC: an toàn khi q << |X|1/2
26
NMAC: an toàn khi q << |K|1/2 (264 cho AES-128)
Ví dụ
Từ bất đẳng thức
AdvMAC[A,FECBC] ≤ AdvPRF[B, F] + 2q2 / |X|
・với q là số thông điệp được MAC với khóa k.
Giả sử ta muốn
⇐ q2 / |X| < 1/232
AdvMAC[A, FECBC] ≤ 1/232
・AES: |X| = 2128 vậy thì q < 248
– Vậy sau 248 thông điệp, chúng ta phải đổi khóa.
・3DES: |X| = 264 vậy thì q < 216
27
– Vậy sau 216 thông điệp, chúng ta phải đổi khóa.
Chặn trên cho tính an toàn là chặt: một cách tấn công
・Sau khi ký
|X|1/2 thông điệp với ECBC-MAC hoặc
|K|1/2 thông điệp với NMAC
thì MAC không còn an toàn.
・Giả sử khung PRF F là một PRP (ví dụ, AES)
– Vậy thì cả hai PRF (ECBC và NMAC) có tính chất mở rộng sau:
∀x, y, w: FBIG(k, x) = FBIG(k, y) (cid:15482) FBIG(k, xllw) = FBIG(k, yllw)
28
– Tính chất này cho ta một cách tấn công MAC.
Tính chất mở rộng của ECBC-MAC
m[0]
m[1]
m[3]
m[4]
⊕
⊕
⊕
raw CBC
F(k,⋅) F(k,⋅) F(k,⋅) F(k,⋅)
tag F(k1,⋅)
29
∀x, y, w: FECBC(k, x) = FECBC(k, y) (cid:15482) FECBC(k, xllw) = FECBC(k, yllw)
Tính chất mở rộng của NMAC (nested MAC)
m[0]
m[1]
m[3]
m[4]
cascade
t k
>
>
>
>
F F F F t ll fpad
>
tag
F k1
30
∀x, y, w: FNMAC(k, x) = FNMAC(k, y) (cid:15482) FNMAC(k, xllw) = FNMAC(k, yllw)
Tấn công MAC có tính chất mở rộng
Cho PRF FBIG: K × X ⟶ Y be có tính chất mở rộng:
∀x, y, w: FBIG(k, x) = FBIG(k, y) (cid:15482) FBIG(k, xllw) = FBIG(k, yllw)
MAC xây dựng từ PRF trên có thể bị tấn công theo thuật toán sau:
Bước 1: gửi |Y|1/2 truy vấn ngẫu nhiên cho các thông điệp trong X.
đạt được ( mi, ti ) for i = 1 ,…, |Y|1/2
Bước 2: tìm một xung đột tu = tv for u≠v (với xác suất cao là tìm
được theo nghịch lý ngày sinh)
Bước 3: chọn một w và truy vấn để lấy t := FBIG(k, mullw)
Bước 4: đưa ra cặp giả mạo (mvllw, t).
31
Thật vậy t := FBIG(k, mvllw).
Sơ đồ an toàn hơn: Xây dựng ngẫu nhiên RCBC
m
2 blocks
k1
>
k
>
rawCBC t
t a g
rawCBC
r
rand. r trong X
・PRF: F: K × X ⟶ X ・Kết quả: MAC với tag trong X2 ・Tính an toàn:
AdvMAC[A, IRCBC] ≤ AdvPRF[B, F] ⋅(1 + 2q2/|X|)
・Ví dụ: Với 3DES, ta có thể ký q=232 thông điệp với cùng một khóa.
32
So sánh
ECBC-MAC thường dùng là MAC dựa trên AES ・Mode mã hóa CCM (dùng trong 802.11i) ・Chuẩn NIST gọi là CMAC
NMAC thường không dùng với AES hoặc 3DES ・Lý do chính: phải đổi khóa AES trên mọi block (cid:15482) phải tính lại AES key
expansion.
・Nhưng NMAC là cơ sở cho MAC được dùng phổ biên là HMAC.
33
MÃ XÁC THỰC THÔNG ĐIỆP
‣ Toàn vẹn thông điệp
‣ MAC dựa trên PRF
‣ CBC-MAC và NMAC
‣ MAC padding
‣ PMAC và Carter-Wegman MAC
h t t p s : / / c l a s s . c o u r s e r a . o r g /
c r y p t o - p r e v i e w / c l a s s / i n d e x
Nhắc lại: ECBC-MAC
m[0]
m[1]
m[3]
m[4]
⊕
⊕
⊕
raw CBC
F(k,⋅) F(k,⋅) F(k,⋅) F(k,⋅)
tag F(k1,⋅)
Xét F: K x X ⟶ X là PRF.
L
X
FEC BC : K 2
X
⇥
!
35
Ta định nghĩa PRF:
Nếu kích thước thông điệp không là bội của block-size thì sao?
m[0]
m[3]
???
m[1]
m[4]
⊕
⊕
⊕
tag
F(k,⋅) F(k,⋅) F(k,⋅) F(k,⋅)
36
F(k1,⋅)
CBC MAC padding
m[0]
m[1]
m[0]
0000
m[1]
Ý tưởng ngây thơ: pad m với dãy 0
Câu hỏi. MAC thu được có an toàn?
1. Có, MAC này an toàn.
2. Còn phụ thuộc vào thiết kế chi tiết của MAC.
3. Không, nếu lấy được tag của m, kẻ tấn công cũng lấy được tag của
37
mll0.
CBC MAC padding
Để an toàn, padding phải khả nghịch, tức là:
m0 ≠ m1 (cid:15482) pad(m0) ≠ pad(m1)
m[0]
100
m[0]
m[1]
m[1]
m’[0]
m’[1]
1000…000
m’[1]
m’[0]
38
ISO. pad với “1000…00”. Thêm block giả nếu cần. ・Số ‘1’ chỉ ra vị trí bắt đầu của pad.
CMAC (Chuẩn NIST)
Là một biến thể của ECBC-MAC: với key = (k, k1,k2) ・Không cần bước mã hóa cuối (tấn công mở rộng bị chặn bằng cách xor
với khóa cuối)
・Không cần block giả (nhập nhằng được loại bỏ bằng cách sử dụng khóa
m[w]
m[w]
m[0]
m[1]
m[0]
m[1]
100
k1 hoặc k2)
⊕
⊕
⊕
⊕
⋯ ⋯
k1 k2
tag
tag
39
F(k,⋅) F(k,⋅) F(k,⋅) F(k,⋅) F(k,⋅) F(k,⋅)
MÃ XÁC THỰC THÔNG ĐIỆP
‣ Toàn vẹn thông điệp
‣ MAC dựa trên PRF
‣ CBC-MAC và NMAC
‣ MAC padding
‣ PMAC và Carter-Wegman MAC
h t t p s : / / c l a s s . c o u r s e r a . o r g /
c r y p t o - p r e v i e w / c l a s s / i n d e x
Vấn đề
・Cả ECBC và NMAC là tuần tự. ・Liệu chúng ta có thể xây dựng một MAC song song từ một PRF nhỏ?
41
Xây dựng 3: PMAC - MAC song song
m[0]
m[1]
m[2]
m[3]
P(k,0)
P(k,2)
P(k,1)
P(k,3)
⊕
⊕
⊕
⊕
F(k1,⋅) F(k1,⋅) F(k1,⋅)
⊕
Padding tương tự CMAC
tag
key = (k, k1)
F(k1,⋅)
P(k, i): một hàm dễ tính toán
42
Xét PRF F: K × X ⟶ X Ta định nghĩa PRF mới FPMAC : K2 × X≤L ⟶ X
PMAC: Phân tích
Định lý. Với mọi L > 0, nếu F là một PRF an toàn trên (K,X,X) thì FPMAC
là một PRF an toàn trên (K, X≤L, X).
Cụ thể, với mọi thuật toán hiệu quả A dùng q-truy vấn tấn công FPMAC,
có tồn tại thuật toán hiệu quả B thỏa mãn:
AdvMAC[A, FPMAC] ≤ AdvPRF[B, F] + 2 q2L2 / |X|.
・PMAC an toàn khi qL << X1/2
43
PMAC cho phép cập nhật hiệu quả
m[0]
m[1]
m[2]
m[3]
P(k,0)
P(k,2)
P(k,1)
P(k,3)
⊕
⊕
⊕
⊕
⊕
tag
F(k1,⋅) F(k1,⋅) F(k1,⋅)
F(k1,⋅)
Câu hỏi. Giả sử F là một PRP. Khi m[1] thay đổi thành m’[1], liệu chúng ta có thể cập nhật nhanh tag?
44
1. Không, ta không thể 2. Tính tag ⨁ F(k1, m[1] ⨁ P(k,1)) ⨁ F(k1, m’[1] ⨁ P(k,1)) 3. Tính F-1(k1,tag) ⨁ F(k1, m[1] ⨁ P(k,1)) ⨁ F(k1, m’[1] ⨁ P(k,1)) 4. Tính F-1(k1,tag) ⨁ F(k1, m’[1] ⨁ P(k,1)) sau đó tính F(k1, .)
MAC với khóa dùng một lần
Xét MAC I = (S, V) và một kẻ tấn công A, ta định nghĩa một trò chơi MAC
M
m1
như sau:
t1
2 S(k, m1)
(m, t)
Thử thách k ← K Kẻ tấn công
= (m1, t1)
b
b = 1 n∏u V (k, m, t) = ’yes’ và (m, t) b = 0 ng˜Òc l§i
®
6
Định nghĩa. I=(S,V) là một MAC an toàn nếu với mọi thuật toán hiệu
quả A :
45
Adv1MAC[A, I] = Pr[Thử thách output 1] là “không đáng kể”.
Ví dụ: MAC với khóa dùng một lần
Mục tiêu. ・an toàn chống lại mọi kẻ tấn công và nhanh hơn MAC dựa trên PRP
Xây dựng: ・Xét q là một số nguyên tố lớn (ví dụ, q = 2128 + 51)
– key = (a,b) ∈ {1,…,q}2 (hai số nguyên ngẫu nhiên thuộc [1,q] )
– msg = ( m[1], …, m[L] ) với mỗi khối là một số nguyên 128 bit.
S( key, msg ) = Pmsg(a) + b (mod q)
với Pmsg(x) = xL+1 + m[L]⋅xL + … + m[1]⋅x là một đa thức bậc L+1
46
Ta sẽ chứng minh: ・cho S( key, msg1 ) kẻ tấn công không có thông tin gì về S( key, msg2 )
Tính an toàn của One-time MAC
Định lý. MAC xây dựng như trong slide trước thỏa mãn (L=msg-len)
∀m1≠m2, t1, t2:
Pra,b[ S( (a,b), m1) = t1 | S( (a,b), m2) = t2] ≤ L/q
Chứng minh. ∀m1≠m2, t1, t2:
2(a)+b = t2 ] = 1/q
(1) Pra,b[ S( (a,b), m2) = t2] = Pra,b[ Pm
(2) Pra,b[ S( (a,b), m1) = t1 và S( (a,b), m2) = t2] =
47
Pra,b[ Pm1(a) - Pm2(a)=t1-t2 và Pm2(a)+b=t2 ] ≤ L/q2 ∎
One-time MAC (cid:15482) Many-time MAC
• Xét (S,V) là một one-time MAC an toàn trên (KI,M, {0,1}n ) . • Xét F: KF × {0,1}n ⟶ {0,1}n là một PRF an toàn.
Carter-Wegman MAC: CW( (k1,k2), m) = (r, F(k1,r) ⨁ S(k2,m) ) với số ngẫu nhiên r ⟵ {0,1}n .
Định lý. Nếu (S,V) là một one-time MAC an toàn và F là một PRF an
48
toàn, vậy thì CW là một MAC an toàn với output là tag thuộc {0,1}2n .
Câu hỏi
CW( (k1,k2), m) = (r, F(k1,r) ⨁ S(k2,m) )
Làm thế nào để kiểm tra tag (r, t) cho thông điệp m? Nhắc lại rằng V(k2, m, .)
là thuật toán kiểm tra cho one time MAC.
1. Chạy V( k2, m, F(k1, t) ⨁r) )
2. Chạy V( k2, m, r )
3. Chạy V( k2, m, t )
49
4. Chạy V( k2, m, F(k1, r) ⨁ t) )
Xây dựng 4: HMAC (Hash-MAC)
Được dùng rộng rãi trên Internet.
50
… nhưng, trước hết ta cần xem xét khái niệm hàm băm mật mã.
Tài liệu đọc thêm và trình bày
・J. Black, P. Rogaway: CBC MACs for Arbitrary-Length Messages: The
Three-Key Constructions. J. Cryptology 18(2): 111-131 (2005)
・K. Pietrzak: A Tight Bound for EMAC. ICALP (2) 2006: 168-179 ・J. Black, P. Rogaway: A Block-Cipher Mode of Operation for
Parallelizable Message Authentication. EUROCRYPT 2002: 384-397
・M. Bellare: New Proofs for NMAC and HMAC: Security Without Collision-
Resistance. CRYPTO 2006: 602-619
・Y. Dodis, K. Pietrzak, P. Puniya: A New Mode of Operation for Block
51
Ciphers and Length-Preserving MACs. EUROCRYPT 2008: 198-219