BlockChain

Class / Symmetric-Key Encipherment

2023. 3. 6. 16:19
목차
  1. 1. 보안 목표와 서비스
  2. 1-1. 세 가지 보안 목표
  3. 1-2. 공격
  4. 2. 전통적인 대칭 키 암호
  5. 2-1. 대칭 키 암호 알고리즘의 개념
  6. 2-2. 대치 암호
  7. 2-3. 전치 암호
  8. 2-4. AES (Advanced Encryption Standard)
  9. 2-5. AES 의 분석

1. 보안 목표와 서비스

 

1-1. 세 가지 보안 목표

  • 기밀성
    • 민감한 정보가 외부에 노출되는 것을 막자
  • 무결성
    • 허락되지 않은 접근으로 침해되지 않아야 함
  • 가용성
    • 허가된 자는 언제든 접근하여 사용할 수 있어야 함

 

1-2. 공격

  • 기밀성
    • 스누핑 : 비인가 접근 또는 탈취
    • 트래픽 분석 : 트래픽 패킷을 털어서 공격
  • 무결성
    • 권한이 없는 자가 정보를 조작
    • 스푸핑 : 다른 사람으로 위장, 가장
  • 가용성
    • D.Dos : 서비스를 느리게 하거나 완전히 차단

 

암호화, 디지털 서명 두 가지의 중요한 주제

 


2. 전통적인 대칭 키 암호

 

2-1. 대칭 키 암호 알고리즘의 개념

  • Plaintext 평문, Ciphertext 암호문
  • Encryption algorithm : 평문 → 암호문
  • Decryption algorithm : 암호문 → 평문
    • 암호와 복호에 사용하는 비밀 키는 동일

 

암호의 안정성은 키의 안정성에 바탕을 둔다

 

2-1-1. 암호 해독

  • 암호문 단독 공격
    • 전수조사 : 무식하게 하나씩 비교
    • 통계적인 공격 : 얘가 좀 많이 쓰이더라로 공격
    • 패턴 공격 : 암호문에 존재하는 패턴을 이용
  • 알려진 평문 공격
  • 선택 평문 공격
  • 선택 암호문 공격

 

밑으로 내려올수록 풀기 쉬워지나 현실성은 떨어짐

 

2-2. 대치 암호

하나의 기호를 다른 기호로 대체

 

2-2-1. 단일문자 암호

1 : 1 대응 관계

  • 덧셈 암호
    • key 의 경우의 수가 26개 뿐 → 너무 쉽게 풀린다

 

C=(P+K)mod26,P=(C−K)mod26

 

  • 곱셈 암호
    • 26과 서로소이면 역원을 가진다

 

의역원C=(P∗K)mod26,P=(C∗K의역원)mod26

이면의역원(K∗K−1)mod26=1이면K의역원

 

  • 아핀 암호
    • K1 = 곱셈 암호의 K
    • K2 = 덧셈 암호의 K
    • 키의 공간은 12 * 26 = 312

 

C=(P∗K1+K2)mod26,P=((C−K2)∗K1−1)mod26

 

2-2-2. 다중문자 암호

1 : m 대응 관계

 

자동 키 암호 Autokey

  • 암호화
    • 첫번째 K 를 사전에 정의/공유
    • 다음 K = 이전의 P
  • 복호화
    • 첫번째 K 를 사전에 정의/공유
    • 다음 K = 이전에 복호화 한 P

Vigenere 암호

  • 주어진 키 만큼을 돌려가면서 사용

 

2-3. 전치 암호

섞는 규칙을 K(key) 가 가지고 있다

 

2-3-1. 키가 없는 전치 암호

  • Rail fence 암호
    • 합의한 열의 개수에 맞춰 행렬로 나타낸 후 열 순서대로 읽어들임
    • 평문의 각 문자를 암호문으로 바꾸는 순열로 표시

 

2-3-2. 키가 있는 전치 암호

  • 사전에 정의된 크기로 평문을 나눈 뒤, 각각의 블록에 독립적으로 키를 사용하여 문자를 치환

 

2-3-3. 두 가지 접근법의 결합

  • 3단계로 암호화/복호화가 진행
    • 표에 행 순서로 기록 → 열을 재배열 → 표를 열 순서로 읽음

 

2-4. AES (Advanced Encryption Standard)

  • 미국 국립기술표준원(NIST)에서 공표한 대칭 키 암호 알고리즘
    • 현재 대칭 키 암호화에서 많이 쓰이는 기술
  • 기본적으로 128비트 평문 → 128비트 암호문 생성
    • key 의 크기에 따라 각각 라운드를 갖는 3가지 버전 
    • 128, 192, 256비트 키 → 10, 12, 14라운드
  • AES에서의 데이터 단위
    • 1byte = 8bit
    • 1word = 4byte
    • 1block = 4word = 16byte = 128bit
    • block 을 4*4 행렬로 나타낸 것이 state
      • 행렬 표현 방식은 세로 방향으로

 

2-4-1. 변환 함수

  1. SubBytes - 대치
    • 각 state 들을 주어진 S-박스를 대조하여 값 변환
  2. ShiftRows - 치환
    • 바이트 단위의 left-shift
      • Row 0→3 : 0→3byte left-shift
  3. MixColumns - 믹싱
    • state 의 column 들을 주어진 constant 테이블과 행렬 곱을 수행
      • 이때 1byte 크기를 넘지않기위해 기약다항식 x8+x4+x3+x+1 과 modular 연산
    • 8-bit 단위로 XOR 연산 → 같으면 0 다르면 1
  4. AddRoundKey - 키 덧셈
    • state 의 column 들에 라운드 키를 더함
    • 라운드 키는 대칭 키를 확장하여 생성

 

2-4-2. 키 확장 과정

128bit (4word) 기준

ti 의 계산

  • wi−1 를 RotWord → 한 바이트씩 left-shift
  • SubWord → SubBytes 의 S-박스 이용하여 대치
  • RCon(Round Constant) → round 별로 정해진 상수와 XOR 연산
  • 192비트, 256비트의 경우 단위가 6word, 8word로 확장하여 계산
    • t 의 경우 여전히 각 네번째의 워드를 사용하여 계산
    • 결국 나머지 word 들은 숨겨진 채로 암호화 → 더욱 알기 어려워짐

 

2-4-3. 키 확장 과정의 특징

  • 암호 키의 일부나 라운드 키의 일부 값으로 나머지 키 값을 유추할 수 없음
  • 오직 한 비트만 다른 두개의 암호 키도 적은 수의 라운드 만에 서로 다른 라운드 키를 생성
  • 상수 RCons 는 라운드 키들 사이의 대칭성을 제거
  • 심각한 취약 키가 존재하지 않음
  • 성능이 좋지 않은 CPU에서도 잘 작동할 수 있음

 

2-5. AES 의 분석

  • 보안
    • 경우의 수가 2128 (AES-128)
    • 통계적인 분석으로도 실패
  • 구현의 용이성
    • 다양한 플랫폼으로 구현 가능
    • Table lookup, 대수적 구조를 사용하는 루틴으로 구현 가능
  • 단순성과 비용
    • 알고리즘이 매우 단순
    • 저렴한 비용의 하드웨어로도 쉽게 구현 가능

 


저작자표시 비영리 변경금지 (새창열림)
  1. 1. 보안 목표와 서비스
  2. 1-1. 세 가지 보안 목표
  3. 1-2. 공격
  4. 2. 전통적인 대칭 키 암호
  5. 2-1. 대칭 키 암호 알고리즘의 개념
  6. 2-2. 대치 암호
  7. 2-3. 전치 암호
  8. 2-4. AES (Advanced Encryption Standard)
  9. 2-5. AES 의 분석
'BlockChain' 카테고리의 다른 글
  • Class / About Blockchain
  • Class / Digital Signature
  • Class / Cryptographic Hashing and Message Authentication
  • Class / Asymmetric-Key Encipherment
YaHoDev
YaHoDev
YaHo 개발과 일상 일기
YaHo's Dev DiaryYaHo 개발과 일상 일기
YaHoDev
YaHo's Dev Diary
YaHoDev
전체
오늘
어제
  • YaHo (50)
    • Network (6)
      • SDN (2)
      • SD-RAN (4)
    • Language (10)
      • JavaScript (10)
    • BlockChain (6)
    • 알고리즘 문제 (24)
      • 프로그래머스 (24)
    • 야호 먹지도 (4)

블로그 메뉴

  • 모던JS 깃허브

인기 글

최근 글

태그

  • SD-RAN
  • LV2
  • 모던 자바스크립트 Deep Dive
  • js
  • Ran
  • ONF
  • 프로그래머스
  • 비트코인
  • javascript
  • 자바스크립트
hELLO · Designed By 정상우.
YaHoDev
Class / Symmetric-Key Encipherment
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.