250x250
반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

개발자라면 한번쯤은 보러오는 곳

[Information System Security] Cryptography 본문

학교 수업/Information System Security

[Information System Security] Cryptography

okpyo11 2022. 10. 21. 13:30
728x90
반응형

Symmetric encryption

- conventional / private-key / single-key

- 발신자와 수신자가 공통된 키를 사용한다.

Symmetric encryption을 사용할 때 필요한 두가지 보안

  • a strong encrytion algorithm
  • a secret key known only to sender / receiver
  • 키를 나누어 가지기 위한 별도의 안전한 채널이 있다고 가정
  • 필요한 키의 수 = n(n-1)/2

Caesar Cipher

  • 최초의 암호 
  • 제한점
    • 26가지 경우의 수 밖에 없음
    • 쉽게 우츄 가능함

Crypto analysis(암호 분석)

  • 메시지뿐만 아니라 키를 복구하는 목적
  • 일반적인 접근
    • cryptanalytic attack
    • brute-force attack

One time pad

  • if a truly random key as long as the message is used, the cipher will be secure
  • = 메시지가 사용되는 한 진정으로 임의의 키인 경우 암호는 안전합니다.
  • is unbreakable since ciphertext bears no statistical relationship to the plaintext
  • = 암호문이 일반 텍스트와 통계적 관계가 없으므로 분리할 수 없다.
  • since for any plaintext & any ciphertext there exists a key mapping one to other
  • = 모든 일반 텍스트 및 암호 텍스트에 대한 매핑이 존재한다.
  • can only use the key once though
  • = 키를 한번만 사용할 수 있습니다.
  • problems in generation & safe distribution of key
  • = 일반적이고 안전한 키의 배포 문제

- K XOR OTP = m

- 문제점

- 보낼 데이터가 1GB -> OTP도 1GB

- 비교하려는 두 대상의 비트 수가 같아야 한다 -> 현실적으로 잘 사용하지 X

Symmetric key

  • Block ciper
    • 블록 단위로 암호화, 마지막에 남는 부분은 padding을 채워 만든다.
    • ex) DES, AES
  • Streaming cipher
    • 1byte씩 random number 생성 -> XOR 해서 암호 생성
    • ex) RC4

DES

  • now look at modern block ciphers
  • one of the most widely used types of cryptographic algorithms
  • = 가장 널리 사용되는 암호화 알고리즘 유형 중 하나
  • provide secrecy / authentication services
  • = 비밀 / 인증 서비스 제공
  • focus on DES(Data Encryption Standard)
  • to illustrate block cipher design principles
  • = 블록 암호 설계 원리를 설명하기 위해
  • block ciphers process messages in blocks, each of which is then en/decrypted
  • = 블록 암호는 블록 단위로 메시지를 처리하고 각 블록은 암호화/복호화됩니다.
  • like a substitution on very big characters - 64 bits or more
  • stream ciphers process messages a bit or byte at a time when en/decrypting
  • = 스트림 암호는 암호화/복호화할 때 한 번에 비트 또는 바이트 메시지를 처리합니다.
  • 64bit key(8bit는 checksum으로 사용)
  • 더 이상 안전하지 않음 사용 X
  • permutaion -> 순서를 섞음
DES

1. 먼저 64비트의 평문이 첫 라운드를 거치지 전, IP(initial permutation, 초기치환)를 거친다.
2. IP를 거친 후 나온 64비트 값은 각 L0와 R0로 32비트씩 나뉘어 들어간다.
3. R0에 해당하는 32비트각 키 스케줄에 의해 나온 첫번째 48비트 키와 F 함수에 들어가고 F 함수는 결국 32비트를 도출해낸다.
4. 이렇게 생성된 32비트와 L0의 32비트를 XOR해준다.
5. 마지막으로 생성된 32비트를 또 R1에 보내준다.
이 과정을 16라운드까지 반복해준다.
6. 마지막 라운드를 거칠때는 L과 R이 반대로 들어가게 된다.(R16, L16 참고)
7. 이후 IP의 역에 들어가게 되고 마지막으로 output인 64비트 암호문을 얻게 된다. 

Modes of operation

Electronic Code Book(ECB)

ECB

- Ciphertext와 Plaintext를 바꾸어서 암호화

  • Strengths
    • 간단
    • 일반 텍스트 블록의 병렬 암호화 허용
    • 블록의 손실 또는 손상을 견딜 수 있음
  • Weakness
    • 암호화에 대해서 강한 암호화가 적용되지 않음
    • 같은 위치의 블록은 같은 형태로 암호화

Cipher Block Chaining(CBC)

CBC

- 과거 연산 했던 결과를 이용해서 암호화

- Initialization Vector(IV) : 첫번째 평문에 영향을 미침, 같은 메세지를 암호화 해도 IV가 다르면 매번 다른 값이 나옴

 

- Message Authentication Code(Mac)

Advanced Encryption Standard(AES)

고급 암호화 표준(Advanced Encryption Standard)이라고 불리는 AES 암호 알고리즘은 DES를 대체한 암호 알고리즘이며 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 알고리즘이다.

 

DES에 비해서 키 사이즈가 자유롭다. 즉, 가변 길이의 블록과 가변 길이의 키 사용이 가능하다.(128bit, 192bit, 256bit)

Padding

- 암호화를 하고 몇 비트가남을 때 붙여주는 bit

Padding

- PKCS#5 : Password-based Encryption Standard

- 패딩을 채우는 방법

- If numberOfBytes(clearText) mod 8 == 7, PM = M + 0x01   -> 1byte만 채움
– If numberOfBytes(clearText) mod 8 == 6, PM = M + 0x0202
– If numberOfBytes(clearText) mod 8 == 5, PM = M + 0x030303
...
– If numberOfBytes(clearText) mod 8 == 0, PM = M + 0x0808080808080808

Stream cipher(RC4)

- process message bit by bit(as a stream)

- have a pseudo random keystream

- 대칭키 암호의 구조 중 하나로, 유사난수를 연속적(스트림)으로 생성하여 암호화하려는 자료와 결합하는 구조

- Ci = Mi XOR streamKeyi

- design consideration

    - long period with no repetitions = 반복 없는 긴 시간

    - statistically random = 통계적으로 무작위

    - depends on large enough key = 충분히 큰 키에 의존

    - large linear complexity = 큰 선형 복잡성

방법

  1. starts with an arrary S of numbers : 0~255
  2. use key to well and truly shuffle
  3. S forms internal state of the cipher
  4. encryption contimues shuffling array values
  5. sum of shuffled pair selects "stream key" value from permutation
  6. XOR S[t] with next byte of message to en/decrypt
728x90
반응형
Comments