2022-1 정보보호이론

created : Mon, 18 Apr 2022 08:59:34 +0900
modified : Tue, 14 Jun 2022 02:49:32 +0900
lectures

Chapter 1 Introduction

1.1. Security goals

1.2 Attacks

1.3. Services and Mechanisms

1.3.1. Security Services

Chapter 2. Mathematics of Cryptography

2.1 Integer Arithmetic

2.1.1. Set of Integers

2.1.2. Binary Operations

2.1.3. Integer Division

2.1.4. Divisbility

2.2. Modular Arithmetic

2.2.1. Modulo Operator

2.2.3. Congruence

2.2.4. Operation in $Z_n$

2.2.5. Inverses

2.2.6. Additive and Multiplication Tables

2.2.7. Different Sets

2.2.8. Two More sets

Chapter 3. Traidtional Symmetric-Key Ciphers

3.1. Introduction

3.1.1. Kerckhoff’s Principle

3.1.2. Cryptanalysis

3.2. Substitution ciphers (대치암호)

3.2.1. Monoalphabetic Ciphers

3.2.2. Polyalphabetic Ciphers

3.3. Transposition Ciphers (치환 암호)

3.3.1. Keyless Transposition Ciphers

3.3.2. Keyed Transposition Ciphers

3.3.3. Combining Two Approaches

3.4. Stream and block ciphers

3.4.1. Stream Ciphers

3.4.2. Block Ciphers

Chapter 6. Data Encryption Standard (DES)

6.1. Introduction

6.1.1. History

6.1.2. Overview

6.2. DES structure

6.2.1. Initial and Final Permutations

6.2.2. Rounds

6.2.3. Cipher and Reverse Cipher

Cipher (plainBlock[64], RoundKeys[16, 48], cipherBlock[64])
{
  permute(64, 64, plainBlock, inBlock, InitialPermutationTable)
  split(64, 32, inBlock, leftBlock, rightBlock)
  for (round = 1 to 16)
  {
    mixer(leftBlock, rightBlock, RoundKeys[round])
    if (round != 16) swapper(leftBlock, rightBlock)
  }
  combine(32, 64, leftBlock, rightBlock, outBlock)
  permute(64, 64, outBlock, cipherBlock, FinalPermutationTable)
}

mixer(leftBlock[32], rightBlock[32], RoundKey[48])
{
  copy(32, rightBlock, T1)
  function(T1, RoundKey, T2)
  exclusiveOr(32, leftBlock, T2, T3)
  copy(32, T3, leftBlock)
}

swapper(leftBlock[32], rightBlock[32])
{
  copy(32, leftBlock, T)
  copy(32, rightBlock, leftBlock)
  copy(32, T, rightBlock)
}

function(inBlock[32], RoundKey[38], outBlock[32])
{
  permute(32, 48, inBlock, T1, ExpansionPermutationTable)
  exclusiveOr(48, T1, RoundKey, T2)
  substitute(T2, T3, SubstituteTables)
  permute(32, 32, T3, outBlock, StraightPermutationTable)
}

6.3 DES Analysis

6.3.1. Properties

6.3.2. Design Criteria

6.3.3. DES Weaknesses

6.4 Multiple DES

6.4.1. Double DES

6.4.2. Triple DES

6.5. Security of DES

Chapter 4. Mathematics of Cryptography

4.1. Algebraic strucutres

4.1.1. Groups

4.1.3. Field (체)

4.2. $GF(2^n)$ Fields

4.2.1. Polynomials 다항식

4.2.3. Summary

Chapter 7. Advanced Encryption Standard (AES)

7.1. Introduction

7.1.1. History

7.1.3. Rounds

7.1.4. Data Units

7.1.5. Strucutre of Each Round

Cipher(InBlock[16], OutBlock[16], w[0 ... 43])
{
  BlockToState(InBlock, S)

  S <- AddRoundKey(S, w[0...3])
  for (round = 1 to 10)
  {
    S <- SubBytes(S)
    S <- ShiftRows(S)
    if (round != 10) S <- MixColumns(S)
    S <- AddRoundKey(S, w[4 * round, 4 * round + 3])
  }
  StateToBlock(S, OutBlock);
}

7.2. Transformations

7.2.1. Substitution

7.2.2. Permutation

7.2.3. Mixing

7.2.4. Key Adding

7.3. Key Expansion

7.3.1. Key Expansion in AES-128

KeyExpansion([key_0 to key_{15}], [w_0 to w_{43}])
{
  for (i = 0 to 3)
    w_i <- key_{4i} + key_{4i+1} + key_{4i+2} + key_{4i+3}

  for (i = 4 to 43)
  {
    if (i mod 4 != 0) w_i <- w_{i-1} \oplus w_{i-4}
    else
    {
      t <- SubWord(RotWord(w_{i-1})) \oplus RCon_{i/4}
      w_i <- t \oplus w_{i-4}
    }
  }
}

7.4. Ciphers

Cipher (InBlock[16], OutBlock[16], w[0...43])
{
  BlockToState(InBlock, S)

  S <- AddRoundKey(S, w[0...3])
  for (round = 1 to 10)
  {
    S <- SubBytes(S)
    S <- ShiftRows(S)
    if (round != 10) S <- MixColums(S)
    S <- AddRoundKey(S, w[4 * round, 4 * round + 3])
  }

  StateToBlock(S, OutBlock);
}

Chapter 9. Mathematics of Cryptography

9.1. Primes

9.1.1. Definition

9.1.2. Cardinality of Primes

9.1.3. Checking for Primeness

9.1.4. Euler’s Phi-Function

9.1.5. Fermat’s Little Theorem

9.1.6. Euler’s THeorem

9.1.7. Generatign Primes

9.2. Primality Testing

9.2.1. Deterministic Algorithms

Divisibility_Test(n)
{
  r <- 2
  while (r < sqrt (n))
  {
    if (r | n) return "a composite"
    r <- r + 1
  }
  return "a prime"
}

9.2.2. Probabilistic Algorithms

9.3. Factorization

9.3.1. Fundamental Theorem of Arithmetic

9.6. Exponentiation and Logarithm

Chapter 10. Asymmetric-Key (Public-Key) Cryptography

10.1 Introduction

10.1.1. Keys

10.1.2. General Idea

10.1.3. Need for Both

10.1.4. Trapdoor One-Way Function

10.2. RSA Cryptosystem

10.2.1. Introduction

10.2.2. Procedure

10.2.4. Attacks on RSA

10.2.6. OAEP

10.4. ElGamal Cryptosystem

10.5. Elliptic Curve Cryptosystems

10.5.1. Elliptic Curves over Real Numbers

Point addition

10.5.2. Elliptic Curves over GF(p)

10.5.4. ECC Simulating ElGamal

Chapter 11. Message Integrity and Message Authentication

11.1 Message Integrity

11.1.1. Document and Fingerprint

11.1.2. Message and Message Digest

11.1.3. Difference

11.1.4. Checking Integrity

11.1.5. Cryptographic Hash Function Criteria

11.2. Random Oracle Model

11.2.1. Pigeonhole Principle

11.2.2. Birthday Problems

11.3 Message Authentication

11.3.1. Modification Detection Code (MDC)

11.3.2. Message Authentication Code (MAC)

Chapter 12. Cryptographic Hash Functions

12.1 Introduction

11.1.1. Iterated Hash Function

12.1.2. Two Groups of Compression Functions

  1. $f$ 함수 : made from scratch(새로 개발):
  1. $f$ 함수 : based on block ciphers:

12.2 SHA-512

Chapter 13. Digital Signature

13.1. Comparision

13.1.1 Inclusion

13.1.2. Verification Method

13.1.3. Relationship

13.1.4. Duplicity

13.2. Process

13.2.1. Need for Keys

13.2.2. Signing the Digest

13.3 Services

13.3.1. Message Authentication

13.3.2. Message Integrity

13.3.3. Nonrepudiation

13.3.4. Confidentiality

13.5. Digitial Signature Schemes

13.6. Variations and Application

13.6.1. Variations

Chapter 14. Entity Authentication

14.1. Introduction

14.1.1. Message Versus Entity Authentication

14.1.2. Verification Categories

14.2. Passwords

14.3. Challenge-Response

14.3.1. Using a Symmetric-Key Cipher

14.3.3. Using a Public-Key Cipher

14.4. Zero-Knowledge