1. 문제 설명 2. 문제 풀이 1. challenge.py 분석 challenge.py 코드를 살펴 보면, 초기 벡터(IV)와 키가 동일하며, CBC 모드를 사용하고 있음을 알 수 있다. 만약에 0으로 채워진 한 블록을 CBC 모드로 암호화한다면, $E_{K}(P+IV) = E_{K}(0+K) = E_{K}(K)$ 따라서 $E_{K}(K)$를 구할 수 있게 된다. 그리고 총 두 개의 블록을 복호화한다고 가정하면, CBC 모드의 마지막 암호문 블록을 복호화하는 과정은 아래와 같다. $P_{2} = D_{K}(C_{2}) + C_{1}$ 이때 $C_{1}$을 0으로, $C_{2}$를 $E_{K}(K)$라고 한다면, $P_{2} = K$가 된다. 2. 복호화 코드 작성 from pwn import * fro..
1. 문제 설명 2. 문제 풀이 1. 먼저 문제 파일의 압축을 푼다. 2. rot128.py의 코드를 확인한다. encfile이 어떻게 암호화됐는지 살펴보기 위해 rot128.py 코드를 확인해야 한다. 코드에 hex_list라는 게 먼저 나오는데, 이게 어떤 것인지 살펴봤다. 0부터 1씩 증가하는 hex 리스트인 것을 볼 수 있다. plain_list는 평문이 hex로 파싱된 list이다. 그리고 저 flag.png가 우리가 복호화해야 할 평문의 원본이다. 아래 코드에서 암호문이 카이사르 암호라는 걸 알 수 있다. 카이사르 암호는 간단한 치환암호 중 하나다. 평문의 각 단위를 일정한 거리만큼 밀어서 다른 문자로 치환하는 방식이다. 왜 카이사르 암호냐면, hex로 파싱된 평문을 순회하면서 hex_list..
1. 구름 IDE로 리눅스 개발 환경 구성 1-1. 구름 IDE 서비스 회원가입 및 로그인 구름 IDE에 접속해 먼저 회원가입 및 로그인을 진행했다. 1-2. 컨테이너 생성 컨테이너 생성을 위해 기본 템플릿 및 C/C++을 스택으로 설정했다. 추가 도구 항목에서는 VSC를 체크했다. 위의 설정대로 컨테이너를 생성했으며, 잘 실행하는 것을 확인할 수 있었다. 2. Sizeof 연산 코드 작성 2-1. 소스 코드 작성 char, short, float 등 다양한 자료형의 사이즈를 출력하는 코드를 작성했다. 이때 '%zu'는 sizeof 연산의 출력을 위한 형식 문자이다. 2-2. 실행 결과 3. 오버플로 예제를 언더플로로 변경 3-1. 소스 코드 작성 는 정수형 자료형의 유효 범위를 확인할 수 있는 헤더다...
1. 문제 설명 위의 pdf 파일에서 아래 3가지 정보를 찾아내면 된다. 고객 이름 거래 장소 거래 금액 2. 문제 풀이 2-1. 고객 이름 HEX 에디터에서 font를 검색해보면 정상적인 폰트 이름이 아닌, 고객 이름이 나타나는 것을 볼 수 있다. 'mycustomernameisNoliardaski'에서 고객 이름이 Noliardaski임을 확인할 수 있다. 2-2. 거래 장소 스크롤을 계속 내리다보면 (Line 670) 마지막 부분쯤에 자바스크립트 코드가 한 줄 등장한다. 앞에 있는 'x\x9c'는 hex로 '78 9c'인데, 이것으로 app.alert에 쓰인 데이터가 zlib 파일이라는 것을 알 수 있다. (포렌식에서 앞 hex는 문서의 종류를 밝히는 데에 항상 중요하다고 한다.) 위의 출처에 표기..
1. 문제 설명 2. 문제 풀이 1. 접속 정보를 확인하여 타겟 Host와 포트 번호를 알아낸다. 2. 리눅스의 netcat (nc) 툴을 사용하여 tcp 연결을 시도한다. netcat host3.dreamhack.games 23229 3. DH{...} 형식의 플래그 응답을 확인하고 정답을 입력한다.
1. 키 분배 문제 대칭키 암호 사용 시 생기는 문제, 키는 도청 가능하므로 안전하게 배송해야 함 1-1. 키의 사전 공유 비밀 경로를 통해 임의 키를 선택해 전달 n명의 사용자가 있을 때 각 사용자는 n-1개, TA는 $\frac{n(n-1)}{2}$가지 키를 관리해야 함 1-2. 키배포 센터 (온라인 키 분배) 키배포센터(KDC)에서 암호 통신이 필요해질 때마다 키를 공유 n명의 사용자가 있을 때 n개의 키를 저장하고, 세션 키를 암호화하여 전달함 1-3. Diffie-Hellman 키 교환 최초의 비밀키 교환 프로토콜 (= 키 합의 프로토콜) KDC 없이 통신 주체가 대칭 세션키를 생성함 절차 p, g는 공개됨 A는 $R_{1} = g^x mod\,p$를, B는 $R_{2} = g^y mod\,p$..
2023.07.25 - [컴퓨터 보안] - 2. 암호학 개요 2. 암호학 개요 2023.07.24 - [컴퓨터 보안] - 1. 정보보호관리 개념 1. 정보보호관리 개념 1. 정보화 사회 1-1. 정보사회 자동화된 지휘통제시스템과 사이버 전쟁 개념 등장 스마트폰의 보급으로 모바일 환경에서의 bsj54.tistory.com 1. 현대 대칭키 암호 1-1. 현대 블록 암호 확산과 혼돈을 만족시키기 위해 전치 요소와 치환 요소를 결합해 블록 암호를 설계함 P-박스 (전치 요소) 단순, 확장, 축소 P-박스로 나뉨 단순 P-박스는 역함수가 존재하나 축소와 확장은 존재 X S-박스 (치환 요소) 역함수가 존재할 수도, 존재하지 않을 수도 있음 역함수가 존재하려면 입력과 출력 비트 수가 동일해야 함 합성 암호 (Pr..
2023.07.24 - [컴퓨터 보안] - 1. 정보보호관리 개념 1. 정보보호관리 개념 1. 정보화 사회 1-1. 정보사회 자동화된 지휘통제시스템과 사이버 전쟁 개념 등장 스마트폰의 보급으로 모바일 환경에서의 정보보호가 중요해짐 1-2. 정보보호 (Information Security) 정보보호는 정보 bsj54.tistory.com 1. 암호학 기본 개념 (Cryptology) 암호기술과 암호해독을 연구하는 학문 암호기술 (Cryptography): 암호화와 복호화 암호해독 (Cryptanalysis): 제3자가 암호문을 해독하는 방법론 1-1. 암호화와 복호화 암호기술을 통해 기밀성 유지 가능 암호화: $C = E_{K}(P)$ 복호화: $P = D_{K}(C)$ 1-2. 알고리즘과 키 변경 가능한..