개념 설명 키 확장 단계 외에도 모든 단계를 스케치했다. SubBytes가 혼동을 제공하고 ShiftRows와 MixColumns가 확산을 제공하는 방법과 이 두 속성이 어떻게 함께 작동하여 상태 행렬에 비선형 변환을 반복적으로 순환시키는지 살펴보았다. 마지막으로 AddRoundKey는 이 substitution-permutation 네트워크에 key를 시드로 하여 암호를 keyed permutation으로 만든다. 복호화에는 "Structure of AES" 챌린지에 설명된 단계를 역으로 수행하여 역연산을 적용하는 것이 포함된다. 여전히 KeyExpansion(키 확장) 을 먼저 실행해야 하며 라운드 키는 역순으로 사용된다는 점에 유의해야 한다. XOR에는 self-inverse(자기 반전) 속성이 있..
개념 설명 순열(Permutation)을 통한 확산. 우리는 S-box 치환이 어떻게 혼란(confusion)을 일으키는지 보았다. Shannon(섀넌)이 설명한 다른 중요한 속성은 "확산(Diffusion)"이다. 이것은 암호 입력의 모든 부분이 어떻게 출력의 모든 부분으로 퍼져야 하는지와 관련이 있다. 치환(Substitution)은 그 자체로 비 선형성을 생성하지만 전체 상태에 걸쳐 비선형성을 분산시키지는 않는다. 확산이 없으면 같은 위치에 있는 같은 바이트는 각 라운드에 동일한 변환이 적용된다. 이를 통해 암호 분석가는 상태 행렬의 각 바이트 위치를 개별적으로 공격할 수 있다. 한 바이트에 적용된 치환이 다른 모든 바이트에 영향을 미치도록 상태 행렬을 스크램블링(scrambling)하여 (가역적인..
개념 설명 Confusion through Substitution (치환을 통한 혼란) 각 AES 라운드의 첫 번째 단계는 SubBytes이다. 여기에는 상태 행렬의 각 바이트를 가져와서 미리 설정된 16x16짜리 조회 테이블(lookup table)의 다른 바이트로 대체하는 작업이 포함된다. lookup table은 줄여서 "Substitution box(치환 박스)" 또는 "S-box"라고 하며, 처음 볼 때는 당황 할 수도 있다. 그것을 파헤쳐보자. 1945년 미국 수학자 Claude Shannon(클로드 섀넌)은 정보 이론에 관한 획기적인 논문을 발표했다. 해당 논문에서는 보안 암호의 필수 속성으로 "혼란(confusion)"을 인식하였다. "혼란"은 암호문과 키 사이의 관계가 가능한 복잡해야 함..
개념 설명 Round Keys(라운드 키) 지금은 KeyExpansion(키 확장)단계에 대한 자세한 내용은 건너뛰겠다. 요점은 16byte 키를 가져와서 초기 키에서 파생된 "라운드 키"라고 하는 11개의 4x4행렬을 생성하는 것이다. 이러한 "라운드 키 round key"를 통해 AES는 우리가 제공한 단일 키에서 추가 마일리지를 얻을 수 있다. (추가적인 이점이 있다는 듯) 다음 단계인 초기 키 추가 단계(initial key addition)에는 단일(하나의) AddRoundKey단계가 있다. AddRoundKey단계는 간단하다. 현재 상태 배열(state)과 라운드 키를 XOR한다. AddRoundKey는 각 라운드의 마지막 부분에서도 발생한다. AddRoundKey는 단순한 순열이라기보다는 "..
https://cryptohack.org/courses/symmetric/aes2/ CryptoHack – Home A fun, free platform to learn about cryptography through solving challenges and cracking insecure code. Can you reach the top of the leaderboard? cryptohack.org 너무 길어서 링크로 대체한다. 개념 설명 AES의 구조. 키 없이 되돌릴 수 없는 키 순열을 만들어내기 위해, AES는 입력에 많은 수의 애드혹(ad-hoc)혼합 작업을 적용한다. 이는 우아한 개별 수학적 문제를 기반으로 하는 RSA와 같은 공개 키 암호 시스템과 극명한 대조를 이룬다. AES는 훨씬 덜 우..
개념 설명 (Resisting Bruteforce) 무차별 대입 공격 저항. 블록 암호가 안전하다면, 공격자가 AES의 출력을 의사 난수 순열(pseudorandom permutation)과 구별할 방법이 없어야 한다. 게다가 가능한 모든 키를 무차별 대입하는 것보다 순열을 최소화하는 더 좋은 방법이 없어야 한다. 때문에 학계에서는 해당 공격이 실질적으로 불가능하더라도 키를 무차별 대입하는 것보다 수행하는데 더 적은 단계가 필요한 공격을 발견할 수 있는 경우 암호가 이론적으로 "파손"(broken)되었다고 간주한다. ! 128비트 키 스페이스를 무차별 대입하는 것이 얼마나 어려울까? (https://crypto.stackexchange.com/questions/48667/how-long-would-it..
대칭 암호학? 시작입니다. 사실 그 전에 계속 중국인의 나머지 정리를 이해하기 쉽게 증명해서 글을 쓰고자 했는데 너무 어려워서 다음에 쓰려고 미루고.. 진도나 나갑시다. 이번 대회에서는 그냥 sympy에서 crt를 사용하는 걸로.. Keyed Permutation (키드 순열) AES는 다른 우수한 블록 암호와 마찬가지로 "Keyed Permutation"을 수행한다. 즉 수행할 순열을 결정하는 키를 사용하여 가능한 모든 입력 블록을 특정한 출력 블록에 매핑하는 것이다. ! '블록'은 모든 종류의 데이터를 나타낼 수 있는 고정된 수의 비트 혹은 바이트를 나타낸다. AES는 블록을 처리하고 다른 블록을 출력한다. 특히 AES-128로 알려진 128비트(16byte) 블록과 128비트 키에서 작동하는 AES..
문제 설명 다음 방정식을 재배열하여 소수 p, q를 구하여라. N = p*q c1 = (2*p + 3*q)**e1 mod N c2 = (5*p + 7*q)**e2 mod N 문제 풀이 이번 문제를 풀기 위해서 정말 많은 개념들을 찾아봤다. 나는 합동식에 익숙치가 않아서 너무 어려웠던 문제이다.. $N = pq$이고, $c_1 = (2p + 3q)^{e_1} \bmod N$, $c_2 = (5p + 7q)^{e_2} \bmod N$이다. 우리는 p나 q를 중 하나를 구하면 N을 나눠서 다른 하나를 구할 수 있다. 연립 방정식을 푸는 것처럼 풀이가 가능하다. 위에 식은 이항으로 n제곱 되어있는데 이게 어떻게 연립방정식처럼 풀 수 있는가? Freshman's dream(대학교 1학년의 꿈)이 성립한다. $(x..