본문 바로가기

분류 전체보기

(75)
Newbie Cryptography Cheatsheet (작업 중) $$ \newcommand{\Mod}[1]{\ (\mathrm{mod}\ #1)} $$ Intro CTF 도중에 꺼내서 보고 싶은 내용들이 적혀있는 치트시트가 있었으면 좋겠다고 생각했는데, 크립토를 접었음에도 쓰면서 공부하면 괜찮을 것 같아서 매우 바쁜 와중에도 짬짬히 적고 있다. 내 생각엔 그냥 rkm0959 블로그를 열심히 베끼고 있는 것 같다 ㅋㅋ(본인이시라면 뒤로 가기를 눌러 주세요). 이 내용을 실제 공부용이나 CTF용으로 사용하는 것을 강력히 추천하지 않는다. RSA Introduction 크기가 비슷한 큰 소수 $p, q$가 있을 때, $N=pq$라 하자. 이때 공개된 $e$에 대해 $ed \equiv 1 \Mod{\phi(N)}$인 $d$가 존재하도록 하면 오일러 정리에 의거하여 $C \e..
UTCTF - Writeups I participated in UTCTF as a team Hyp3rFlow and achieved 18th place. Usually, I felt like I was always get along with hard-working team members, but this time - I think I solved enough, so I'm going to post a write-up of problems that I solved. Please understand that grammar can be awkward because it's my first time writing in English. 이번 UTCTF에 팀 Hyp3rFlow로 참가해서 18등을 했습니다. 일반적으로는 팀원들이 잘 해 주어서 좀..
지옥에서 돌아온 참깨라면 레시피 1. 물 500ml 정량보다 조금 더(약 50ml) 맞춘다(짠 걸 싫어하면 50ml를 더 추가한다). 분말스프 전부와 소고기 다시다 한 티스푼 가득 넣고 끓인다. 다시다를 안 넣어도 맛에 큰 차이가 없긴 하다만 넣는게 더 낫다. 넣지 않는다면 물 500ml 정량을 넣는다. 2. 물이 완전히 끓으면 면을 넣고 정확히 2분 10초 끓인다. (꼬들한 걸 좋아하면 10초정도 덜 끓인다.) 3. 면을 그릇에 덜고, 불을 끈다. 그리고 계란 하나와 계란 블럭을 넣는다(계란 블럭은 면 끓을 때 미리 넣어도 무방하다). 다시 불을 켜고 2분 10초 끓인다. 이때 계란은 풀면 안 되고, 계란 블럭은 푼다. 반숙이 좋거나 싫으면 그만큼 시간을 조절한다. (반숙 기준 2분 10초, 완숙 기준 2분 50초 넘게 끓여야 한다...
정보올림피아드 / 알고리즘 과외 안 구합니다. 알고리즘 과외 안 합니다 현재 고려대학교 컴퓨터학과 재학 중인 김준겸입니다. 알고리즘 사이트에서는 ryute라는 닉네임을 사용 중입니다. 약 8년 정도의 알고리즘 문제 해결 경력이 있습니다. 알고리즘, 그 중에서도 특히 정보올림피아드 분야 과외를 하고자 합니다. Zoom과 Visual Studio Live를 통한 화상 과외를 주로 받습니다. 모든 세부사항은 상담을 통해 조정이 가능하니, 부담 갖지 마시고 연락 주시길 바랍니다. 코딩 테스트 수준의 과외는 별도의 특이사항이 없는 한 당분간 받지 않으려고 합니다. 연락을 많이 주시는데 받지 못해 죄송합니다. 새로 이메일 주시면 과외 다시 진행하게 될 때 먼저 연락드리겠습니다. 당분간 과외를 받지 않습니다. 어떤 일이 있어도 과외를 해야겠다 싶은 경우에만 연락..
[Crypto] 해시 함수와 취약점 (Basic) Intro 이 글에서는 비교적 간단한 해시 함수에 대해서 다루고, Crypto 분야 CTF를 기준으로 할 때 이러한 해시 함수에서 나타날 수 있는 초보적인 취약점에 대해 서술한다. 구체적으로, 이 글에서는 MD5와 SHA 계열 해시에 대해서 다룬다. What is Hash? 해시 함수는 임의의 입력을 받아, 이를 고정된 크기의 출력으로 매핑하는 함수이다. 해시 함수는 일반적으로 같은 입력에 대해서 항상 같은 출력을 내기 때문에 두 데이터가 같은지를 빠르게 비교하거나 데이터를 저장하여 검색하기 위해 색인할 때 유용하게 활용할 수 있다. 그러나 해시 함수의 값이 같다고 해서 실제 데이터가 같다고 간주할 수는 없다. 이는 비둘기집의 원리 때문으로, 입력의 크기는 무한하지만 출력의 크기는 유한하기 때문에 동일한..
[*CTF Writeup] Crypto - MyEnc 문제 설명 from Crypto.Util.number import getPrime,bytes_to_long import time,urandom from flag import flag iv=bytes_to_long(urandom(256)) assert len(flag)==15 keystream=bin(int(flag.encode('hex'),16))[2:].rjust(8*len(flag),'0') p=getPrime(1024) q=getPrime(1024) n=p*q print "n:",n cnt=0 while True: try: print 'give me a number:' m=int(raw_input()) except: break ct=iv for i in r..
[*CTF Writeup] Crypto - GuessKey2 문제 설명 from random import randint import os from flag import flag N=64 key=randint(0,2**N) # print key key=bin(key)[2:].rjust(N,'0') count=0 while True: p=0 q=0 new_key='' zeros=[0] for j in range(len(key)): if key[j]=='0': zeros.append(j) p=zeros[randint(0,len(zeros))-1] q=zeros[randint(0,len(zeros))-1] try: mask=int(raw_input("mask:")) except: exit(0) mask=bin(mask)[2:] ..
[Crypto] 디피 헬만 (Diffie-Hellman) 알고리즘과 취약점 Intro 디피 헬만(Diffie-Hellman) 키 교환은 이산 로그(Discrete Log) 문제의 어려움에 기반한 키 교환 방식이다. 이 글에서는 디피 헬만 키 교환의 동작 원리와, 그리고 동작 과정에서 잘못 구현될 수 있는 부분들의 후보를 간략하게 나열함으로서 디피 헬만 알고리즘의 취약점을 공격하려는 초보 크립토그래퍼에게 도움을 주려고 한다. 작동 과정과 원리 디피 헬만 키 교환은 공개된 통신 위에서, 두 사람이 다른 사람은 알지 못하고 둘만이 아는 공유된 정보(Shared Secret)을 갖도록 하는 방법이다. 이 알고리즘을 이해하기 위해서는 간단한 대수적 지식이 필요하다. 기본적으로 덧셈과 곱셈이 정의되었을 때 모듈러 $n$에 대한 수의 집합 $0, 1, 2, \dots , n-1$은 환(Ri..