한국암호포럼
-
국가암호공모전 2017 (II-A)분야 5번 문제문제 풀이/2017 국가암호공모전 2020. 3. 10. 22:01
Oracle Padding Attack(OPA)는 해킹, 보안을 공부하는 사람이라면 대부분 알고 있을 것입니다. 너무 유명해서 이 공격에 대한 한국어 기술 문서도 많이 만들어졌던 것으로 기억하는데요, 이 공격 자체가 유명해졌던 시기가 대략 2014-2015년으로 기억하는데(틀릴 수 있습니다).. 너무 오래돼서 최근에는 아마 ctf나 해킹 대회에서는 잘 출제가 되지 않겠지만 해킹에 대한 일종의 기본기를 쌓을 수 있는 공격이라고 생각합니다. 게다가 이 문제가 나온게 2017년 이었으니 말이죠...크흠 기본적으로 공격자가 보내는 요청에 따라서 서버가 다른 응답을 보낸다는 개념 + 암호학에서 자주 쓰이는 패딩의 개념 등을 이해할 수 있어서 참 좋은 문제였던 것 같습니다. 이제 아래에 대회때 제출했던 답안을 적어..
-
국가암호공모전 2017 (II-A)분야 6번 문제 풀이문제 풀이/2017 국가암호공모전 2020. 3. 10. 21:28
2017년 국가암호공모전은 성적이 딱히 좋지는 않았지만, 인터넷에 풀이를 찾아봐도 거의 없어서 작성하고자 하였습니다. 6번 문제는 게임 클라이언트의 불법적 조작과 관련된 문제입니다. 게임 클라이언트의 무결성을 검증하기 위해 게임을 실행할 때마다 해쉬값을 계산해서 서버로 보내주고, 이를 통해 클라 조작 여부를 판별하는 시나리오입니다. 먼가 nProtect...메x플스토리...이런 키워드가 생각나면서 추억이 새록새록 떠오르네요..... 실제로 해당 프로그램들이 이런 방식을(엄청 단순화되었겠지만) 사용한다는 생각을 하니 가슴이 뛰네요. 흠..? 어쨌든 이 문제는 아주 간단한 exe 파일 reversing을 하는 문제인데, 아래에 대회때 적은 답안을 작성해보고자 합니다. 궁금한 것이 있으면 언제든 댓글로 말씀주..
-
국가암호공모전 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)분야 8번 문제 풀이문제 풀이/2018 국가암호공모전 2020. 3. 6. 12:19
주의: 아래 풀이에 해당하는 답은 틀렸을 수도 있습니다. 공식적으로 확인을 하기가 힘들어 풀이과정만 작성해보았습니다. 아 문제는 여기서 다운 받을 수 있어요! 이제 이 문제를 확인을 해보면 간단히 "runtime 스마트 컨트랙트"의 bytecode를 던져준 문제입니다. Solidity 언어로 작성되었고, 힌트로 verifyIt 이라는 함수를 포함한다는 정보를 제공했네요. 이 함수의 input과 output 정보가 있는데, 이 정보가 실제 문제를 풀 때 꽤 도움이 되었던 것으로 기억을 합니다. 어쨌든 저는 이 문제를 보기전에 스마트 컨트랙트나 solidity 언어에 대한 이해가 전혀 없었기 때문에 막막했는데, 해당 bytecode를 hex decode 해보니까 "Ethereum Signed Message:..
-
국가암호공모전 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)의 값을 구하는 것이 목표이다. 문제를 풀기 위한..
-
국가암호공모전 2018 (II-A)분야 10번 문제 풀이문제 풀이/2018 국가암호공모전 2020. 2. 7. 01:21
TL;DR N이 103 decimal digits 로 충분히 작으므로, msieve등의 라이브러리를 이용해 소인수분해하면 풀린다. 2018년에 국가암호공모전 II-A 암호 문제 풀이 분야에 2명의 학교 후배들과 참가했었다. 그 때 참 많은 일들이 있었지... 어쨌든 이 문제는 놀랍게도 우리 팀이 6번(타원 곡선 문제)을 제외한 모든 문제를 풀어갈 때 까지도 감을 못잡았던 문제였다. 문제는 다음과 같다: 1. RSA 암호에 대한 설명 2. 공개키 쌍 N,e 와 암호문 c를 아래 사진과 같이 알려줌 아무튼 이런 문제가 나오면.. 대부분 특정한 취약점을 이용해서 d(개인키)를 구한 이후에 평문을 복구하는 것이 목표가 된다. 해킹 대회를 하는 사람이면 알겠지만, RSA 관련된 문제는 기존 해킹대회(ctf)에서도..