WARGAME/cryptography 23

[CryptoHack] Confusion through Substitution

SubBytes confusion - 안전한 암호문의 필수요소 중 하나 - 암호문과 키의 관계는 가능한 한 복잡해야 함 = 암호문만 보고 키를 유추 할 수는 없어야 함! - confusion이 약하면, 암호문, 키, 원문과의 관계는 일차 함수로 나타낼 수 있음 (ex. 카이사르 암호: 암호문 = 원문 + 키) S-box(Substitution Box)의 가장 큰 목적: input(plaintext)가 일차함수로 유추될 수 있는 가능성을 낮추는 역할 S-box의 fast lookup: input 바이트에 대한 비선형적인 함수를 행하는 shortcut - 이 함수는 Galois field 2**8의 모듈러 역연산을 갖고 아핀변환(affine transformation)을 한다 -> maximum confus..

[CryptoHack] Round Keys

Initial key addition 의 단계 -> AddRoundKey 현재 state 와 현재 round key를 XOR 연산 해준다! - AddRoundKey는 각 라운드가 끝날때 마지막 단계에서 일어난다 - AES에서 가장 중요한 부분!! -> 왜냐면 키가 state에 서로 섞이는 단계라서 AES에서 키를 알면 복호화를 하기 정말 쉽지만 키를 모르면 정말 어려움. 근데 심지어, AES에서는 11개의 키를 통해 state와 섞이기 때문에 정말 어려움^^.. 퀴즈) add_round_key.py의 내용 state = [ [206, 243, 61, 34], [171, 11, 93, 31], [16, 200, 91, 108], [150, 3, 194, 51], ] round_key = [ [173, 12..

[CryptoHack] Structure of AES

AES 암호화 과정 설명 https://www.youtube.com/watch?v=gP4PqVGudtg AES 암호화 과정 요약 1. Key Expansion 128비트 키에서 11개의 128비트 라운드키가 파생된다. 2. Initial key addition AddRoundKey - 첫번째 라운드 키는 바로 state(plaintext의 블록)와 XOR 연산된다. 3. Round - 9개의 라운드와 마지막 10번째 최종 라운드를 포함해 총 10번 반복된다. a) SubBytes - state의 각 바이트는 S-box에 따라 다른 바이트로 대체된다. b) ShiftRows - state 행렬의 마지막 3행은 1~3열만큼 전치된다. c) MixColums - state의 각 열에 대해 행렬 곱셈이 수행되어..

[CryptoHack] Resisting Bruteforce

만약 블록 암호가 안전하려면, 공격자가 AES와 랜덤치환을 구별할 수 없을 것이다. 즉, AES를 공격하는 것은 브루트포스보다 나은 방법은 없어야 한다!! Biclique attack? MITM 공격법 중 하나인데, 블록암호와 해쉬함수 둘다 공격할 수 있다. 이 방식으로 AES를 공격할 경우 security level을 128비트에서 126.1 비트로 살짝 내린다. Shor's algorithm? quantum algorithm for finding the prime factor of an integer. RSA와 같은 공개키 암호를 깰 수 있음! 퀴즈) What is the name for the best single-key attack against AES? 답: biclique attack

[CryptoHack] Keyed Permutations

keyed permutation(치환)? AES maps an input block into a unique output block, with a key determining which permutation to perform. block? fixed number of bytes or bits. ex) AES-128: 128 bit block & key (16 byte) 퀴즈) 일대일 대응(one-to-one correspondense)의 수학적 용어는? 답: bijection 💡같은 키를 가지고 역 연산을 하면 우리는 decrypt를 할 수 있게 된다. 다만, 이때 일대일 대응이 되어야지만 plaint text -> cipher text 변환과 cipher text -> plain text 변환이 가능..

[CryptoHack] Modular Inverting

modular inverse 에 대한 설명은 다음 포스트 참고... 2024.01.16 - [study/수학&암호] - [CryptoHack] Extended GCD [CryptoHack] Extended GCD 베주 항등식 (Bezout's Identity) 두 정수의 최대공약수를 원래 두 수의 배수의 합으로 나타낼 수 있다. 이때 x 와 y 는 베주 계수(Bezout coefficient)라고 한다!! 정리하자면 GCD(a, b) = d라고 할 때, - ax + by = d lucykorea414.tistory.com 퀴즈) 3 mod 13의 inverse를 구하라~ 역수가 일단 존재하기 위해서는 3과 13이 서로소여야 한다!! (즉, gcd가 1 이어야 함) -> 3과 13은 서로소 O 그러면 오일..

[CryptoHack] Extended GCD

베주 항등식 (Bezout's Identity) 두 정수의 최대공약수를 원래 두 수의 배수의 합으로 나타낼 수 있다. 이때 x 와 y 는 베주 계수(Bezout coefficient)라고 한다!! 정리하자면 GCD(a, b) = d라고 할 때, - ax + by = d를 만족하는 정수 x, y가 존재한다 - d는 정수 x, y에 대해서 ax + by로 표현할 수 있는 가장 작은 정수이다. - ax + by로 표현될 수 있는 모든 정수는 d의 배수이다. 확장 유클리드 호제법(Extended Euclidean algorithm) 위와 같은 베주 항등식과 비슷하게 확장 유클리드 호제법은 ax + by = d 라고 할때, d = GCD(a, b)에 대하여 (x, y)의 값을 찾는 효율적인 알고리즘이다!! 나중에..

[CryptoHack] Greatest Common Divisor

GCD(Greatest Common Divisor): 최대공약수 -> 두 숫자 (a,b)의 가장 큰 약수 ex) a = 8, b = 12 인 경우 a의 약수 = {1, 2, 4, 8} b의 약수 = {1, 2, 3, 4, 6, 12} 따라서 gcd(a, b) = 4 if 만약, a 와 b 가 소수(prime number)인 경우 then gcd(a, b) 는 무조건 1 이다. => gcd(x, y) = 1 인 경우, x와 y는 서로소(coprime number) 이다. Euclidean algorithm (유클리드 호제법, 유클리드 알고리즘) 두개의 자연수의 최대공약수를 구하는 알고리즘 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수..