Skip to main content

A simple study of OCB2

·517 words·3 mins

A study of Cryptanalysis of OCB2 #

Introduction (TL;DR) #

Authenticated encryption (AE) is a term used to describe encryption systems that simultaneously protect confidentiality and authenticity (integrity) of communications; that is, AE provides both message encryption and message authentication of a plaintext block or message .

The offset codebook block cipher mode (OCB)

OCB provide an extremely efficient algorithm, equal to or more efficient than other AE algorithms. OCB is a cipher mode and we can apply ocb to AES/DES/SM4 etc.

The following paragraph briefly introduces OCB1 and OCB2

OCB1 #

Figure 1 shows the overall structure for OCB encryption and authentication.

The message M to be encrypted and authenticated is divided into n-bit blocks, with the exception of the last block, which may be less than n bits. Typically, n = 128.

enc

Input:$(N,M)$

Output:$(C,T)$

The calculation of the Z[i] is somewhat complex and is summarized in the following equations

The operator · refers to multiplication over the finite field $GF(2^{128})$with the irreducible polynomial $m(x) = x^{128} + x^7 + x^2 + 1 $.

The operator ntz(i) denotes the number of trailing (least significant) zeros in i

The meanings of other notation are as follows

$checksum = M[1] \oplus M[2] …\oplus Y[m]\oplus C[m]||0*$

$tag = first \; \tau \; bits \; of \; E_K(checksum\oplus Z[m])$

The following figure summarizes the OCB algorithms for encryption and decryption

OCB2 #

We denote with $msb_c(X)$ and $lsb_c(X)$ the first and last c ≤ |X| bits of X respectively.

The mode’s key space K is that of the underlying blockcipher E

the latter is required to have block length n = 128 (in particular, AES is suitable)

the nonce space is $N = {0, 1}^n$

the message space $M$ and the AD space A are the set {0, 1} of strings of arbitrary length

$\sum means \; checksum \; in \; OCB2$

$\epsilon$ means empty

n $len(X)$ denotes an n-bit encoding of |X|,

$D_E(N,A,C,T)$ decrypt the C and use M to recalculate $\sum$

so, T is related with A and M

The main case is the $2^mL$ generation

Basic Attacks (Minimal Forgery Attack) #

We give the minimal example of against OCB2.

The rests are in the attachment

Encrypt $(N, A, M)$ where $N$is any nonce, $A = \epsilon $ is empty, and $M$ is the 2n-bit message

$M = M[1]||M[2]$ where

The encryption oracle returns a pair $(C, T) $consisting of a 2n-bit ciphertext $C = C[1] || C[2]$ and a tag $T$.

constructing parameters are as follows :

lenth of $C’$ is n,the half of $M$

Decrypt $(N’ , A’ , C’ , T’ ) $

pseudocode:

M[0] (in hex) = 00000000000000000000000000000080
M[1] (in hex) = 0053cc74d9fba8588190c414aff6e6a2

C, T = encrypt(N, M)
C_ = C[0] ^ M[0]
T_ = M[1] ^ C[1]
auth, M_ = decrypt(N, C_, T_)

prove #

In this poc $T’$ decryptde as pad

as the $A$ is empty,this breaks the authenticity of OCB2.

exercise case #

Oil Circuit Breaker: https://ctftime.org/task/10227

oops2: https://ctftime.org/task/7217

References #

Plaintext Recovery Attack of OCB2,2018

Cryptanalysis of OCB2,2018

Cryptanalysis of OCB2:Attacks on Authenticity and Confidentiality,2019/311

OCB2-POC

Attachmant #