1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
Introduction ....................................................... 1

1: Foundations of Coding ........................................... 7 
    1.1 From Julius Caesar to telecopy ............................. 8
        1.1.1 The source: from an image to a sequence of pixels	.... 8 
        1.1.2 Message compression .................................. 9 
        1.1.3 Error detection ...................................... 10 
        1.1.4 Encryption ........................................... 11 
        1.1.5 Decryption ........................................... 13 
        1.1.6 Attack and decryption ................................ 13 
              Decompression and data loss .......................... 13 
              Drawbacks of the fax code ............................ 14 
        1.1.7 Orders of magnitude and complexity of the algorithms . 15 
              Size of numbers ...................................... 15 
              Computer speed ....................................... 16  
              Comparison with the size and age of the universe ..... 16 
              Complexity of the algorithms ......................... 16
    1.2 Stream ciphers and probabilities ........................... 18
        1.2.1 The Vernam cipher and the One-time-pad cryptosystem .. 19 
        1.2.2 Some probability ..................................... 20 
              Events and probability measure ....................... 21 
              Conditional probabilities and Bayes' Formula ......... 22 
        1.2.3 Entropy .............................................. 23 
              Source of information ................................ 23 
              Entropy of a source................................... 23
              Joint entropies, conditional entropies ............... 24  
              Extension of a source................................. 25 
        1.2.4 Steganography and watermarking........................ 28 
        1.2.5 Perfect secrecy ...................................... 29 
        1.2.6 Perfect secrecy in practice and Kerckhoffs' principles 30
    1.3 Block ciphers, algebra and arithmetic ...................... 32 
        1.3.1 Blocks and chaining modes from CBC to CTR	............ 33
        1.3.2 Algebraic structure of codewords ..................... 36
              Groups ............................................... 36 
              Rings ................................................ 38 
              Fields ............................................... 40 
              Vector spaces and linear algebra ..................... 40 
        1.3.3 Bijective encoding of a block ........................ 42 
              Modular inverse: Euclidean algorithm ................. 42 
              Euler's totient function and Fermat's theorem ........ 46 
              Modular exponentiation and discrete logarithm ........ 49 
              One-way functions .................................... 51
        1.3.4 Construction of prime fields and finite fields ....... 52 
              Primality tests and prime number generation .......... 52 
              Arithmetic of polynomials ............................ 55 
              The ring V[X]/P and finite fields .................... 58 
              Irreducible polynomials .............................. 59 
              Construction of finite fields ........................ 61 
        1.3.5 Implementation of finite fields ...................... 63 
              Operations on polynomials ............................ 63 
              Use of generators .................................... 64 
              Primitive roots ...................................... 66 
        1.3.6 Curves over finite fields ............................ 68 
              Weierstraß model ..................................... 69
              The group of points of an elliptic curve ............. 70  
        1.3.7 Pseudo-Random Number Generators (PRNG) ............... 73 
              Congruential generators .............................. 74 
              Linear Feedback Shift Register (LFSR) ................ 75 
              Cryptographically secure generators .................. 77 
              Several statistical tests ............................ 78
    1.4 Decoding, decryption, attacks .............................. 80   
        1.4.1 Decoding without ambiguity ........................... 81 
              Prefix property ...................................... 83 
              Huffman trees ........................................ 84 
              Representation of instantaneous codes ................ 85 
              McMillan's theorem ................................... 86 
        1.4.2 Non-injective codes .................................. 87 
              Fingerprint integrity check .......................... 87 
              Hash functions ....................................... 87 
              Lossy transformations ................................ 92 
              Fourier Transform and Discrete Fourier Transform (DFT) 93 
              DFT algorithm ........................................ 95 
              DFT and n-th roots of unity in a finite field ........ 97 
              Fast product of polynomials using DFT ................ 98
        1.4.3 Cryptanalysis ........................................ 99 
              Attacks on Linear Congruential Generator ............. 99 
              Berlekamp-Massey algorithm for the synthesis of LFSRs  100 
              The Birthday Paradox ................................. 103 
              Yuval's attack on hash functions ..................... 104 
              Factoring composite numbers .......................... 105 
              Strong prime numbers ................................. 110 
              Solving the discrete logarithm problem ............... 111

2: Information theory and compression .............................. 115 
    2.1 Information theory ......................................... 116
        2.1.1 Average length of a code ............................. 116 
        2.1.2 Entropy as a measure of the amount of information .... 117
        2.1.3 Shannon's theorem .................................... 118        
    2.2 Statistical encoding ....................................... 120
        2.2.1 Huffman's algorithm .................................. 120 
              Huffman's algorithm is optimal ....................... 123 
        2.2.2 Arithmetic encoding .................................. 125
              Floating point arithmetics ........................... 126
              Integer arithmetics .................................. 128
              In practice .......................................... 129 
        2.2.3 Adaptive codes ....................................... 131 
              Dynamic Huffman algorithm-pack ....................... 131 
              Dynamic compression .................................. 132 
              Dynamic decompression ................................ 133 
              Adaptive arithmetic encoding ......................... 134
    2.3 Heuristics of entropy reduction ............................ 135
        2.3.1 Run-Length Encoding (RLE) ............................ 135 
              The fax code(end) .................................... 136 
        2.3.2 Move-to-Front ........................................ 137 
        2.3.2 Burrows-Wheeler Transform (BWT) ...................... 139
    2.4 Common compression codes ................................... 141
        2.4.1 Lempel-Ziv algorithm and gzip variants ............... 142 
        2.4.2 Comparisons of compression algorithms ................ 145 
        2.4.3 GIF and PNG formats for image compression ............ 147
    2.5 Lossy Compression .......................................... 147
        2.5.1 Deterioration of information ......................... 147 
        2.5.2 Transformation of audiovisual information ............ 148
        2.5.3 Joint Photographic Experts Group (JPEG) format ....... 149
              Discrete Cosinus Transform (DCT)-JPEG ................ 149 
              Watermarking JPEG images ............................. 152 
              Secure JPEG-2000 (JPSEC) ............................. 153
        2.5.4 Motion Picture Experts Group (MPEG) format ........... 154

3: Cryptology ...................................................... 157 
    3.1 General principles ......................................... 157
        3.1.1 Terminology .......................................... 157 
        3.1.2 What is the use of cryptography? ..................... 159 
        3.1.3 Main types of threats ................................ 161 
              Passive/active attacks ............................... 161 
              Cryptanalysis and attacks on encryption schemes ...... 161
    3.2 Secret key cryptography .................................... 162
        3.2.1 Principle of symmetric cryptography .................. 162
        3.2.2 Classes of symmetric encryption schemes .............. 164 
              Symmetric stream ciphers ............................. 165 
              Symmetric block ciphers .............................. 166 
              Unconditionally secure encryption .................... 167 
        3.2.3 Data Encryption Standard (DES) system ................ 167 
              Exhaustive description of DES ........................ 167 
              DES Key Derivation ................................... 170 
              Advantages and practical uses of DES ................. 170 
              Cryptanalysis of DES ................................. 171 
        3.2.4 Rijndael: Advanced Encryption Standard (AES) ......... 173 
              Principle of the algorithm ........................... 176 
              Key schedule in AES .................................. 181 
              Security of the AES .................................. 183
    3.3 Key exchange ............................................... 184
        3.3.1 Diffie-Hellman key exchange protocol and Man-in-the-
              middle attacks ....................................... 185
        3.3.2 Kerberos: a secret key provider ...................... 187 
              General description of the Kerberos protocol ......... 188 
              Details of Kerberos messages ......................... 189 
              Weaknesses of Kerberos ............................... 191
    3.4 Public key cryptography .................................... 192
        3.4.1 Motivations and main principles ...................... 192
        3.4.2 Rivest-Shamir-Adleman (RSA) encryption ............... 194 
              Efficiency and robustness of RSA ..................... 197 
              Attacks on RSA ....................................... 199
        3.4.3 El Gamal encryption .................................. 200
    3.5 Authentication, Integrity, Non-repudiation, Signatures ..... 202
        3.5.1 Cryptographic hash functions ......................... 202 
              Message-DigestAlgorithm5(MD5) ........................ 204 
              SHA-1 ................................................ 205 
              SHA-256 .............................................. 206
              Whirlpool ............................................ 207 
              Status of the resistance to collisions ............... 207 
              Integrity check for hash functions ................... 208 
              Message Authentication Code(MAC) ..................... 211
        3.5.2 Public key authentication ............................ 213 
        3.5.3 Electronic signatures ................................ 215 
              RSA signature ........................................ 216 
              Digital Signature Standard(DSS) ...................... 217
    3.6 Key management ............................................. 220
        3.6.1 Generation of cryptographically secure bits .......... 220 
        3.6.2 Public Key Infrastructure(PKI) ....................... 221 
              General principle .................................... 221 
              Elements of the infrastructure ....................... 222 
              Electronic certificates .............................. 225 
              The PKIX model ....................................... 226 
              Non-hierarchical architectures, PGP .................. 231
              Drawbacks of PKIs .................................... 232
        3.6.3 Securing channels with the SSH tool .................. 233 
              Secure SHel l(SSH), a hybrid protocol ................ 235 
              Server authentication ................................ 235 
              Setting-up a secure session .......................... 236
              Client authentication ................................ 237 
              Security, integrity and compression .................. 238 
              Major differences between SSH-1 and SSH-2 ............ 238

4: Error detection and correction .................................. 241 
    4.1 Principle of error detection and error correction .......... 243
        4.1.1 Block coding ......................................... 243  
        4.1.2 A simple example of parity detection ................. 244 
        4.1.3 Correction using longitudinal and transverse parity .. 245 
        4.1.4 Encoding, decoding and probability of error .......... 246
        4.1.5 Shannon's second theorem ............................. 247 
              Code rate and efficiency ............................. 247 
              Channel capacity ..................................... 248 
              Transmission without error on a constant capacity 
              channel .............................................. 249
    4.2 Error detection by parity - CRC codes ...................... 251
        4.2.1 Parity check on integers: ISBN, EAN, LUHN ............ 252 
              EAN bar code ......................................... 252 
              The ISBN code ........................................ 253 
              The Basic Bank Account Number(BBAN) .................. 254 
              Credit card:LUHN-10 .................................. 254 
        4.2.2 Cyclic Redundancy Checks (CRC) ....................... 254
              CRC encoding ......................................... 255 
              CRC decoding ......................................... 255 
              Number of detected bit errors ........................ 256 
              Examples of CRC codes ................................ 256
    4.3 Distance of a code ......................................... 257
        4.3.1 Error correction code and Hamming distance ........... 257
        4.3.2 Equivalent codes, extended codes and shortened codes . 261 
              Equivalent codes ..................................... 262 
              Extended codes ....................................... 262 
              Punctured codes ...................................... 263 
              Shortened code ....................................... 263 
        4.3.3 Perfect codes ........................................ 264
        4.3.4 Binary Hamming codes ................................. 265                 
    4.4 Linear codes and cyclic codes .............................. 267
        4.4.1 Linear codes and minimum redundancy .................. 267
        4.4.2 Encoding and decoding of linear codes ................ 270 
              Encoding by matrix-vector multiplication ............. 271 
              Decoding by matrix-vector multiplication ............. 271 
        4.4.3 Low Density Parity Check (LDPC) codes ................ 275 
              LDPC codes description ............................... 275 
              Encoding of LDPC codes ............................... 276 
              LDPC code representation by Tanner graphs ............ 277 
              Iterative Decoding of LDPC codes ..................... 279 
              Practical applications of LDPC codes ................. 286 
        4.4.4 Cyclic codes ......................................... 287 
              Characterization: generator polynomial ............... 288 
              Encoding process ..................................... 291 
              Error detection and decoding process.................. 291
        4.4.5 Bose-Chaudhuri-Hocquenghem (BCH) codes ............... 292 
              Minimum distance of a code............................ 292 
              Construction of BCH generator polynomials ............ 293 
        4.4.6 Optimal BCH codes: Reed-Solomon codes ................ 295 
              Decoding of Reed-Solomon codes ....................... 296 
              PAR-2 protocol ....................................... 299 
              Quick Response code(QR-code) ......................... 300
    4.5 Bursts of errors and interleaving .......................... 302
        4.5.1 Packets of errors .................................... 302 
        4.5.2 Interleaving ......................................... 302 
        4.5.3 Interleaving with delay and interleaving table ....... 303 
        4.5.4 Cross-interleaved codes .............................. 305 
        4.5.5 Interleaving ......................................... 305 
              Cross-Interleaved Reed-Solomon Code (CIRC) ........... 306
    4.6 Convolutional codes and turbo-codes ........................ 309
        4.6.1 Encoding by convolution .............................. 309 
        4.6.2 Shortest path decoding ............................... 310 
              State diagram ........................................ 310 
              Encoding lattice ..................................... 311 
              Viterbi's algorithm .................................. 312 
              Systematic codes, rate and puncturing ................ 314 
              Recursive convolutional codes ........................ 314 
        4.6.3 Turbo-codes .......................................... 315 
              Parallel composition ................................. 315 
              Turbo decoding ....................................... 316 
              Block turbo-codes and hybrid turbo-codes ............. 317 
              Performances and practical applications of turbo-codes 318
Compression, encryption, correction: as a conclusion ............... 319

Solutions of the exercises ......................................... 323 
    Solutions of the exercises given in chapter 1 .................. 323 
    Solutions of the exercises given in chapter 2 .................. 338 
    Solutions of the exercises given in chapter 3 .................. 347 
    Solutions of the exercises given in chapter 4 .................. 369 
    Solution of the "Casino" exercise .............................. 389

List of figures, tables, algorithms and used acronyms .............. 391 
    List of figures................................................. 391 
    List of tables ................................................. 393 
    List of algorithms.............................................. 394 
    List of used acronyms .......................................... 396

Bibliography ....................................................... 399 

Index .............................................................. 403-419