분류 전체보기 36

[2025 암호분석경진대회] A5-GMR-1 암호문 단독 공격(4번 문제) 회고

지난 2025 암호분석경진대회에 팀으로 참여하며 3번과 4번 문제를 담당했다. 3번 문제는 풀었지만, 4번 문제는 풀지 못했다. 문제 상황과 동일한 논문을 찾았음에도 실제 코드로 구현해 답을 도출해내진 못했다. 2026 암호분석경진대회가 어제 시작했지만, 가능성은 봤지만 실제로 답을 구하지 못한 게 영 마음에 걸려 그동안 틈날 때마다 풀이를 진행해왔다. 결과적으로 Codex를 통해 풀이를 마무리 지었으며, 이 과정에서 습득한 배경지식과 풀이 과정, 부족한 점을 기록해보려 한다.문제A5-GMR-1 스트림 암호로 암호화된 390바이트 길이의 암호문의 마스터 키를 구하고, 평문을 복원한다. 단, 암호문에는 2개의 오류 비트가 포함되어 있다. A5-GMR-1은 GMR-1(GEO-Mobile Radio Inter..

컴퓨터/암호학 2026.04.02

[프로그래머스] Lv.4 올바른 괄호의 갯수

프로그래머스 [올바른 괄호의 갯수] 문제는 Lv.4 문제로, 34%의 낮은 정답률의 문제다.문제는 괄호 쌍의 갯수 n이 주어졌을 때, 이를 가지고 만들 수 있는 올바른 괄호 배열의 갯수를 반환할 것을 요구한다.초기 접근처음에는n이 주어졌을 때 가능한 모든 괄호 문자열을 생성하는 함수괄호 문자열이 주어졌을 때 올바른지 판단하는 함수이 두 함수를 만들어, 모든 괄호 문자열을 생성하고 생성한 것이 올바를 때만 카운트를 하는 방식을 떠올렸다. "괄호 문자열이 주어졌을 때 올바른지 판단하는 함수"가 더 단순할 것 같아, 우선 이 함수를 먼저 구현했다.// 괄호 문자열(p_str)을 인자로 받아 유효한 경우에만 true를 반환한다.bool is_correct_p_str(const char *p_str) { i..

[프로그래머스] 수열과 구간 쿼리 2

문제정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.풀이#include #include #include int execute_query(int arr[], int query[]) { int ret = -1; int s = query[0], e = query[1], k = query[2]; for (int i = s; i k &&..

[C/C++] Header-only Library란?

OpenSSL과 같은 일반적인 라이브러리는 미리 컴파일된 바이너리 코드와 이를 사용하는 방법이 담긴 헤더 파일로 구성된다. 따라서 프로젝트에서 라이브러리를 사용하기 위해선 바이너리 파일을 링크해야하고 헤더를 include해야 한다. Header-only library는 이름에서도 알 수 있듯 바이너리 코드 없이 헤더를 include 하는 것만으로 사용 가능한 라이브러리이다. 대표적인 header-only library는 http 통신을 위한 httplib.h, JSON 파일 형식을 위한 json.hpp이 있다.작동 원리C/C++에서 헤더 파일은 #include라는 전처리 지시자를 통해 처리된다. 예를 들어 mylib.h라는 헤더가 있고, 이를 include하는 mylib.cpp이 있다고 하자. mylib..

컴퓨터/C, C++ 2026.02.01

[OpenSSL] 기초 및 SHA256 예제

OpenSSL은 프로젝트 이름이고, 내부적으로 크게 libcrypto, libssl로 두 가지가 있다.libcrypto AES, RSA, SHA, ECC, HKDF, RAND 등 네트워크(TLS)와 관련 없는 순수 암호 라이브러리이다.libssl TLS/SSL 프로토콜 구현을 위한 HTTPS, TLS handshake, 인증서 검증 등 네트워크 보안을 위해 사용하는 부분으로, 내부적으로 libcrypto를 사용한다.용어 정리Algorithms(알고리즘). SHA256이나 AES와 같은 암호학적 기본요소를 일컫는 용어다. 각 알고리즘 여러 구현을 가질 수 있다.알고리즘에 대한 서로 다른 구현은 서로 다른 provider에 속한다. Provider. provider는 알고리즘에 대한 구현들을 구현 방식에 ..

컴퓨터/암호학 2026.01.16

[DeFi] 임시 손실(Impermanent Loss, IL) 발생 원리 예시로 이해하기

예를 들어 현재 1 ETH = 100 USDT에 거래되고 있고, 한 LP가 빈 유동성 풀에 비율을 맞춰서 10 ETH와 1,000 USDT를 예치했다고 하자. 이 경우 x = 10, y = 1,000, x * y = k = 10,000이고, 1 ETH의 USDT 가격은 y / x = 1,000 / 10 = 100으로 100 USDT이다. 이때 외부 가격이 1 ETH = 200 USDT로 변했다고 하자. 현재 풀 내에서는 1 ETH = 100 USDT로 거래되고 있으므로 아비트라저는 1 ETH = 200 USDT가 될 때까지 풀에서 ETH를 구매해(USDT를 ETH로 스왑) 외부에 팔 것이다. 이때 1 ETH = 200 USDT가 될 때까지 아비트라저가 구매하는 ETH의 양을 z라고 하자. 그렇다면 이때의..

컴퓨터 2026.01.06

[IPFS] Kubo 설치 및 IPNS Publishing

이번 포스팅에선 IPNS의 구현체인 Kubo 설치부터 간단한 명령어 사용법과, IPNS를 통해 고정된 ID로 파일을 수정해보는 과정을 다룬다.Basic CLI operations with KuboKubo는 가장 오래된 Go언어 기반 IPFS 구현체이다. Kubo는 CLI(Command Line Interface)를 지원한다.Install KuboKubo는 Homebrew를 통해 간편하게 설치할 수 있다.brew install ipfs 설치 후 버전을 출력하여 정상 설치를 확인한다.ipfs --version> ipfs version 0.39.0 Kubo를 설치한 다음, 최초 1회 초기화를 수행해야 한다.ipfs init> generating ED25519 keypair...done> peer identit..

컴퓨터 2026.01.04

[IPFS] 파일 업로드와 Pinning (Pinata 사용)

IPFS란?InterPlanetary File System(IPFS)는 분산 파일 시스템에 데이터를 저장하고 공유하기 위한 프로토콜, 하이퍼미디어, 파일 공유 P2P 네트워크이다. IPFS는 콘텐트 어드레싱을 사용하여 IPFS 호스트에 연결하는 전역 이름공간의 개별 파일을 고유하게 식별한다.4Pin a file with IPFS Overview Pinning이란 특정 데이터가 IPFS를 통해 불러와질 수 있도록 하는 것이다. 다시 말해, IPFS 네트워크에 특정 파일을 업로드한 뒤 불러올 수 있도록 하는 것이다. Pinning services 결국 어떠한 컴퓨터의 전력, 디스크 공간, 네트워크를 소모하는 작업이기 때문에 누군가의 서비스를 받아야한다. 이러한 서비스들을 Pinning service라고 한다..

컴퓨터 2026.01.03