분류 전체보기
블록체인 암호학 - 전자 서명 2
공인인증서 전자 서명을 검증하는 데 필요한 공개키에다 소유자 정보를 추가한 증명서이다. CA(Certificate Authority, 인증기관)와 사용자 간 인증서 체결을 통해 사용자 공개키를 인증한다. 사용자는 검증키와 서명키 쌍을 보유한다. CA는 사용자 정보를 확인하고, 검증키와 사용자 정보에 서명해 인증서를 생성한 후 사용자에게 전달한다. CA에서 받은 인증키로 검증키를 인증하고, 서명을 확인한다. 사용자는 개인 서명키를 이용해 데이터나 자금을 거래할 수 있다. 서명 압축(Signature Aggregation) 블록체인에서 서명이 차지하는 비중은 크다. 효율성을 위해서 서명 크기를 줄여야 하는데, 이를 구현한 것이 서명 압축이다. 다수의 서명을 하나로 압축하는데, 개수에 상관 없이 일정한 크기로..
블록체인 암호학- 전자서명
전자서명 전자서명은 서명자가 전자문서에 서명했다는 사실을 확인할 수 있는 정보이다. 키 생성 알고리즘, 서명 알고리즘, 검증 알고리즘으로 구성된다. 키 생성 알고리즘 전자서명을 생성하는 서명키와 서명을 확인하는 검증키를 생성한다. 서명키와 검증키는 개인 별로 다르게 만들어진다. 서명키는 서명하는 본인만 아는 비밀정보이다. 검증키는 모든 이가 아는 공개된 정보이다. 서명키로부터 검증키를 도출할 수는 있지만, 검증키로부터 서명키를 계산할 수는 없다. 서명 알고리즘 문서를 받아 서명키를 사용해 서명값을 계산한다. 문서의 크기가 크다면 알고리즘 내부에서 해시 함수를 사용해 크기를 줄인다. 서명자만이 알고 있는 서명키를 사용해 전자서명을 만든다. 검증 알고리즘 문서와 서명값을 입력으로 받고, 검증키를 사용해 서명..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 8 (6,7,8,9,10)
6. [프로그램 8-23]의 find_min 함수는 배열의 최솟값만 반환하므로 최솟값이 배열의 어느 원소에 해당하는지는 알 수 없다. 배열 원소의 첨자를 반환하는 함수 index를 정의해 이 최솟값이 배열의 어느 원소에 해당하는지 나타내도록 [프로그램 8-23]을 수정하시오. [프로그램 8-23] #include #define SIZE 5 // 함수의 원형 선언 int find_min(int arr[]); void print_arr(int arr[]); // main 함수의 정의 int main() { int f[SIZE] = {3, 0, -30, -20, -1}; // 배열을 선언과 동시에 초기화하기 int min; // 최솟값 구하기 min = find_min(f); // 배열 내용 출력하기 prin..
술어와 한정기호
술어 "x는 3보다 크다."라는 문장을 보자. 이 문장은 두 부분으로 구성된다. 문장의 주어에 해당하는 "x", 그리고 술어(predicate)에 해당하는 "3보다 크다"가 있다. 문장 "x는 3보다 크다"라는 문장은 $P(x)$라고 표시할 수 있다. $P$는 술어를 , $x$는 변수를 나타낸다. $P(x)$는 명제함수(propositional function) $P$에서 $x$의 값이라고도 한다. 명제함수는 정의역(domain)에서 변수에 값이 할당되면 $P(x)$는 명제가 되고 진리값, 즉 참과 거짓을 판단할 수 있게 된다. 예) $P(x)$가 $x>3$일 때, $P(4)$의 진리값은 참이 된다. n개의 변수를 포함하는 명제함수는 $P(x_1, x_2, ..., x_n)$으로 표시하고, $P$를 n-..
블록체인 암호학 - 작업 증명(PoW), 양자 안정성, 머클 해시 트리
작업 증명(Proof of Work) 합의 알고리즘 많은 분산 시스템에서는 합의 알고리즘을 통해 일을 처리한다. 합의란 다수의 참여자가 적절한 합의 방법을 이용해 통일된 의사결정을 내리기 위해 사용하는 알고리즘을 말한다. 상태 기계 복제(SMR, State machine Replication) 상태 기계가 같은 상태로 시작하면, 처리가 정상적으로 이루어졌을 경우 모두 같은 상태를 가지게 된다. SMR같은 시스템은 일부가 고장나거나 악의적인 행동을 보여도 전체 시스템은 정상적으로 동작한다고 보장해야 한다. CFT(Crash Fault Tolerant) 서버가 단순히 고장난 형태에 대응할 수 있는 알고리즘이다. BFT(Bizantine fault Tolerant) 서버가 악의적인 행동을 보일 때 대응할 수 ..
<C프로그래밍-새내기를 위한 첫 C 언어 책>연습문제 chapter 8 (1,2,3,4,5)
1. 배열에 저장된 값 중 사용자가 입력한 값이 몇 개 들어 있는지 표시하려고 한다. 이 프로그램에서 밑줄 친 곳에는 무언가가 생략되어 있거나 에러가 난다. 잘못된 이유와 어떻게 수정해야 하는지 적으시오. #include #define N 30 void print_title(); void main() { int result[N] = { ... }; int count, i, target; scanf("%d", &target); print_title; count = frequency(result[N], target); return 0; } void print_title() { ... } int frequency(int arr[N], value) { ... } void main() : 함수 내에서 0을 반환하..
(C언어) 백준 2798. 블랙잭
문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때, ..
명제의 동치(equivalent)
항진명제, 모순, 불확정명제 항진명제(tautology): 항상 참인 명제 모순(contradiction): 항상 거짓인 명제 불확정명제(contingency): 항진명제도 아니고 모순도 아닌 명제 예) $p$ $\neg q$ $p \lor\neg q$ $p \land \neg q$ $T$ $F$ $T$ $F$ $F$ $T$ $T$ $F$ $p \lor\neg q$는 항상 참이므로 항진명제이고, $p \land \neg q$는 항상 거짓이므로 모순이다. 논리적 동치 두 명제 $p$, $q$에 대하여 $p \leftrightarrow q$가 항진명제이면 $p$와 $q$는 논리적 동치이며, $p \equiv q$는 $p$와 $q$가 논리적 동치(logically equvalent)임을 나타낸다. 조건-논리합..