Security/암호학(Cryptography)

[CryptoHack] Round Keys

2023. 3. 21. 20:59
목차
  1. 개념 설명
  2. 문제 풀이
반응형

개념 설명


Round Keys(라운드 키)

지금은 KeyExpansion(키 확장)단계에 대한 자세한 내용은 건너뛰겠다. 요점은 16byte 키를 가져와서 초기 키에서 파생된 "라운드 키"라고 하는 11개의 4x4행렬을 생성하는 것이다. 이러한 "라운드 키 round key"를 통해 AES는 우리가 제공한 단일 키에서 추가 마일리지를 얻을 수 있다. (추가적인 이점이 있다는 듯)

 

다음 단계인 초기 키 추가 단계(initial key addition)에는 단일(하나의) AddRoundKey단계가 있다. AddRoundKey단계는 간단하다. 현재 상태 배열(state)과 라운드 키를 XOR한다.

 

AddRoundKey는 각 라운드의 마지막 부분에서도 발생한다. AddRoundKey는 단순한 순열이라기보다는 "키 순열(Keyed Permutation)"으로 만드는 것이다. AES에서 키가 상태 배열에 혼합되는 유일한 부분이지만 발생하는 순열을 결정하는데 중요하다.

 

이전 문제에서 본 것처럼, XOR은 키를 알고 있으면 쉽게 복호화 할 수 있는 작업이지만, 모르고 있으면 복호화하기 어렵다.

이제 일련의 치환, 전치암호와 함께 11개의 서로 다른 키로 XOR된 평문을 복구하려고 한다고 상상해보자. 그것이 AES가 하는 일이다.

그리고 우리는 다음 몇 문제에서 뒤섞임(jumbling)이 얼마나 효과적인지 보게 될 것이다.

 

add_round_key 함수를 완료한 다음, matrix2bytes함수를 사용하여 다음 플래그를 획득하라.

 

문제 풀이


state = [
    [206, 243, 61, 34],
    [171, 11, 93, 31],
    [16, 200, 91, 108],
    [150, 3, 194, 51],
]

round_key = [
    [173, 129, 68, 82],
    [223, 100, 38, 109],
    [32, 189, 53, 8],
    [253, 48, 187, 78],
]


def add_round_key(s, k):
	for i in range(4):
		for j in range (4):
			s[i][j] ^= k[i][j]
	return s;

def matrix2bytes(matrix):
	res = ''
	for i in range(4):
		for j in range(4):
			res += chr(matrix[i][j])
	return res

print(matrix2bytes(add_round_key(state, round_key)))

상태 배열과 round key를 xor하고 해당 행렬을 문자열로 변환한다.

반응형
  1. 개념 설명
  2. 문제 풀이
'Security/암호학(Cryptography)' 카테고리의 다른 글
  • [CryptoHack] Diffusion through Permutation
  • [CryptoHack] Confusion through Substitution
  • [CryptoHack] Structure of AES
  • [CryptoHack] Resisting Bruteforce
그믐​
그믐​
그믐​
neutrinox4b1
그믐​
전체
오늘
어제
  • 분류 전체보기 (288)
    • Write up (Wargame) (121)
      • Pwnable (60)
      • Reversing (0)
      • Web Hacking (8)
      • Forensic (1)
      • Cryptography (6)
      • LOB (10)
      • misc (0)
      • SF pwnable 기초 (10)
      • SF pwnable 심화 (1)
      • LOS (25)
    • Security (73)
      • 시스템 해킹(PWN, System) (21)
      • 리버싱(Reverse Engineering) (1)
      • 포렌식(Forensic) (3)
      • 암호학(Cryptography) (44)
      • 네트워크(Network) (1)
      • 임베디드(Emebedded) (0)
    • Develop & CS (38)
      • Algorithm & Data Structure (6)
      • Baekjoon (11)
      • C, C++ (8)
      • Python (2)
      • R (1)
      • etc (8)
    • 프로젝트(Project) (7)
      • 시간표&급식 파싱 (1)
      • 남방진동지수 (1)
      • 네트워크 해킹 (5)
    • Daily life (44)
      • My Book (10)
      • Book Review (1)
      • IT Review (1)
      • 일상 팁 (19)
      • 네트워크관리사 (2)
      • 근황 (11)
    • 수학&과학(Mathematics & Science.. (4)

인기 글

공지사항

  • Wargame, CTF별 검색 키워드 정리
hELLO · Designed By 정상우.
그믐​
[CryptoHack] Round Keys
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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