Toby's Study Blog
article thumbnail
Published 2023. 8. 10. 13:58
양방향 암호화 기법 정보보안

대칭형(비밀키 암호) 알고리즘 (Symmetric Key Algorithm. Ex : 3DES, AES)

평문(Plain Text) : 아무 변조가 가해지지 않은 원본 문서
싸이퍼 텍스트(Ciper Text) : 변조된 문서 (암호화된 문서)
암호화와 복호화 시 한개의 같은 키를 사용하는 것이 가장 큰 특징이다.
(※ 알고리즘 자체가 상대적으로 비대칭형에 비해선 가벼운 편)
수신자 측과 송신자 측간에 서로 비밀키 교환이 있어야 하는데, 이때 중간자 공격이 발생할 가능성이 존재한다.

중간자 공격 

  1. B가 대칭키 방식으로 암호문을 만들었다.
  2. A에게 인터넷을 통해서 키를 전달
  3. Cracker 에게 이 과정에서 키와 메시지가 유출될 수 있다.

대칭형 알고리즘 에서 암호화를 하는 방식은 2가지가 있다.

스트림 암호 알고리즘 (AES)

일반적으로 한 번에 1비트의 데이터 흐름(스트림)을 순차적으로 처리해가는 암호 알고리즘의 총칭으로 평문과 키 스트림을 XOR 하여 생성한다. 1비트 단위로 생성된 난수열과 평문을 XOR 연산하여 1비트의 암호화된 자료를 얻는다.

블록 암호 알고리즘(DES) 

2.1) Feistel 구조

동일한 특정 함수(round function)의 반복으로 암호화를 합니다.

<과정>

  • 평문을 같은 크기의 L과 R로 나눈다.
  • 우선 R과 K로 라운드 함수 F를 실행한다.
  • 라운드 함수 R의 실행 결과와 L을 XOR 하고 연산된 값을 R로 사용한다.
  • 라운드 크기만큼 반복하면 암호문이 완성되며 복호화 과정은 L과 R만 바꿔주면 된다.

<특징>

  • 암호화와 복호화 과정이 동일하다. (거꾸로 하고 키 입력만 반대로)
  • 라운드 수(16회 이상), K의 길이(128bit 이상), 평문의 길이(64 bit 이상) 을 권장한다.
  • 평문을 나눈 길이가 같지 않을 경우 구조 또한 존재한다.
  • SPN 의 비해서 간단한 구조를 가진다.

2.2) SPN 구조

문자의 자리를 변경하는 P-BOX, 문자를 규칙에 따라 치환하는 S-BOX, 암호화에 사용되는 키 K로 구성

<과정> 

  • 평문과 K를 XOR 연산한다.
  • 연산된 결과를 여러 개의 작은 블록으로 나눈다.
  • 나눠진 각각의 작은 블록들을 S-BOX에 넣어 특정한 방법으로 처리한다.
  • 처리된 결과를 P-BOX에서 문자의 자리를 변경한다.
  • 위 과정을 반복하여 암호문을 완성한다.

<특징>

  • 별도의 복호화 모듈을 구현해 주어야 한다.
  • 암호화 과정 : 평문을 연산 → S-BOX → P-BOX → 암호문 생성
  • 복호화 과정 : 암호문 → 역방향 P-BOX → 역방향 S-BOX → 평문
  • 암호화/복호화 시 비트를 이동시켜주어야 하는 Feistel 구조에 비해 효율적이다

P-Box

문자의 자리를 변경하는 전자 암호 장치

  • Straight P-Box
    입력받은 데이터의 순서만을 바꿔 똑같은 길이의 데이터로 변환하는 방식 (기존 데이터의 길이 = 변경 후 데이터의 길이) 역방향으로 하면 평문을 알아내기 쉬운 방식이다.(P-Box 방식만 썼을때는 문제가 된다.)

  • Compression P-Box
    입력받은 데이터를 축소하여 줄어든 길이의 데이터를 출력 (기존 데이터의 길이 > 변경 후 데이터의 길이) 입력되는 몇몇 데이터는 소실되어 단방향 암호화이고 복호화가 불가능하다.

  • Expansion P-Box
    입력받은 데이터를 확장하여 늘어난 길이의 데이터를 출력한다. (기존 데이터의 길이 < 변경 후 데이터의 길이) 마찬가지로 단방향 암호화이다.

S-Box

몇개의 입력 비트(m)을 사용하여 일부 출력 비트(n)로 변환한다.

  • XOR
    평문 x와 암호화에 사용되는 키 K를 XOR 연산하여 암호문 y를 출력

  • Circular Shit
    비트 좌측이나 우측으로 쉬프트 연산한다.

  • Swap
    비트의 앞 뒤를 바꾼다.

  • Split and Combine
    특정 비트를 분할하고 결합한다.

비대칭키(공개키) 알고리즘 (Asymmetric Key Algorithm, Ex : RSA)

PKI(Public Key Infrastructure) - 공개키 기반구조란?

대칭형(비밀키 암호) 알고리즘은 암호화하는 키와 복호화 하는 키가 같은 대칭키 알고리즘을 사용하여 정보를 교환하였는데 구현이 상대적으로 쉽고 빠르다는 장점이 있지만, 키를 sniffing 이나 sppofing 해킹으로 빼앗겨버린다면 제 3자에게 정보가 쉽게 노출될 수 있다는 단점이 있습니다.
그래서 암호화를 하는 키와 복호화키를 따로 가져가는 기술이 등장 - 이런 기반을 마련해둔 것이 PKI 입니다.
Private Key : 누구와도 공유하지 않고 자신만이 가지고 있는 키
Public Key : 공개적으로 공개가 되어 있는 키, 누구나 공개키를 얻을 수 있음

즉 기본적으로 인터넷과 같이 안전이 보장되지 않은 공개된 망 사용자들이 한쌍의 공개키와 개인키를 사용함으로써, 안전하게 데이터를 교환할 수 있게 합니다.

장점

  1. 대칭키 암호 시스템 보다 보안적으로 우수하다.
  2. 인증과 부인봉쇄 기능을 제공할 수 있다.

단점

  1. 대칭키 암호 시스템 보다 많은, 더긴 키를 사용하여야 하고 수학적 연산이 상대적으로 복잡하여 암호화 처리시간이
    길다.
  2. 공개키에 대한 신뢰성 문제가 있으므로 PKI와 같은 복잡한 공개키 관리 구조를 필요로 한다.

PKI를 사용한 정보교환에서 크게 두가지 상황을 가정할 수 있습니다.


<첫번쨰>
A의 공개키를 사용하여 암호화하고 A에게 보냅니다. 그리고 오직 A만 자신의 개인키를 이용해 암호문을 복호화 시킵니다.

<두번째>
개인키를 가지고 암호화하는 경우입니다. 공개키는 만인에게 공개되어 있으므로 아무나 쉽게 암호문을 복호화 할 수 있습니다.

이 두가지 방법이 바로 공개키 암호화, 전자서명 입니다.

그런데, 앞서 말씀드린대로 공개키는 말그대로 공개되어있기 때문에 전자서명의 경우 해당 공개키가 과연 내가 원하는 공개키가 맞는지 의심할 수가 있습니다.

그래서 신뢰할 수 있는 인증기관(CA:Certificate Authority)가 등장합니다.

  1. 속도를 향상시키기 위해 임시 대칭키를 생성한다.
  2. 임시 대칭키를 통해 평문을 암호화(Encrypt) 하여 싸이퍼문(Cipher Text)로 변경한다.
  3. 임시 대칭키를 메시지를 받을 A의 공개키로 암호화(Encrypt) 한다.
  4. 싸이퍼문(Cipher Text)와 암호화된 대칭키를 상대방한테 보낸다.
  5. 암호화된 대칭키를 자신의 개인키로 복호화하여 대칭키를 얻어내고 복호화(Decrypt) 한다.

RSA 암호

  1. 특정 소수 두개를 선택한다 p = 11, q = 3
  2. n = p*q = 33 을 계산한다.
  3. φ(n) = **(p-1)(q-1) = 102 = 20을 계산한다.
  4. 공개키 구하기 → φ(n) 보다 작으면서 서로소 e를 하나 선택한다. 서로소 : 두 정수의 공약수가 1외에는 없는 수 (서로소 (gcd(e, φ(n)) = 1), e = 1, 3, 7, 9, 11, 13 ,17 ,19)
  5. 개인키 구하기 → 160보다 작으면서 d*e mod 160 = 1 인 수 d를 결정한다. (mod : 나머지 연산 e : 3 일때 d = 7)
  6. 이로써 공개키 = {33, 3} , 개인키 = {33, 7} 을 얻을 수 있다.

평문이 88이라고 하면 암호화 숫자는 88^7 nid 187 = 11 이다.

💡 참고링크

https://udpark.tistory.com/86

https://crazia.tistory.com/entry/PKI-PKI-의-기본-개념-간단-설명

https://skogkatt.tistory.com/16

https://skogkatt.tistory.com/23?category=845921

 

'정보보안' 카테고리의 다른 글

PKI 인증 체계  (0) 2023.08.10
CA, x509  (0) 2023.08.10
전자서명, 전자서명 생성 / 검증  (0) 2023.08.10
단방향 암호와 기법(Hash)  (0) 2023.08.10
보안 개념  (0) 2023.08.10
profile

Toby's Study Blog

@Toby12

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그