암호
-
국가암호공모전 2018 (II-A)분야 3번 문제 풀이문제 풀이/2018 국가암호공모전 2020. 3. 10. 19:48
이 문제를 보자마자 바로 Arduino uno rev3를 사러 갔던 기억이 있다.. 크흠 문제의 가장 핵심은? 아래와 같다! 완전 심플한데, 문제는 아두이노에서 기본적으로 제공하는 변수의 최대 크기가 64bit double 또는 long long 형이다. 48비트 변수 두개를 곱하면 최대 크기가 96비트이므로 일반적으로 곱 연산을 하면 32비트가 흘러넘쳐버린다. 처음에는 multiply large numbers represented as Strings처럼 변수를 string으로 바꾸어 계산하는 문제인가? 하고 잘못 접근을 했었다. 그렇게 가능하기는 한데 아두이노 내부의 string 관련 operation(atoi) 등이 시간을 엄청 잡아먹어서 이렇게 풀면 안된다는 것을 직감하고 말았다. 다시 문제를 들여..
-
국가암호공모전 2018 (II-A)분야 4번 문제문제 풀이/2018 국가암호공모전 2020. 2. 26. 19:05
현재 작성중인 글입니다. 좀 걸릴 것 같아서, 일단 대회때 제출했던 답안을 올렸습니다. 궁금한게 있으시면 댓글 부탁드립니다. 1. 마지막 라운드 키의 첫 번째 바이트 rk0(10)의 값 : 54 2. 1.의 풀이과정 캐시 부채널 공격을 통하여 라운드 키를 복구할 수 있다. 공격 대상자 V는 AES-128 암호연산을 수행하는 소프트웨어이며, 공격자 A는 암호연산이 종료된 후 캐시 부채널을 통해 V의 메모리 엑세스 여부를 파악할 수 있다. 문제에서 주어진 제한조건은, A는 단 하나의 메모리 블록(64바이트)에 대해서만 정보를 얻을 수 있다는 것이다. 메모리 블록에 대한 정보를 바탕으로 AES-128 암호연산 중 마지막 라운드 키의 첫 번째 바이트 rk0(10)의 값을 구하는 것이 목표이다. 문제를 풀기 위한..