일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 키분배 알고리즘
- 파이썬
- 컴퓨터 보안 키분배
- 프라미스
- brew 권한
- 자바스크립트 비동기
- 협업필터링
- 인페인팅
- 러스트
- 커널제거
- 비동기 프로그래밍
- computer vision
- feynman's restaurant
- 딥러닝
- Readme image
- 머신러닝
- react-cookie
- 인공지능
- 파인만의 식당문제
- pagerank
- Git
- 페이지랭크
- tcp
- 커널생성
- rust
- cs231n
- image restoration
- Hits
- 메세지인증코드
- recommender
- Today
- Total
목록Computer science (14)
Worth spreading
이 글은 Medium에 개시된 글입니다. Medium에서 보시면 좀 더 유쾌한 환경에서 글을 보실 수 있습니다. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 Toilet problem 동시성 프로그래밍의 가장 큰 숙제는 ‘공유자원 관리’일 것이다. 공유자원을 안전하게 관리하기 위해서는 상호배제(Mutual exclusion)를 달성하는 기법이 필요하다. 뮤텍스와 세마포어는 이를 위해 고안된 기법으로 서로 다른 방식으로 상호배제를 달성한다. 오늘은 이 둘의 차이를 알아보자. Mutex 뮤텍스는 화장실이 하나 뿐이 없는 식당과 비슷하다. 화장실을 가기 위해서는 카운터에서 열쇠를 받아 가야 한다. 당신이 화장실을 가려고 하는데 카운터에 키가 있으면 화장실에 사람이 없다는 뜻이고 당신은 그 열쇠를 ..
* Medium에 게시한 글입니다. Medium에서 읽으시면 좀 더 좋은 환경에서 보실 수 있습니다. [암호학] Key 관리 및 분배(여담: 이것도 블록체인으로 하면 좋겠다)“어떻게 키를 분배할 것인가?”암호학에서 ‘키분배’는 매우 중요한 사안이다. Key는 말 그대로 Key다. 우리집 Key를 잃어버리면 우리집이 위험해지는 것처럼 비밀키나 대칭키의 Key도 잘못 다룰 경우 자신의 정보/자산이 위험해질 수 있다.😱또한 대칭키는 상대방과 같은 Key 값을 갖고 있다는 것을 신뢰할 수 있어야 하는데 이 신뢰를 쌓는 것 또한 쉽지 않다.그래서 여러 똑똑한 분들이 Key 관리&분배에 관한 이론들을 연구하고 널리 퍼뜨려 주셨다.공개키 분배법부터 알아보장대표적인 공개키 분배법 4가지1. Public announce..
* Medium에 게시한 글입니다. Medium에서 읽으시면 좀 더 좋은 환경에서 보실 수 있습니다. [암호학]전자서명(Digital Signature): 어떻게 해? 이전 글에서 말했듯이 MAC은 아주 괜찮은 녀석이지만 전자서명 기능을 제공할 수 없다… 송수신자가 같은 Key를 공유하기 때문이다.그래서 전자서명 기법이 따로 개발됐다. 송신자를 유일하게 식별할 수 있어야 하므로 공개키 기법을 사용한다.전자서명은 다음과 같은 기능들을 제공해야 한다메세지 내용 인증메세지 작성자, 작성한날짜 인증분쟁이 생겼을 경우 삼자에 의한 인증그렇다면 본격적으로 살펴보자전자서명의 requirements현재 서명을 하는 메세지부터 생성돼야 한다.송신자를 유일하게 식별할 수 있는 값을 이용해서 생성해야 한다. (부인방지!)전..
* Medium에 게시한 글입니다. Medium에서 읽으시면 좀 더 좋은 환경에서 보실 수 있습니다. Message Authentication CodeMAC은 메세지가 외부에 노출돼도 상관없을 때 사용할 수 있는 인증(authentication) 기법이다. 무조건은 아니지만 MAC 자체는 기밀성을 제공하지 않기 때문에 그렇다고 말한다. MAC을 쓰는 이유는 메세지인증만 필요한경우 대칭키/공개키 같은 암호화 알고리즘보다 빠르기 때문이다🏃♀️MAC은 간단히 말해 메세지의 내용을 인증할 수 있는 어떤 값이다. 이 MAC을 메세지에 덧붙여서 전송함으로 현재 메세지가 진짜임을 인증하는 것이다.M: 메세지C: MACK: 송신자, 수신자가 공유하는 Key🗝송신자 A는 수신자 B에게 메세지 M을 보내려고 한다. 이 ..
Window는 모르겠다... MAC에서 traceroute 명령어를 사용해서 destination까지 어떤 경로(라우터)를 거치는지 알 수 있다 예제에서는 브라운대학교 cs 홈페이지를 들어갔다 $ traceroute -w 1 www.cs.brown.edu 결과는 다음과 같다 하나의 숫자가 하나의 hop이라고 보면 된다. 13쯤에 보면 산호세를 거쳐 14에 뉴욕으로가고 가고가고 가다가 20에서 브라운 대학교에 도착한다20hop이 걸린 셈이다.* * *로 표시된 것은 아마 라우터가 공개되지 않도록 돼있는듯하다
int 범위 : 1~ 2^31 - 1 (2,147,483,647) long long int 범위 : 1 ~ 2^63 - 1 (9,223,372,036,854,775,807) * 정수가 10억을 넘는다는 느낌이 든다면 int? long? 고민하지 말고 long long int를 쓰라* long long int 형은 정수 뒤에 LL을 붙여서 명시를 해줘야한다. (num = 10LL)* 서식문자는 lld, unsigned형일 경우 llu를 사용
바쁜 대기를 이용한 상호배제 1. 인터럽트 끄기(Disabling interrupts)가장 간단한 방법이지만 그다지 유쾌한 방법은 아니다. 각 프로세스가 임계구역에 진입하자마자 인터럽트를 끄고 임계구역에서 나가기 직전에 인터럽트를 켜도록 하는 방식이다. CPU는 오직 클록이나 다른 인터럽트의 결과로 프로세스간에 문맥을 교환하므로 인터럽트를 끄면 CPU는 다른 프로세스로 문맥을 교환하지 않는다. 따라서 프로세스가 인터럽트를 끄면 다른 프로세스가 끼어들 걱정 없이 공유 메모리를 검사하고 변경할 수 있다. 이 방법이 유쾌하지 않은 이유는 우선 사용자 프로세스에게 인터럽트를 끌 수 있는 권한을 주는 것은 현명하지 못하기 때문이다. 만약 프로세스 중 하나가 인터럽트를 끄고 다시 켜지 않는다면 어떻게 될지 생각해 ..
Conditions required to avoid race condition1. Mutual Exclusion - No two processes may be simultaneously inside their critical regions. 2. No assumptions may be made about speeds or the number of CPUs.3. Progress - No process running outside its critical region may block other processes.4. Bounded Waiting - No process should have to forever to enter its critical region. 1. 상호배제 - 두 개의 프로세스가 동시에 임..
TCP 는 Rwnd를 이용한 flow control을 제공한다. 그런데 이것에는 한가지 결함이 있다. 수신자는 데이터를 수신했을 때 보내는 ACK 신호의 data segment에 rwnd 값을 담아서 송신자에게 보낸다. Rcv window가 꽉 차서 수신자가 rwnd를 0으로 표기해서 보내면 송신자는 rwnd에 여유가 생겼다는 신호를 받을 때까지 데이터를 전송하지 않는다. 그런데 만약 수신자가 더이상 보낼 ACK가 없다면 송신자와 수신자는 모두 하염없이 기다리는 상황이 된다.이러한 문제를 방지하기 위해 송신자는 rwnd = 0 라는 신호를 받게 되면 rwnd가 0이 아닌 값이라는 ACK를 받을 때까지 1byte의 데이터를 수신자에게 계속 보낸다.
code : Event : ACK received, with ACK field value of y if (y > SendBase) { SendBase = y If (there are currently any not yet acknowledged segments) Start timer } else { /*a duplicate ACK for already ACKed segment */ increment number of duplicate ACKs received for y if (number of duplicate ACKs received for y == 3) /* TCP fast retransmit */ resend segment with sequence number y } break; - 송신자가 수신자..