지난 번 포스팅에서 CPA를 이용하여 주어진 암호화된 hwp 파일을 복호화하였습니다. 해당 hwp파일은 다음과 같습니다. (아래 hwp 파일은 복호화 후 제가 글씨체와 글씨 크기를 변경한 것입니다. 실제 복호화된 hwp 파일은 글씨체와 크기가 다를 수 있습니다.) 열심히 주어진 문제를 푸니 또다른 문제가 나왔습니다. 하지만 위 문제는 저도 ecdsa에 대해 잘 모르던 때였지만, 이틀 만에 풀었을 정도로 어렵지 않은 문제입니다. 1. 문제 접근 위 문제는 ECDSA를 이용한 전자서명 문제입니다. 우선 ECDSA에 대해 간략히 소개하면 다음과 같습니다. ECDSA는 ECC 알고리즘을 이용한 전자서명입니다. ECC란 타원곡선 알고리즘에 기반한 공개키 암호 방식입니다. 타원곡선(elliptic curve)이라하..
출처 : cryptocontest.kr/ Home - SEC연구소 | 암호분석경진대회 cryptocontest.kr 문제 해결을 위한 첨부파일이 있지만 용량 문제로 업로드 하지 않았습니다. SEC 연구소 홈페이지에서 다운 받아주세요. 또한 문제에 문제 해결을 위한 오픈 소스가 올라와있지만, 구 버전 matlab이라 최신 버전 matlab에서 호환 되지 않는 점 참고 바랍니다. (저는 그냥 python으로 직접 짜서 풀었습니다. 이 문제도 변수 이름 등을 너무 중구난방으로 잡아서 정리가 된 후 깃헙에 올리도록 하겠습니다.) 여름 동안 머리를 싸매고 풀었던 4번 부채널분석문제입니다. 문제 해결을 위해 첨부파일을 풀면 hwp.encrypted 파일과 PowerConsumption.csv 파일을 얻을 수 있습니..
출처 : cryptocontest.kr/ Home - SEC연구소 | 암호분석경진대회 cryptocontest.kr 해당 문제를 풀기 위해서는 library 등이 압축된 파일이 필요하지만 용량 문제로 인해 업로드하지 않았습니다. 압축파일은 위 SEC연구소 홈페이지를 통해 다운받으시면 됩니다. 3번은 블록암호 복호화 문제입니다. (제가 아닌 다른 팀원이 푼 문제였습니다. 1번을 풀고 있었는데 하루만에 풀어와서 놀랐던 기억이 나네요 ㅎㅎ) 우선 문제에서 주어진 블록 암호는 ARIA-128입니다. ARIA-128은 KISA에서 만든 대한민국 표준 블록 암호 알고리즘입니다. 암호화 과정은 문제에 나온 것을 인용하면 다음과 같습니다. 평문 P를 q개의 블록으로 나누어 루프를 돌며 enc과 IV를 이용해 xor 연..
출처 : cryptocontest.kr/ Home - SEC연구소 | 암호분석경진대회 cryptocontest.kr 2020 암호경진대회 2번 문제입니다. 최적화를 통해 해당 암호화 알고리즘을 누가 더 빠르게 동작하도록 만드느냐하는 문제였습니다. 문제에서 요구하는 수정해야될 key_gen과 enc 함수는 다음과 같습니다. void key_gen(u8 *rnd, u8 *key) { u8 key_in[2]; u8 tmp1, tmp2; u16 *key_p; u16 con = 0x9ABC; key_in[0] = key[0]; key_in[1] = key[1]; key_p = (u16*) key_in; int i; for (i = 0; i < ROUND_NUM; i++) { if (i % 2 == 0) { key..
문제 출처 : cryptocontest.kr/ Home - SEC연구소 | 암호분석경진대회 cryptocontest.kr 1,2,3번은 일반부와 고등부 공통의 문제였습니다. 4,5번에 비해 상대적으로 쉽지만 참고 논문을 이해하는 것은 생각보다 쉽지 않은 문제입니다. 참고 논문 : eprint.iacr.org/2015/802.pdf 1. 문제 접근 : Hill cipher는 고전 암호로써, 행렬의 역연산이 쉽지 않음을 이용합니다. 예를 들어, 임을 계산하기는 쉽지만, 아래와 같이 행렬식 만으로는 어떤 행렬의 곱으로 이루어졌는지 알수 없습니다. (위와 같은 경우도 가능하기 때문에 K가 되는 2x2 행렬이 무엇인지 그리고 평문인 (1,2)를 구하는 것은 어렵다.) 이러한 hill cipher를 어떻게 하면 풀..