연구 : 공부는 확실히 꽤 했고, 글도 블로그에 많이 썼다. 랩에서 받은 태스크 하나를 잘 수행했다. 연구 자체는 아직 어렵다...
대수적 정수론 : 많이 못 봤다. 3장까지라도 방학 기간에 빠르게 읽을까..
Kaggle : 이건 딥러닝의 기초를 들으면서 병행하는 걸로 결정했다.
위상 : 4단원까지 읽었고, 실해석학과 병행하면서 읽으면 될 것 같다.
CTF : 2월의 마지막 두 대회를 우승하면서 기분 좋게 마무리
암호학 책 리딩 : 2장, 18장, 19장을 읽고 특히 19장은 정리했다. 공부하고 싶은 건 일단 다 한듯.
Rust 입문 : 당연히 아직 많이 부족하지만, 코드포스 Div 2를 순조롭게 칠 정도로 편해졌다.
봉사활동 : 다 채웠고 문제 없이 장학금을 받을 수 있을 것으로 기대한다.
건강 : 중간에 한 번 수치가 이상하게 나와서 정신적으로 충격을 받았는데, false alarm이었던 걸로.. 대신 몸에 더 신경쓰는 삶을 살기로 했다. 이 문제로 정신 없어서 일주일 정도 아무것도 못했다. 아무튼 폭식하지 않고 술도 가급적 안 마시는 걸로. 체중도 조금 줄일 생각...
2월에는 나름 잘 쓴 것 같은 좋은 블로그 글을 많이 쓴 것 같아서 기분이 좋다 :)
건강하고 재밌는 한 학기를 보낼 수 있었으면 좋겠다. 부담없이 과목을 수강하니, 재밌는 공부를 더 하고 싶다.
정수론 가이드를 썼다. 급하게 썼지만 그래도 쓸모있는 자료라고 생각한다. 정수론 내용을 많이 넘기고 실전에 집중하려고 했는데, 오히려 기본 바탕이 부족하면 실전에 집중할 수 없음을 보여준 것 같기도 하다. 아무리 그래도 문제를 풀려면 기본 원리는 알아야 하는데, 이걸 알려면 어쨌든 "지루한" 이론 공부를 해야하는 건 어쩔 수 없다고 생각한다. 가이드 만들어놓고 이게 뭔 소리냐 싶지만, 쓰면서 느낀 게 그런걸 :( 어쨌든 필요하면 질문 댓글을 남기자..
ETH Winter에 참여했다. zk-SNARK를 이해했고 (신기하더라 ㅋㅋㅋㅋ) Diophantine Argument of Knowledge에 대해 발표/구현/블로그를 했다. 굉장히 능력있고 재밌는 사람들을 많이 만났고 인센티브도 많아서 좋은 경험이었다. 영지식 증명에 대한 다양한 이론을 공부하려고 갔는데 (안전성을 엄밀하게 정의하고 증명하는 부분에 대한) 베이스가 조금 부족해서 아쉬웠다. 2월에 가까운 친구와 이 아쉬움을 해소할 생각이다.
CTF를 쳤다. TetCTF, RWCTF, *CTF, 0x41CTF, justCTF를 쳤다. 복기를 해보면 TetCTF에서는 매우 잘했고 (3문제를 1등, 1등, 4등으로 해결), RWCTF에서는 논문 문제에 얻어맞고, *CTF는 잘했지만 문제가 약간 아쉬웠고, 0x41CTF에서는 잘했고 Linear Cryptanalysis를 약간이나마 배울 수 있는 좋은 기회였다. justCTF는 아쉬웠다. 크립토가 2문제였는데 하나를 도저히 모르겠다 :( 그래도 꾸준히 대회 참가를 하고 있어서 좋다.
현대대수를 복습했다. 이인석 교수님의 책으로 읽었는데, 아무래도 현대대수 내용을 선형대수처럼 조금 편하게 다루려면 연습이 필요할 것 같다. 내용을 보고 이해하는 것과 그걸 잘 써먹는 것은 아예 다른 수준의 이야기. 일단은 "프렐라이만 읽은 상태"에서 벗어난 정도로 만족하고 있다.
봉사활동을 했다. 대통령과학장학금을 위해 봉사를 해야하는데, 코로나 때문에 아예 하지 못했다. 필요한 시간은 거의 채웠다.
봉사시간과 별개로 TechTogether라는 곳에서 멘토 역할을 했다. 개발자가 아니라서 나는 그냥 암호학 퍼즐 관련 힌트 제공 및 채점을 했다.
필요한 휴식을 취했다. 링피트도 사서 운동도 하고, 츄니즘도 한 번 쳐보고, 산책도 가고. 츄니즘에 대한 미련은 이제 버렸다. 예전에 하던 실력의 10%도 나오지 않고 있고, 이걸 다시 복구하려고 시도할 생각은 들지 않는다. 계속 츄니즘 치고 싶다고 징징댔는데 이제 다 끝났다.
2월 계획들
랩에 들어갔으니 연구를 한다. 1월에는 제대로 시간을 투자하지 못했으니, 2월에는 하고 싶다. 논문을 쓰지 못하더라도, 많이 배웠으면.
암호학 책 리딩. 조금 근본있게 암호학을 공부하고 싶어서 책을 찾았다. 다 읽는 것은 무리니, 필요한 부분만 가벼운 마음으로 읽으려고 한다. 친구와 스터디를 할 듯. 읽으려 할 내용은 안전성에 관한 엄밀한 정의와 프로토콜 부분이다. Dan Boneh와 Victor Shoup이 저자고 대학원 수준이니 아주 재밌을 것 같다. 그런데 가장 관심이 가는 Post-Quantum이나 Number Theoretic Assumption 등에 관한 내용이 아직 작성이 안되서 아쉽다.
CTF. 이건 계획이 아니라 그냥 삶의 일부다 이제는 ㅇㅇ.. 군대에 가기 전까지는 계속 이러지 않을까?
Kaggle 훑기. 이거 하다가 자꾸 "아니 근데 이 코드가 그래서 뭘 하는 건지 1도 모르는데 이걸 잡고 있는게 의미가 있냐? 그냥 딥러닝의 기초 수업까지 기다리자" 싶어서 안 건드리고 있었는데, 그래도 하는 게 낫지 않을까 싶다. 특히 뭐 진행도 올라가는거에 환장하는 (이젠 딱히 부정하고 싶지 않다. 이 성격 때문에 크립토핵 미친듯이 해서 좋은 결과가 나오기도 했으니 ㅋㅋ) 성격이니 하겠다고 마음을 먹으면 하지 않을까? 어쨌든 코드 짜는 법도 배워야 하고...
Rust 입문. 사실 solved.ac에서 정수론 카테고리를 최대한 밀고 싶었다. 그래도 실버/골드 문제를 C++로 밀기는 너무 지루해서, 새 언어를 배워서 기초 연습에 써먹기로 했다. 주변에 내가 생각하기에 "좀 치는" 사람들이 Rust를 좋아해서, 이 언어를 잡기로 결정했다. 사실 뭐 이런 방식으로 언어를 연습해봐야 매우 기초만 알게 되는 단점이 있는데, 그래도 어쨌든 하지 않는 것보다는 나을 것이라고 생각. solved.ac 정수론에 대한 미련을 해소하기 위해서라도..
대수적정수론 입문. 교재를 뭘로 볼지가 고민. Napkin이 있고, 꽤 추천이 된 책인 Number Fields가 있고, (학부 수준) 내 지식 밖의 사전지식이 (그 사전지식을 배울 준비가 부족한 것은 아니나, 한 달 안에 보기에는 조금 힘들다) 필요하지만 SageMath 등을 사용해서 Computational 한 부분까지 채워주는 Stein의 책이 있다. 아마 병행하면서 이해할 수 있는 부분을 볼 것 같다. 재미를 위한 것이니 편안한 마음으로 즐기려고 한다. (우선순위도 낮다)
위상수학 빠르게 보기. 위상1을 들어야 하는데.. 시간표가 애매해서, 그냥 개인 공부로 해야한다. 실해석 들으려면 앞부분만이라도 필요.
운동. 링피트를 그대로 하면 될 것 같다. 링피트 사기를 참 잘했다..
수강신청 (확정 X)
복소함수론 1. 복소 내용이 (순수/응용 전부에서) 매우 유용하고 재밌다고 들었다.
실해석. 금융수학에서도 필요할 거고, 함수해석에도 필요. 쓸모가 많다. 위상수학 지식을 약간 준비해야 할 듯
2020년은 코로나 바이러스 때문에 모두에게 힘든 한 해였을 것으로 생각합니다. 저도 처음에는 괜찮았는데 만나고 싶은 사람도 계속 못 만나고 먹고 싶은 음식도 제대로 못 먹으니까 정신적으로 지치네요. 하지만 주변에 좋은 사람을 많이 둔 덕분에, 2020년은 놀랍게도 제가 살면서 가장 많이 성장한 1년이 될 수 있었습니다. 예전에는 (2016~2019) 학점에 과하다 싶을 정도로 투자해서 상대적으로 덜 중요한 교양 과목에도 많은 시간을 넣었고, 그 때문에 학점을 챙기는 것과 PS를 제외하면 특별히 하고 있는 일이 없었습니다. 흥미로운 전공도 극히 일부를 제외하면 듣지 못했습니다. 그에 비해, 올해는 수업도 유용하고 재밌는 것을 많이 들었고, 학점도 적당히 챙겨주면서 학교 밖에서도 많은 것을 배우고 이룰 수 있었습니다. 이렇게 매년 성장할 수 있으면 정말 좋을 것 같네요.
이제부터 글은 토픽으로 나누어서 진행됩니다. 사진 대부분은 링크로 대체됩니다.
PS/CP 이야기
1년에 거쳐서 백준 문제를 약 700개 정도 풀었고, solved.ac 경험치는 대략 2배 정도로 증가해서 Ruby III에 도달했습니다.
작년 이야기를 먼저 빠르게 하면, 위에서 언급한 것처럼 저는 2019년에 한 활동이 사실상 학점관리, PS 2개였습니다. 2016~2018까지는 PS를 설렁설렁하다가 대학에 들어오면서 본격적으로 잡기 시작했고, 손을 대지 않고 있던 자료구조들을 공부하기 시작했습니다. 재귀적으로 짜는 세그먼트 트리나 lazy propagation 등 고인물 알고리즘까지는 아닌 내용도 2019년에 모두 처음 배웠습니다. 시간을 많이 투자한 만큼 좋은 결실을 가져갈 수 있기를 원했는데, 절반의 성공을 거두었습니다. ACM-ICPC에서 5등이라는 예상하지 못한 좋은 결과를 멋진 팀원들 덕분에 얻었습니다. 하지만 개인대회 중 가장 큰 대회인 SCPC에서는 본선조차 진출하지 못했습니다. 가까운 친구들은 전부 알겠지만, 이때 받은 충격이 상당히 컸습니다. 어쨌든 SCPC 수상자가 받을 수 있는 여러 혜택을 받아야 PS를 한 의미가 제대로 나온다고 생각을 했고, 동시에 평생 PS를 할 것은 아닌 만큼 PS에만 집중하는 기간이 길어져서 좋을 것은 없다고 생각했습니다. 결론적으로 올해 SCPC에서 상을 따고 아름다운 마무리를 하는 것이 (PS를 취미 정도로만 하는 것으로) 무조건 이뤄야 하는 주요 목표가 되었습니다.
올해 PS/CP 이야기의 첫 시작은 역시 국제정보올림피아드 겨울학교 조교를 하는 것으로 시작합니다. 2019년에 이미 많은 친구가 조교로 참가했고, 재밌어 보여서 저도 참가하고 싶다는 생각을 했습니다. 고등학생이었을 때는 KMO 겨울학교 조교를 하고 싶다는 생각을 했는데, 이제는 KMO보다는 KOI에 더욱 가까운 사람이니 생각이 달라진 것 같습니다. 아무튼, 2주간 삼성 측 시설에서 합숙하면서 학생들을 지도했는데, 매우 좋은 경험이었습니다. 올해 IOI 2등한 친구 등 여러 훌륭한 사람들을 지도하고 같이 이야기하고 괴상한 문제나 테크닉 소개하고 그러니 즐겁더라구요. 그 때 koosaga와 Binary Matrix라는 Ruby II 수학 문제에 대해서 가끔 이야기했는데, 꾸가 그때 이걸 푸는 걸 보고 좋은 자극을 많이 받았습니다. 결과적으로 BOJ에서 수학 문제를 더 풀고 싶다, 어려운 알고리즘 문제 더 풀면서 실력을 쌓고 싶다는 생각을 많이 할 수 있었습니다. (koosaga한테 수학 십덕력을 밀리고 싶지 않다는 생각이 한몫했습니다)
돌아와서 문제를 풀었습니다. 많이 풀었고, 기록은 이 블로그의 PS 일지로 남아있습니다. 운이 좋게도 Petrozavodsk 캠프 문제들이 백준에 본격적으로 올라오기 시작하면서, 풀 수 있는 수학 PS 문제들도 어마어마하게 많아졌습니다. solved.ac 랭작도 덕분에 속도가 많이 붙었습니다. 수학 이외에도 그냥 Diamond V 잡고 유명하거나 좋은 것으로 알려진 거 골라서 밀고, 특정 대회 잡아서 밀고, 특정 알고리즘 태그 (특히 수학) 잡아서 밀고, 아무튼 많이 풀었습니다. 3월의 PS 일지가 Part 7까지, 4월의 PS 일지가 Part 5까지 있네요 ㅋㅋ; 이렇게 보니까 solved.ac가 정말 좋은 프로젝트입니다. shiftpsh는 신이 맞습니다.
생각해보니까 이때 Google Code Jam도 있었네요. 그 티셔츠 입고 글 쓰고 있습니다 ㅋㅋㅋㅋㅋㅋㅋㅋ
그러다가 방학이 되고, 이때 뒤에 "일상 이야기" 부분에서 이야기할 이유 때문에 아무것도 하지 않았습니다. 가끔 사람 만나면서 같이 팀연습 도는 거 정도. UCPC도 사실 별로 할 생각이 없었는데, 고등학교 친구들이 같이 하자길래 즐겜하기로 했습니다. 좋은 결과가 나온 것은 아니지만, 본선에서 Diamond I 레이팅의 정수론 문제인 H를 1시간 컷해서 First Solve를 딴 것은 지금도 기분이 좋습니다. 수학십덕 인증한 느낌 :) 그 이후로 8월에 또 국제정보올림피아드 여름학교 조교를 했습니다. 온라인이라서 그런지 감흥은 훨씬 줄었습니다. 하지만 PS 폼이 떨어진 상태로 조교를 하기는 조금 그러니 이때 연습을 많이 했습니다. 8월도 PS 일지가 Part 6까지 있네요 :P 특히 이 중 하루는 날을 잡고 친구 집에서 밤새우면서 문제를 풀었습니다. 재밌었는데 지금 상황으로는 다시 하기 힘들 것 같네요 :( 그러다가 학기가 시작되고 CTF에 입문하면서 PS를 많이 놓았습니다. SCPC 하겠다고 1~6월까지 PS를 달린 건데 타이밍이 좋지 않았습니다.
그러다가 8월 말, 9월 초에 SCPC 1차, 2차 예선이 있었습니다. 다행히도 이번에는 SCPC 채점 방식에 대한 이해도가 있었고, stress-test를 하는 방법도 알아 작년보다 편하게 대회를 치를 수 있었습니다. 둘 다 편하게 만점으로 통과했습니다. 하지만 여러 이유로 그 이후 약 1달간 문제를 풀지 못했습니다.
10월 초에 ICPC 예선이 있었습니다. 사실 팀조차도 작년 팀으로 유지가 될지 불분명하다가 다들 그러려니 하는 분위기로 팀을 유지하고 대회를 한 번 더 나가게 되었습니다. 셋 다 한동안 PS를 접어서 별로 큰 기대는 하지 않았습니다. 저는 CTF를 시작했고, 친구 한 명은 Software Maestro 11기로 활동하고 있었고, 다른 팀원은 평소에도 PS를 많이 하지는 않으나 능지로 커버하는 신기한 친구였습니다. 서울대 예선은 원래 빡세고, 코로나로 본선 팀 TO가 줄어든다는 말이 있어서 본선에 가기 어려울 것으로 생각을 했는데, 예상보다 훨씬 좋은 결과인 6등을 받고 본선에 갈 수 있었습니다.
SCPC 본선 날짜가 11월 7일로 확정되면서, 10월 말부터 본격적으로 준비해야겠다는 생각이 들었습니다. 셋도 돌고 문제도 대충 손에 잡히는 것을 풀었습니다. 10월/11월 PS 일지에 푼 문제 목록이 있습니다. 대회 직전에는 제 개인 템플릿을 열고 알고리즘 대부분을 외웠습니다.
이 시점에서 이미 CP를 대회 관련 스트레스를 받으면서 할 이유가 없어졌다고 생각했습니다. 부담이 확실히 많이 없어졌습니다.
11월 14일에는 ACM-ICPC 본선이 있었습니다. 부담 없이 대회에 임했고 적당히 9등/동상으로 마무리했습니다. 대회 중에 어마어마하게 많이 말렸는데, 그래도 명예롭게 끝낸 것 같아서 다행입니다. 그 이후로는 CTF/기말고사로 PS를 하지 못했습니다. 방학 때 조금씩 할 듯.
어쨌든 PS/CP에서 원하는 것을 모두, 그것도 제 기대를 넘으면서 얻어서 정말 편안합니다. 이제 다른 분야로 넘어가도 찝찝하지는 않을 것 같습니다.
제 PS 이야기를 하면서 프로젝트 오일러 이야기를 뺄 수는 없습니다. 올해 대략 100문제를 해결하여 현재 총 526문제를 해결했고, 한국 2등입니다.
프로젝트 오일러의 또 다른 랭킹으로는 문제 수가 아니라 일주일에 한 문제씩 나오는 새로운 문제를 누가 가장 빨리 해결하는가로 결정하는 Eulerian 랭킹이 있습니다. 1등에게 50점부터 시작해서, 1점씩 줄여나가서 50등에게 1점을 부여하고, 최근 10문제 중 점수가 가장 높은 5개의 점수를 합쳐서 매긴 점수로 등수를 매깁니다. 717번 2등, 715번 5등 등 정수론 문제를 일찍 해결한 덕분에 세계 top 10을 (정확히는 8등) 찍어볼 수 있었습니다. 모든 문제를 편하게 빠르게 해결할 정도의 실력자는 아니어서 문제 운이 좀 필요했는데, 어려운 정수론과 쉬운 문제가 (속도전) 잔뜩 나와준 덕분에 이렇게 된 것 같습니다.
솔직히 실기 시험이었으면 잘 봤을 것 같기는 한데 또 모르겠습니다. 이런 생각이 의미가 있는 것도 아니고 ㅋㅋㅋ
계속해서 느끼는 것이지만, 이런 내용은 실제로 뭘 만들면서 굴러봐야지 제대로 이해될 것 같습니다.
각종 교양
논리학 (2학년 1학기), 물리학 2 (여름학기), 언어의 세계 (여름학기), 주권국가와 국제법원 (2학년 2학기)
이제 남은 교양 과목은 과학 교양 하나, 과학 실험 2개가 전부. 인문 교양이 모두 끝난 것은 매우 다행이라 생각합니다.
논리학은 그냥 꿀을 통째로 퍼먹었다고 볼 수 있고, 언어의 세계는 적당히 흥미로웠습니다.
주권국가와 국제법원은 내용은 확실히 재밌습니다. 과제와 시험은 재밌는지 잘 모르겠습니다 ㅋㅋ;
2학년 2학기부터 컴퓨터공학부를 복수전공합니다. 3학년부터 본격적으로 전공을 들을 것 같습니다.
올해 총 47학점을 (21 + 6 + 20) 이수했습니다. 2학년 1학기, 여름학기에는 학점을 깔끔하게 잘 받고 넘겼는데, 2학기는 잘 모르겠네요.
UPD: 학점이 다 나왔습니다. 예전처럼 잘 받은 것은 아니지만 예상보다는 잘 받았네요 ㅋㅋ 컴프 B가 아닌 걸 다행으로 생각해야...
CTF/암호학 이야기
2학년 1학기에 암호론 수업을 듣고 여러모로 재밌다고 생각했습니다. 그러던 어느 날, 암호론 기말고사를 준비하다가 겁나 어려워서 바킹독님 블로그의 방명록에 대충 암호론 왜 이렇게 어렵냐는 글을 비밀글로 올렸습니다. 당시에 제가 서로 알고 있는 사이였던 암호학 관련 활동을 하시는 분이 바킹독님 한 분이었기 때문입니다. 그러다가 답글이 왔는데, 대충 "크립토핵이란 사이트가 꽤 퀄리티가 좋으니 해보면 재밌을 것"이란 내용이었습니다. 그래서 가입했습니다.
대충 6월 20일부터 7월 3일까지 크립토핵만 했습니다. 엄청 재밌더라구요 ㅋㅋ 랭킹 올라가는 맛도 있고..
그 후 못 풀겠는 문제들은 못 풀겠는 상태로 두고, 컨텐츠를 능력 선에서 다 소모했다 싶어서 그대로 두고 있었습니다.
7월을 "일상 이야기" 부분에서 후술할 이유로 날렸고, 8월은 PS를 하면서 보냈습니다. 이대로 끝인 줄 알았는데..
8월 말, 한국의 CTF 팀 중 하나인 Defenit에서 들어오라는 연락이 왔습니다. 크립토핵 스코어보드 보고 찾으셨더라구요.
예전 같으면 일을 더 벌이기 싫어서 거절했을 것 같은데, 당시에는 학교 밖 활동을 많이 하는 게 필요하다고 생각해서 수락했습니다. 아래는 당시 친구와 DM.
지금도 생각해보면 크립토핵을 시작한 스노우볼이 정말 크게 굴러갔습니다. 바킹독님 ㄹㅇ로 감사합니다 ㅋㅋㅋㅋ
들어갔을 때 걱정은, 아무래도 CTF 관련 문제를 푼 경험이 크립토핵 밖에는 아예 없으니 짬이 없다는 것이었습니다.
예를 들어, 크립토핵 같은 경우에는 암호의 수학적 요소만 대강 이해해도 풀 수 있는 부분이 많고, CTF에 나오는 내용이 전부 다 있는 것도 아닙니다.
그러니 프로그래밍적 요소에서 발생하는 취약점이나 크립토핵에서 다루지 않은 내용에는 많이 약하고, 그건 안타깝지만 지금도 마찬가지인 것 같습니다.
대충 설명하자면 "내가 그냥 수학원툴인데 그마저도 근본이 딸려서 대회에서 크립토 문제가 나오면 못 풀 것 같다" 정도.
팀에 들어가면서 buuoj라는 사이트를 알게 되어서 여기 문제를 좀 풀었습니다. 사이트가 좋은지는 잘 모르겠습니다 ㅋㅋ
긴장하면서 첫 대회인 InterKosenCTF를 쳤습니다. zer0pts 쪽 분들이 낸 대회인데, 다행히 크립토 문제들이 다 제 입맛에 맞았습니다.
되게 걱정을 많이 했는데 저도 문제를 잘 풀고 퍼솔도 따고 팀도 잘해서 기분이 꽤 좋았습니다. 사실 이때까지만 해도 CTF를 한다는 실감은 나지 않았습니다.
진짜 실감이 나기 시작한 건 TokyoWesternCTF를 쳤을 때였는데, 당시 팀에서 매우 큰 대회라서 매우 큰 연합팀으로 참가한다고 들었습니다.
이때 특히 pwnable/web 잘 푸는 사람들 보고 많은 걸 느꼈습니다. 팀 구성을 아는 사람들은 누구를 말하는 것인지 알 것 같습니다 :) 대강 개잘하는 사람들 볼 때 자연스럽게 드는 감정 50%에 "나는 어쩌다가 이런 사람들이 있는 팀에 들어간 걸까" 25%에 "내가 여기 있는 게 굉장한 privilege 구나" 25%인듯.
다행히 이 대회의 크립토 문제들도 제 입맛에 맞는 순도 100% 수학 문제들이었습니다. 멋진 크립토 팀원 분들이 계셔서 크립토를 다 풀고 우승했습니다.
SECCONCTF도 비슷한 맥락으로 흘러가고 연합팀으로 우승했습니다. 크립토 문제가 또 순도 100% 수학 문제들이어서 편하게 풀었습니다.
이때는 진짜 기여를 많이 한 것 같아서 (4750점 중 1000점 이상 땀 ^__^) 되게 자부심이 컸고, 지금도 올해 이게 가장 큰 CTF 대회 업적 같습니다.
그 이후에 Google CTF Final이 있었는데 2등으로 좋은 결과를 얻었지만 제가 한 건 딱히 없는 것 같습니다 :P
CV에 넣거나 어디 가서 자랑하러 다니려면 뭔가 기여를 어느 정도 해야 할 것 같아서, 이런 경우는 별로 신경을 쓰지 않고 있습니다.
10월 초에 rbtree님의 연락 및 추천으로 Super Guesser라는 팀에도 들어갔습니다. 대회 엄청나게 자주 참가하는 팀으로 이미 알고 있었습니다.
삼성 소멤 블로그 글로 이미 알있던 분이고 고수인 걸 이미 알고 있었기 때문에 같이 문제를 풀면 재밌을 것 같아서 별로 고민하지 않았습니다 :)
이 팀으로 같이 N1CTF를 했습니다. 여기까지도 크립토 문제가 거의 100% 수학이어서 편하고 재밌게 풀었습니다. 같이 푸니까 더 재밌더라구요 ㅋㅋㅋ
10월 말에는 rbtree님, 바킹독님과 함께 암호학 대회 NSUCRYPTO에 참가했습니다. 다들 중간고사로 정신없어 풀 수 있는 문제만 풀고 제출했습니다.
다 좋았는데, 제가 문제를 하나 잘못 읽어서 상의 등급이 한 칸 내려갔습니다 :( 이건 지금 생각해도 너무 아쉽네요 :(
이 쯤, Defenit을 떠나고 팀을 Super Guesser로 완전히 옮겼습니다. 이때 머리 아파서 정신 나가는 줄 알았습니다
이후 11월 초까지는 SCPC/ICPC 등 PS 대회를 준비하느라 제대로 CTF 활동을 하지 못했습니다.
11월 중순부터 이걸 쓰고 있는 12월 말까지 매주 주말을 CTF에 어느 정도 바치고 있습니다.
11월에는 순서대로 BalsnCTF - DragonCTF - HITCONCTF를 쳤습니다. HITCON은 우승하면 DEFCON 본선 직행인 매우 큰 대회입니다.
이 대회들은 매우 강한 CTF 팀 중 하나인 Perfect Blue와 같이 연합해서 참가했고, 결과론적으로는 셋 다 우승했습니다. DEFCON 29 본선 참가도 확정.
하지만 개인적으로는 찝찝한 점이 남고 있습니다. 셋 다 별로 팀에 기여하지 못했기 때문입니다.
BalsnCTF는 푼 팀이 있는 크립토 문제가 하나였고 이 문제는 "피곤해서 자고 일어났더니 풀려 있었다" 정도의 변명이 가능합니다.
DragonCTF, HITCONCTF는 변명할 여지가 없는 것 같습니다. 둘 다 처음 CTF를 시작했을 때 했던 걱정인 짬 문제/수학원툴 문제 때문인 것 같습니다.
DragonCTF에서 원하는 만큼 기여하지 못한 3문제는 각각 비트코인 PoW에 관한 지식이 필요했던 문제/implementation에서 발생하는 취약점 찾으면 쉬운 문제/엄청 어려운 문제가 아닌데 주어진 프로그램을 이해하지 못하여 제대로 건드리지도 못한 문제였는데, 크립토만 하는 사람이 이러면 안 된다는 생각.
HITCON에서는 크립토가 3문제가 있었고, 다행히도 그 중 가장 솔브수가 적은 문제인 primary ingredient를 해결했습니다.
사실 이것도 그냥 때려맞춘거라 실력에 문제가 있는 건 맞지만, 그래도 기여한 건 맞으니까 다행이라고 생각합니다.
잘 찍은 덕분에 다른 고수 팀원들 시간을 많이 절약해준 건 사실이니까요. 하지만 다른 두 문제에서도 별로 기여하지 못한 건 찝찝합니다.
프로그램을 보고 작동 과정을 제대로 이해하거나, 원하는 exploit을 문제없이 구현하는 부분에서 막히는 것은 저도 좀 답답합니다.
예전에 크립토에 수학문제만 나온 대회에서도 "Python에서 for문 어떻게 쓰더라" 같은 소리를 해서 좀 부끄러웠는데 암튼 좀 그렇습니다 ㅋㅋ..
단순히 능지가 박살났거나 암호학 지식이 부족하거나 뇌가 잘 돌아가지 않아 문제를 못 푸는 경우면 부끄럽다기보다는 더 공부해야겠다, 더 자료를 찾아야겠다는 생각이 드는데 저런 문제로 팀원들을 도와주지도 못하면 그냥 창피합니다 솔직히 ㅋㅋ.. 해결을 해야하는 문제입니다. 컴맹인 것 좀 어떻게 해야 :(
사실 제가 CTF 대회에 참가했는데 writeup이 안 올라오면 그건 제가 원하는 만큼 기여를 못해서일 확률이 99%입니다 :(
어쨌든 이때 멘탈이나 자신감이 좀 날아갔습니다. 원래 4인 팀으로 큰 대회를 하나 나가기로 했는데, 말 그대로 쫄아서 튀었습니다.
지금 생각해보면 참 좋은 판단을 한 것 같습니다. 올해 나쁜 판단은 수치해석개론 수강신청 제외하고 없는 듯...
12월 첫 주에는 PBCTF에 참가했습니다. 오랜만에 수학/알고리즘 문제 많이 나와서 재밌게 풀었습니다.
12월 둘째 주에는 ASIS CTF Finals에 참가했는데, 암호학 문제에 여러 오류가 많아서 신경 안 쓰고 있습니다 ㅋㅋ
12월 셋째 주에는 hxp CTF에 참가했습니다. 해시 관련 문제에 아직도 많이 약한 것 같은데, 공부 좀 해야겠습니다.
크립토 한 문제를 풀지 못하고 끝났습니다. Hyperelliptic Curve 문제였는데 이런 거 풀려면 공부가 훨씬 더 필요할 듯. 쉬운 거 하나 풀고 끝났네요.
여행의 첫 시작을 끊어준 크립토핵은 문제가 나올 때마다 빠르게 밀려고 노력하고 있습니다. 현재는 올솔브/8등.
돌아보면 정말 감사할 사람들이 많습니다. 얻은 결과가 제 능력 1%에 주변 도움 99% 정도로 나온 것 같습니다.
크립토핵을 만들어준 운영진분들과 크립토핵 문제를 낸 사람들. 크립토핵 디코에서 도움을 주신 분들.
암호학에 관심을 갖게 간접적으로 도와주신 (소멤 블로그) rbtree님, 크립토핵을 추천해주신 바킹독님.
Defenit에 초대해주신 팀장님 및 같이 팀한 분들 (특히 위에서 말한 pwnable/web 분들과 같이 크립토 푼 사람들)
연합팀에서 계속 멋진 모습을 자주 보여주신 zer0pts, KAIST GoN 및 기타 팀 소속 모든 팀원 분들.
Super Guesser에 들어가는 걸 허락해준 팀장님과 여기서 같이 팀하고 있는 분들, 연합한 멋진 Perfect Blue 팀원 분들.
어쩌다 보니 트위터에 들어가게 되어 만난 CTF에서 저처럼 Crypto 분야 문제를 주력으로 푸는 분들까지.
원래 이렇게 감사하는 건 뭔가 더 이루고 해야 할 것 같지만, 감사하는 마음을 표현하는 게 나쁜 건 아니니까요 :) 정말 감사합니다.
내년에는 더 재밌는 일이 많았으면 좋겠습니다. 4인 1팀 대회도 나가보고는 싶은데, 데려갈 사람이 있을까 싶네요. 군대도 있고 ㅋㅋㅋ
일상 이야기
사실 여기에 특별히 쓸 이야기는 별로 없습니다 ㅋㅋ
7월 한 달을 단간론파 정주행하려고 날렸습니다. 제대로 보려면 따효니 유튜브로 봅시다.
지능이 많이 올랐습니다. 트위치를 보다가 끊었습니다. 디씨 눈팅을 많이 하다가 끊었습니다. LCK 많이 보다가 끊었습니다.
대신 스포츠 영상을 자주 봅니다. NHL 하이라이트 보는 게 정말 재밌습니다 :)
1학기, 2학기 모두 비대면으로 집에서 수업을 들으니까 (사실 게을러서) 생활패턴이 많이 망가졌습니다. 실제로 안 들은 수업도 많고 ㅋㅋ..
츄니즘이 정발되었는데, 정말 하고 싶은데 코로나 때문에 오락실에 못 가고 있습니다.
만나고 싶은 사람이 정말 많은데, 코로나 때문에 못 만나고 있습니다. 슬슬 정신적으로 힘드네요 :(
먹고 싶은 음식이 정말 많은데, 코로나 때문에 못 먹고 있습니다. 판교 현대백화점, 쉑쉑버거가 간절합니다 ㄹㅇ
가끔 SNS 등에서 코로나 무시하고 놀러 다니는 사람들이 보이는데, 보면 고통 30배 ㅋㅋ..
어쨌든 기운 없이 아무것도 하지 않는 시간이 너무 많은 것 같습니다. 어떻게 고칠지는 모르겠습니다.
미래 이야기
미래에 할 일
CTF를 위해서나, 재미를 위해서나 암호학을 조금 더 제대로 공부할 필요는 있습니다.
Optimization 관련 랩에 들어갔으니, 일단 이 일도 최대한 열심히 해보고 싶습니다.
1월에 블록체인 관련 스터디에 들어갑니다. 친구랑 같이할 것 같고, 기대하고 있습니다.
삼성소프트웨어멤버십에 들어갔습니다. 블로그 작성 등을 할 계획입니다.
정수론 가이드를 작성하기 시작했습니다. 방학 안에 마무리해야 합니다.
군 문제를 해결해야 합니다. 빠르게 처리하고 싶은데, SW 개발병을 원하면 개발 공부나 자격증 공부도 해야 할 것입니다.
군 문제를 제외하고 생각해도, 개발 공부를 언제까지나 내버려 두는 것은 현명하지 않은 것 같습니다. 소개원실 ON?
데이터 과학 분야를 언제까지나 공부하지 않을 수는 없으니, 기본기 정도는 갖추어야 합니다.
더 먼 미래에 뭘 할 것인지에 대한 고민을 해야 합니다. 대학원을 갈 것 같기는 한데 어떻게 될지 ㅋㅋ;
3학년 1학기 희망 수강 과목 : 소개원실, 수학적 모델링, 자료구조, 알고리즘, 복소 1, 수리통계 1 or 미분기하학 1
매운 전공들 좀 더 듣고 싶습니다. 주변에 복소, 미기, 위상 등을 듣고 있는 친구가 꽤 있어서 더 자극되네요.
미래에 대한 고민
뭔가 한 건 많은데 결국 10~15년 뒤에 의미가 있는 것들인지는 또 미지수입니다.
물론 하고 있는 모든 일에 대해 10~15년 뒤의 의미를 따지면 매우 재미없는 삶이겠지만, 의미 없는 일만 한 것은 아닌지 걱정은 되네요 :(
자꾸 다른 사람들이 하지 않는 것들만 하려고 하니까 다른 사람들이 다 아는 걸 모르는 것 같습니다 :(
위 문제에 대해서, "대충 때가 되면 공부하지" 정도로 생각하고 넘겼는데 솔직히 너무 무리수 같습니다 ㅋㅋㅋ
그래도 "공부하면 평타는 치지 않을까"라고 근거 없이 믿고는 있는데 사실 배워봐야 알 것 같습니다 ㅎㅎ..
결국 "내가 미래에 개발자가 되면 지금 하는 것들 중 대부분이 쓸모가 없어질 것이고 애초에 개발자를 목표로 공부해온 분들에 비해 뒤쳐질 수 밖에 없음. 공부하면 따라잡을 수 있다고 쳐도 뭔가 너무 아쉬움. 그래서 지금 하고 있는 것들을 바탕으로 할 수 있는 일을 하고 싶은데 그런 일을 하려면 ㄹㅇ 장난 아닌 수준의 능력자가 되어야 함. 근데 그럴 능력자가 될 자신은 없음." 이 고민은 대학원 관련 결정이 나기 전까지 계속될듯. 어쩔 수 없다.
성장했다고 글 앞에 썼는데, 진짜 성장을 한 건지 아니면 그냥 스펙이 쌓인 걸 성장이라고 착각하는 것인지 모르겠습니다
한 건 많다고 썼는데, 진짜 한 것이 많은 건지 아니면 그냥 스펙이 쌓인 걸 한 것이 많다고 착각하는 것인지 모르겠습니다.
하고 싶은 일과 미래에 대한 계획이 매일 바지 갈아입듯 자주 바뀝니다. 별로 좋은 일은 아닌 것 같은데 ㅋㅋ
미필인 만큼 군대 고민은 패시브처럼 박혀있습니다. 이건 어쩔 수 없고 ㅇㅇ..
그래도 예전에는 자칫하면 그냥 굶어 뒤지는 것 아닌가??? 생각까지 했는데 SCPC 따고 그런 생각은 많이 줄었습니다.
자기관리가 제가 생각해도 심각할 수준으로 안 되고 있는 것 같습니다. 식단 운동 체력 이런 거 다 저세상 보냄 ㅋㅋ