[IT-Security] Chapter 3. Cryptography and Cryptosystems, part II

MJ·2023년 2월 9일
0

IT Security

목록 보기
3/9

Symmetric Key Algorithm

암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 사용하는 알고리즘을 말한다.

대칭 키 암호에서는 암호화와 복호화를 하는데 있어서 같은 암호 키를 공유해야 한다. (Private Key)

장점: 암호화 연산 속도가 빠르기 때문에 효율적인 암호 시스템을 구축할 수 있다.

단점: 키 전달 및 관리가 어렵다.

대칭키 암호화 방식은 데이터를 변환하는 방식에 따라 Stream Cipher, Block Cipher 로 구분된다.

Stream Cipher

  • 초기값: Key
  • Key는 plain text의 길이만큼 난수로 생성한다.
  • Key 와 plain text를 XOR 연산을 하여 cipher text 생성

현재는 블록 암호만큼 인기있지는 않다.

Block Cipher

  • plain text를 몇 개의 block들로 나눈다.
  • block 마다 encryption key는 동일하다.

그러나 이 구조는 너무 간단하기에 보안에 취약하다.

운용방식이 일반적으로 대칭형 암호화와 관련하는 것이 일반적이지만 RSA와 같은 공개 키 암호 방식 원칙에도 적용 가능하다.

ECB (Electronic Code Book)

  • 가장 간단한 구조
  • 모두 같은 암호와 키를 사용하기 때문에 보안에 취약하다.
  • 공격자가 비슷한 메세지를 반복적으로 암호화하는 반복공격에도 취약한 성질을 가진다. -> 비슷한 결과가 나오기 때문

CBC (Cipher Block Chaining)

  • 각 블록은 암호와 되기 전에 이전 블록의 암호화 결과와 XO
  • 첫 블록의 경우 초기화 벡터가 사용됨
  • 같은 plain text block은 각기 다른 cipher text block을 생성한다.

OFB (Output Feedback), CFB (Cipher Feedback)

  • 둘 다 block 암호를 자기 동기 스트림 암호로 변환한다.
    - 비동기식 자기 스트림 암호 (block cipher): 1비트씩 난수열을 생성하여 plaintext와 XOR function을 실행한다.

CTR (Counter) e.g. AES

  • 각 블록마다 현재 블록이 몇 번째인지 값을 얻어 그 숫자와 nonce를 결합하여 블록 암호의 입력으로 사용한다.

  • 그렇게 각 블록 암호에서 연속적으로 난수를 얻은 다음 암호화 할려는 문자열과 XOR 한다.

    	- Nonce는 블록체인에서 목표값 이하늬 block hash를 찾기위해 임시로 사용되는 숫자

Asymmetric Encryption

  • public key cryptography이다.
  • 즉, 암호화와 복호화할 때 쓰는 key가 다른다.
  • 송신자와 수신자는 key pair를 사용한다. (public & private)

Public Key Methods

  • public key로 암호화 된 메세지는 무조건 private key로 복호화 하 ㄹ수 있다.
  • public key를 안다고 private key를 알수 있는게 아니다.
  • symmetrical encryption보다 key가 훨씬 길다.
  • key는 수학적으로 생성된다.

RSA (Rivest, Shamir and Adleman)

RSA에서는 두 개의 key를 사용한다. 여기서 key란 메세지를 열고 잠그는 상수를 위미.

  • RSA는 소인수 분해의 난해함에 기반하여 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있다.
  • 이 알고리즘은 두 개의 큰 소수들의 곱과 추가 연산을 통해 하나는 공개키를 구성하고 또 하나는 개인키를 구성한다.
  • 이 때 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다.
  • 한 번 그 키들이 만들어지면, 원래의 소수는 더 이상 중요하지 않으며, 버릴 수 있다.
  • 공개 및 개인키 둘 모두는 암호화/복호화를 위해 필요하지만 오직 개인키의 소유자만 이를 알아야한다.
  • RSA 시스템을 사용하면, 개인키는 절대로 인터넷을 통해 보내지지 않는다.

Hybrid Methods

  1. A는 B에게 public key를 전송
  2. B는 symmetrical encryption 방식을 쓰기위해 session key를 생성한다. A가 준 public key로 session key를 암호화 한 다음에 A에게 전송.
  3. A는 session key를 사용하여 symmetrical encryption하여 암호화 된 메세지 B에게 전송

Hash Function

  • Hash function은 데이터의 무결성을 제공하는 알고리즘 중 하나로 메세지 인증 알고리즘 이라고도 한다.
  • 임의의 길이의 메시지를 일정한 길이의 출력으로 변환하는 함수로 메세지 무결성이나 사용자 인증을 중요시하는 전자서명에서는 해시 함수가 필수적인 역할을 하고 잇따.
  • data가 변하면 hash 값도 변경된다. 그러므로 collision resistance

Message Authentication Code (MAC)

  • 데이터가 변조 (수정, 삭제, 삽입 등) 되었는지 검증할 수 있도록 데이터에 덧붙이는 코드이다.

1.송신자 앨리스와 수신자 밥은 사전에 키를 공유해 둔다.

  1. 송신자 앨리스는 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).

  2. 송신자 앨리스는 수신자 밥에게 송금 의뢰 메시지와 MAC 값을 보낸다.

  3. 수신자 밥은 수신한 송금 의뢰 메시지를 기초로 해서 MAC 값을 계산한다(공유 키를 사용).

  4. 수신자 밥은 앨리스로부터 수신한 MAC 값과 계산으로 얻어진 MAC 값을 비교한다.

  5. 수신자 밥은 2개의 MAC 값이 동일하면 송금 의뢰가 틀림없이 앨리스로부터 온 것이라고 판단한다(인증 성공). 동일하지 않다면 앨리스로부터 온 것이 아니라고 판단한다(인증 실패).

업로드중..

0개의 댓글