Computer Science

    SSH란?

    SSH란?

    우리가 서버를 원격으로 접속해서 사용하기 위해서 SSH 명령어를 많이 쓴다. 하지만 이에 대해서 제대로 된 이해 없이 명령어만 썼기 때문에 이번 기회에 SSH에 대해 좀 더 알아보고자 글을 쓰게 되었다. SSH란? SSH는 Secure Shell의 줄임말로 안전하지 않는 네트워크 환경에서 보안 인증이나 파일 전송등에 쓰이는 Software Package이다. 이러한 SSH는 SSH 프로토콜을 기반으로 통신을 하게 된다. SSH protocol이란? 먼저 SSH 프로토콜 스택 구조를 살펴보자 전송계층을 보면 SSH 또한 전송계층으로 TCP를 사용하는 것을 알 수 있다.(어떻게 보면 당연한 말이다) 응용계층에 대한 설명은 아래와 같다. SSH 전송 프로토콜 서버의 인증, 기밀성, 무결성, 압축을 제공하는 계..

    LockFreeHashing

    LockFreeHashing

    Fine-grained Lock의 문제 멀티 쓰레드 상황에서 Hash에 consistency를 유지하고 싶다면 hash의 key에 lock을 걸어서 사용하는게 일반적인 방식일 것이다. 우리는 Hash를 사용하는 이유는 시간복잡도가 매우 낮기 때문일 것이다. 하지만 hash key 1개당 가지고 있는 데이터 수가 늘어나게 되면 이러한 시간복잡도로 인한 장점은 무색해진다. 따라서 Bucket 크기를 늘려야하는 시점이 오게 된다. Fine-grained Lock을 사용하는 상황에서 bucket을 증가시킨다고 하면 어떤 식으로 증가시켜야할까? 다음 그림을 보자 이 상황에서 우리가 bucket의 크기를 늘리게 된다면 늘어난 bucket에 대해 lock을 할당해야할 것이다. 하지만 lock의 갯수를 늘리는게 맞는 ..

    LockFreeList

    LockFreeList

    1. Locking Mechanism의 문제 우리가 멀티쓰레드 상황에서 쓰레드간 공유자원에 대하여 consistency를 위해 Locking Mechanism을 사용하곤 한다. 이러한 Lock의 경우 다음과 긑은 문제를 야기하게 된다. DeadLock : 당연하다. Priority Inversion : OS의 스케줄링에 따르면 우선순위가 낮은 프로세스가 먼저 Lock을 획득하게 되어 우선순위가 역전되는 현상이 발생한다. Convoying : Locking을 획득하고 이를 해제하기 까지 가장 속도가 느리게 걸리는 프로세스에 의해 다른 프로세스들의 속도 또한 지연되는 현상을 의미한다. Async-signal unsafety : function이 signal handler에서도 안전하게 호출될 수 있는 것을 ..

    [CUDA] GPU에서 코드 돌리기

    [CUDA] GPU에서 코드 돌리기

    병렬 프로그래밍의 종류 : SIMD vs SPMD SIMD(Single Instruction Multiple Data), SPMD(Single Program Multiple Data)에서 알 수 있듯이 여러 데이터를 가지고 병렬로 수행하는 단위가 Instruction이냐 Data이냐 라는 차이가 존재한다. 우리가 Instruction이라는 말에서도 알 수 있듯이 SIMD는 쓰레드별 동기화가 반드시 필요하게 되고 이러한 동기화는 하드웨어의 지원으로 이뤄지게 된다. SPMD는 반면에 동기화에 대해 SIMD보다 느슨하게 이뤄지는 게 특징이다. GPU는 이 중에 SPMD에 해당하는 Machine이다. GPU의 여러 쓰레드는 같은 code를 실행하지만 다른 데이터를 가지고 code를 실행한다. GPU의 용어 1...

    [보안] 암호(2) RC4

    [보안] 암호(2) RC4

    https://me-analyzingdata.tistory.com/entry/%EB%B3%B4%EC%95%88-%EC%95%94%ED%98%B81-Perfect-Secret%EA%B3%BC-OTP [보안] 암호(1) Perfect Secret과 OTP 암호학 분야에서 우리가 암호 알고리즘을 이야기 하기에 앞써 어떤 암호화 방식이 완벽한 비밀 유지가 가능한지를 이야기 해야한다. 따라서 이번 글에서는 Perfect Secret이란 무엇인지, OTP가 무엇 me-analyzingdata.tistory.com 앞썬 글에서 우리는 Perfect Secret과 OTP에 대해서 이야기 했고 이들이 구현하기에 매우 힘든 암호 알고리즘이라는 것을 알았다. 이를 보다 현실적으로 구현한 암호화 알고리즘인 RC4를 이야기해보..

    [보안] 암호(1) Perfect Secret과 OTP

    [보안] 암호(1) Perfect Secret과 OTP

    암호학 분야에서 우리가 암호 알고리즘을 이야기 하기에 앞써 어떤 암호화 방식이 완벽한 비밀 유지가 가능한지를 이야기 해야한다. 따라서 이번 글에서는 Perfect Secret이란 무엇인지, OTP가 무엇인지 알아보려고 한다. Threat Model 우리가 암호를 만들어서 통신을 할 때 이를 공격하는 유형은 크게 4가지로 나뉜다. 1. Cipher-text only attack 공격자가 가지고 있는 정보는 암호 뿐이고 이를 바탕으로 Brute force attack으로 공격하는 방식을 의미한다. 2. Know-plaintext attack 공격자가 무작위의 plaintext에 대해서 이에 대한 ciphertext를 가지고 있고 이를 바탕으로 pattern을 유추하거나 brute-force로 공격을 하는 것..

    [보안] 디피-헬먼 키 교환 1편

    [보안] 디피-헬먼 키 교환 1편

    Introduction 우리가 통신을 할 때 패킷은 누가 보지않게 암호화 시켜야한다. 이러한 암호화 방식을 위해 key라는 것이 존재하고 이러한 key를 이용해서 암복호화등을 진행하게 된다. 여기서 내가 예전부터 궁금해했던 부분은 키는 어떻게 암호화해서 교환하는 걸까? 라는 질문이다. 이러한 키교환에 사용되는 유명한 키 교환 알고리즘인 디피-헬먼의 키 교환에 대해서 오늘 글을 써보려고 한다. Background 디피-헬먼 알고리즘을 이해하기 위해서는 수학적인 배경지식이 필요하다. > Euler's totient function Φ(n) : n보다 작은 수 중에 n과 서로소인 숫자의 갯수 p가 만약 소수라고 한다면 Φ(p) = p - 1이다. > Euler's Theorem n이 소수이고 a와 n가 서로소..

    Relational Model

    Relational Model

    목차 Relation이란 Table표 Key Relational Integrity Constraints Relation이란 집합이 $$ \{ D_1, D_2, ... , D_n \} $$ 으로 정의 되어있을 때 부분집합들로 정의 될 수 있는 모든 서로소 관계에 있는 집합들이다. Table표현 tuple의 순서는 상관 없다 하지만 이들이 중복되서는 안된다. Attribute 또한 중복되서는 안된다. row와 column이 교차하는 지점에는 값이 1개만 존재해야한다. 물론 NULL값도 허용된다. Key Key의 종류 Super Key : tuple을 구분할 수 있는 모든 Attirbute의 조합 Key : Super Key에서 유일성에 기여하는 Attribute를 제외한 Attribute들 Simple Ke..