[์ปดํ“จํ„ฐ ๋ณด์•ˆ] ํƒ€์›๊ณก์„  DSA ๋””์ง€ํ„ธ ์„œ๋ช… ์„ค๋ช… ๋ฐ ๊ตฌํ˜„์ฝ”๋“œ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Computer Security 2020. 7. 4. 14:54

ํƒ€์›๊ณก์„  DSA ๋””์ง€ํ„ธ ์„œ๋ช… ์ž๋ฃŒ์กฐ์‚ฌ DSA๋ž€? ๋””์ง€ํ„ธ ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜(Digital Signature Algorithm, DSA)์€ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์œ„ํ•œ ํ‘œ์ค€์ด๋‹ค. NIST๊ฐ€ 1991๋…„ 8์›” DSS๋ผ๋Š” ๋ฏธ๊ตญ ์ „์ž์„œ๋ช… ํ‘œ์ค€์—์„œ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ถ€์šฉ ์ „์ž์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐœํ‘œํ–ˆ์œผ๋ฉฐ, ํ˜„์žฌ๋Š” DSA์™€ ํ•จ๊ป˜ ECDSA, RSA๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๋””์ง€ํ„ธ ์„œ๋ช… ์ธ์ฆ ๋ฐฉ์‹ ์ „์ž์„œ๋ช…(๋””์ง€ํ„ธ ์„œ๋ช…)์€ ๋ฌด๊ฒฐ์„ฑ, ์ธ์ฆ, ๋ถ€์ธ๋ฐฉ์ง€๋ฅผ ๋งŒ์กฑํ•ด์•ผํ•œ๋‹ค. ์ „์ž์„œ๋ช…์—๋Š” ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์“ฐ์ด๋ฉฐ ํฌ๊ฒŒ 3๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค. ํ•ฉ์„ฑ์ˆ˜์˜ ์†Œ์ธ์ˆ˜๋ถ„ํ•ด๋ฌธ์ œ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๋ฐ์— ๊ธฐ์ดˆํ•œ RSAํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ•œ์ฒด์˜ ์ด์‚ฐ๋Œ€์ˆ˜ ๋ฌธ์ œ๊ฐ€ ์–ด๋ ต๋‹ค๋Š” ๋ฐ์— ๊ธฐ์ดˆํ•œ ElGamalํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํƒ€์›๊ณก์„ ์„ ์ด์šฉํ•œ EC-DSA, EC-KCDSA DSA๋Š” ์ด ์ค‘ E..

[c++] CAS ๊ตฌํ˜„ ๋ฐ ABA ๋ฌธ์ œ ํ•ด๊ฒฐ :: mutex(spin lock)์™€์˜ ๋น„๊ต
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 2. 19:52

Mutex์™€์˜ ๋น„๊ต ์ฝ”๋“œ #include #include #include #include #include #include using namespace std; class Node { public: int value; Node* next; Node() : value(0) { next = NULL; } Node(int k_value) { next = NULL; value = k_value; } }; int node_n; //random ๊ตฌํ˜„ random_device rd; mt19937 gen(rd()); uniform_int_distribution dis(0, 10); //์ถœ๋ ฅ์„ ์œ„ํ•œ mutex mutex mut; class LFStack { private: Node * head; public: void ..

[c++] CAS ๊ตฌํ˜„ ๋ฐ ABA ๋ฌธ์ œ ํ•ด๊ฒฐ :: ABA ํ•ด๊ฒฐ_3. Counter ๊ตฌํ˜„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Operating System 2020. 7. 2. 19:43

๋ชฉ์ฐจ ๋ฌธ์ œ ์ •์˜ lock free ๊ตฌํ˜„ ABA ํ•ด๊ฒฐ intํ˜• ๊ตฌํ˜„(+ Hazard pointer) Counter ๊ทธ ์™ธ์˜ ๋ฐฉ๋ฒ•๋“ค mutex lock(spin lock)๊ณผ์˜ ๋น„๊ต Counter #include #include #include #include #include #include using namespace std; class Node { public: int value; Node* next; Node() : value(0) { next = NULL; } Node(int k_value) { next = NULL; value = k_value; } }; int node_n; //random ๊ตฌํ˜„ random_device rd; mt19937 gen(rd()); uniform_int_distribut..

[c++] CAS ๊ตฌํ˜„ ๋ฐ ABA ๋ฌธ์ œ ํ•ด๊ฒฐ :: ABA ํ•ด๊ฒฐ_2. hazard pointer
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Operating System 2020. 7. 2. 19:41

๋ชฉ์ฐจ ๋ฌธ์ œ ์ •์˜ lock free ๊ตฌํ˜„ ABA ํ•ด๊ฒฐ intํ˜• ๊ตฌํ˜„(+ Hazard pointer) Counter ๊ทธ ์™ธ์˜ ๋ฐฉ๋ฒ•๋“ค mutex lock(spin lock)๊ณผ์˜ ๋น„๊ต Hazard Pointer https://m.blog.naver.com/PostView.nhn?blogId=jjoommnn&logNo=130127286459&proxyReferer=https:%2F%2Fwww.google.com%2F ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•˜์˜€๋‹ค. ๋ฌธ์ œ์  ๋จผ์ € delete๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๋ฉด, ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋˜ ์Šค๋ ˆ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๊ณ  ๊ฐ์ฒด๊ฐ€ ์‚ญ์ œ๋œ ์ฃผ์†Œ์— ๋‹ค์‹œ ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ํ• ๋‹น๋˜์–ด ABA ๋ฌธ์ œ๊ฐ€ ์ผ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ์ƒˆ๋กœ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” list๊ฐ€ ์•„๋‹ˆ๋‹ค. 1๋ฒˆ ๋ฌธ์ œ๋ฅผ ..

[c++] CAS ๊ตฌํ˜„ ๋ฐ ABA ๋ฌธ์ œ ํ•ด๊ฒฐ :: ABA ํ•ด๊ฒฐ_1. intํ˜• ๊ตฌํ˜„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Operating System 2020. 7. 2. 19:37

๋ชฉ์ฐจ ๋ฌธ์ œ ์ •์˜ lock free ๊ตฌํ˜„ ABA ํ•ด๊ฒฐ intํ˜• ๊ตฌํ˜„(+ Hazard pointer) Counter ๊ทธ ์™ธ์˜ ๋ฐฉ๋ฒ•๋“ค mutex lock(spin lock)๊ณผ์˜ ๋น„๊ต ABA ํ•ด๊ฒฐ intํ˜• ๊ตฌํ˜„ ABA ๋ฌธ์ œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ intํ˜•์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ์ ์€ ์กด์žฌํ•œ๋‹ค(๋’ท๋ถ€๋ถ„์— ์–ธ๊ธ‰). ์ฝ”๋“œ #define _CRT_SECURE_NO_WARNINGS #define NULL_INT -1 // NULL ๊ฐ’ #include #include #include #include #include // #include #include using namespace std; struct Node { int data; Node* next_node; }; int node_n; atomic free_l..

[c++] CAS ๊ตฌํ˜„ ๋ฐ ABA ๋ฌธ์ œ ํ•ด๊ฒฐ :: ๋ฌธ์ œ ์ •์˜, ๊ธฐ๋ณธ CAS ๊ตฌํ˜„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Operating System 2020. 7. 2. 19:27

๋ชฉ์ฐจ ๋ฌธ์ œ ์ •์˜ lock free ๊ตฌํ˜„ ABA ํ•ด๊ฒฐ intํ˜• ๊ตฌํ˜„(+ Hazard pointer) Counter ๊ทธ ์™ธ์˜ ๋ฐฉ๋ฒ•๋“ค mutex lock(spin lock)๊ณผ์˜ ๋น„๊ต ๋ฌธ์ œ ์ •์˜ ๋ฌธ์ œ Linked List ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ push()์™€ pop() ์—ฐ์‚ฐ์„ ๊ตฌํ˜„ํ•œ๋‹ค. Linked List๋Š” FreeList์™€ HeadList ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ List๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ push, pop ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ๋“ค์ด ๊ฐ๊ฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” List๋“ค์— ๋Œ€ํ•œ ์ƒํ˜ธ๋ฐฐ์ œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ•ด์„ ์ƒํ˜ธ ๋ฐฐ์ œ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. lock ๋ณ€์ˆ˜์˜ ์กฐ๊ฑด์„ ์ฒดํฌํ•˜๋ฉฐ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๊ณ  ์žˆ๋Š” spin lock๊ณผ, lock ๋ณ€์ˆ˜ ์—†์ด ๊ณ„์† ์‹œ๋„ํ•˜๋ฉด์„œ ์ ์ ˆํ•œ ๋•Œ์— ๋™์ž‘์„ ์ˆ˜ํ–‰..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต 1๊ถŒ :: ์‚ผ๊ฐํ˜• ์œ„์˜ ์ตœ๋Œ€ ๊ฒฝ๋กœ (๋ฌธ์ œ ID: TRIANGLEPATH, ๋‚œ์ด๋„ : ํ•˜)
Algorithm ๋ฌธ์ œ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ์ „๋žต 2020. 4. 7. 13:12

https://www.algospot.com/judge/problem/read/TRIANGLEPATH ๋ฌธ์ œ 6 1 2 3 7 4 9 4 1 7 2 7 5 9 4 ์œ„ ํ˜•ํƒœ์™€ ๊ฐ™์ด ์‚ผ๊ฐํ˜• ๋ชจ์–‘์œผ๋กœ ๋ฐฐ์น˜๋œ ์ž์—ฐ์ˆ˜๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งจ ์œ„์˜ ์ˆซ์ž์—์„œ ์‹œ์ž‘ํ•ด, ํ•œ ๋ฒˆ์— ํ•œ ์นธ์”ฉ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€ ๋งจ ์•„๋ž˜ ์ค„๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋Š” ์•„๋ž˜ ์ค„๋กœ ๋‚ด๋ ค๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋ฐ”๋กœ ์•„๋ž˜ ์ˆซ์ž, ํ˜น์€ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ์ˆซ์ž๋กœ ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ ๋ชจ๋“  ๊ฒฝ๋กœ ์ค‘ ํฌํ•จ๋œ ์ˆซ์ž์˜ ์ตœ๋Œ€ ํ•ฉ์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ์ž…๋ ฅ ์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ C(C > C; while (C--) { cin >> n; int index = 0; for (int i = 0; i ..

[python] ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ ๊ตฌํ˜„ํ•˜๊ธฐ (segment tree) - ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 15. 22:39

์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ https://www.acmicpc.net/blog/view/9 ๋ฐฑ์ค€๋‹˜ ๊ธ€ ๋ฐฐ์—ด ํฌ๊ธฐ ๊ฒฐ์ • ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ C++์˜ ๊ฒฝ์šฐ, vector ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ python์œผ๋กœ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜์–ด์•ผ ํ• ์ง€ ๊ฐ€๋Š ํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•ด๋ณด์ž. 2์˜ ์ œ๊ณฑ ์ˆ˜๊ฐ€ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ์ˆ˜(n)๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด ( ๋ถ„์„ํ•ด์•ผํ•  data ๊ฐฏ์ˆ˜๊ฐ€ 2์˜ ์ œ๊ณฑ ์ˆ˜๋ผ๋ฉด ) ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค 1/2์”ฉ ์ค„์–ด๋‚˜๊ฐ€๋ฏ€๋กœ log(n)์ด ํ•„์š”ํ•œ ์ด ๋‹จ๊ณ„(ํ™”์‚ดํ‘œ)๊ฐ€ ๋˜๊ณ  ์ „์ฒด ์ธต์˜ ๊ฐฏ์ˆ˜, ์ฆ‰ ๋†’์ด(h)๋Š” log(n)+1์ด ๋œ๋‹ค. ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋ถ€ํ„ฐ 2^(0)๊ฐœ์˜ ๋…ธ๋“œ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์ธต์ด ์ฆ๊ฐ€ํ•  ์ˆ˜๋ก 2์˜ ์ง€์ˆ˜ ๋˜ํ•œ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฝ‰์ฐฌ ์ด์ค‘ ํŠธ๋ฆฌ(full binary tree)์˜ ์ด ๋…ธ๋“œ ..