본문 바로가기

전체 글114

[Cryptography] PKCS 이번 포스팅에서는 PKCS에 대해 간단히 알아보려고 한다. PKCS는 Public Key Cryptography Standards의 약자로 풀이하면 공개 키 암호 표준(?) 정도가 되는 것 같다. PKCS는 일종의 그룹으로 특허가 있는 암호화 기술을 보다 활성화하기 위한 표준을 발표한다. 그런데 그룹에서 발표하는 표준이 일반적인 기업 표준 즉, 전세계적으로 통용되는 표준이 아니기 때문에 최근에는 IETF, PKIX와 같은 그룹에서 프로세스를 만들어서 관리한다. (기존 표준 또한 RFC와 같이 옮겨져서 관리된다. ) 지금까지 PKCS에서 발표한 표준은 다음과 같다. (wikipedia 참조) VersionNameCommentsPKCS #12.2RSA Cryptography StandardSee RFC 80.. 2019. 2. 24.
[Cryptography] Salt 왠 소금을 알아보나 하겠지만 여기서 Salt는 암호학에서 말하는 양념장같은 값이다. 그럼 지금부터 살펴보려고 한다. 한 마디로 Salt는 랜덤 데이터로 Hash와 같은 단일 방향 (one-way) 함수에서 사용하는 추가적인 입력값이다.이 랜덤 데이터는 일반적으로 비밀번호를 관리할 때 사용하는데, 이전에는 시스템에 비밀번호를 Plain Text 형태로 저장했다면 지금은 각 사용자의 비밀번호마다 Salt의 랜덤데이터를 포함하여 Hashing 값을 저장한다. (저장하는 방식은 다양하다.) 간단한 예시를 확인해보자.UsernamePassworduser1password123user2password123 위의 테이블은 각 사용자의 이름과 비밀번호가 담겨있다. 물론 그대로 사용해도 되지만 보안상 굉장히 취약하기에 사.. 2019. 2. 23.
[Netflix] Distributed In-memory Datastore 이번 포스팅에서는 Netflix에서 공개한 클라우드 환경에서의 분산형 데이트스토어인 EVCache에 대해 알아보려고 한다. 원문은 해당 페이지를 참조하면 된다.(https://medium.com/netflix-techblog/announcing-evcache-distributed-in-memory-datastore-for-cloud-c26a698c27f7) EVCache는 Netflix에서 개발한 인-메모리 데이터스토어이다. Github에 공개되어 있는 소스 코드를 보면 좀 더 확실히 알 수 있겠지만 기본 문서를 읽어보면 기본 바탕은 memcached로 이루어져 있다. 이를 기본으로 클라우드 환경에서 적절히 사용 할 수 있는 인-메모리 데이터 스토어를 확장한 것이다.(https://github.com/N.. 2019. 2. 23.
MCC (Multiversion Concurrency Control) 이번 포스팅에서는 MVCC라는 단어에 대한 개념을 정리해보려고 한다.MCC는 Multiversion Concurrency Control로 MVCC라고도 한다. 단어에서도 어림짐작 할 수 있듯이 여러 버전을 동시에 제어하는 것이다. 예시에 보았듯이, MCC 또는 MVCC는 DBMS에서 동시에 들어오는 요청을 제어 할 수 있도록 사용하는 일반적인 방식이다. 사실 동시 제어를 가장 간단하게 하는 방법은 쓰기 작업이 끝날때까지 대기하고 이후 읽는 것인데 이 방법은 사용자를 오랫동안 기다리게 할 수 있다.때문에 MCC는 각 요청 마다 동일한 데이터지만 버전이 다른 스냅샷(해당 시점의 데이터)를 가진 뒤, 스냅샷의 데이터가 수정되면 또 다른 버전을 만들고 이전 버전은 주기적으로 삭제*한다. 때문에 읽고 있는 스냅샷.. 2019. 2. 19.
LZW Compression 이번 포스팅에서는 LZW 압축 알고리즘에 대해 알아보려고 한다. LZW 알고리즘은 Lempel-Ziv-Welch(사람 이름)*의 약자로 무손실 압축 알고리즘이다.* Lempel-Ziv가 만든 LZ78 알고리즘을 개선한 것이다.이 LZW 압축 알고리즘은 단순해서 GIF, TIFF와 같은 파일에 주로 사용되지만 Unix에서 단순 파일을 압축하는 용도로도 많이 사용된다. 그럼 본격적으로 LZW에 대해 살펴보기 전에 간단한 핵심 아이디어를 살펴보면 데이터 공간을 절약하기 위해 패턴을 만들어서 재사용한다. 사실 압축 알고리즘이 패턴을 사용하는 것은 일반적이긴 한데 어떻게 패턴을 만들어서 사용하는지 아래에서 더 자세히 살펴보도록 하자. 일반적으로 ASCII 코드는 각 문자를 8비트로 나타낸다. 때문에 최대 표현할 .. 2019. 2. 18.
[AWS] Kinesis Data Streams - Usage 이번 포스팅에서는 Kinesis 데이터 스트림이 어떻게 쓰이는지 실제 아키텍처 및 사례를 확인해 보려고 한다. 그림 1. Overview of Medical Device Use-Case – Real-Time Analytics 그림 1을 확인해보면 Kinesis에서 제공하는 여러 기능을 확인 할 수 있다. 이 중에서 4번을 면밀히 살펴보면 Kinesis 데이터 스트림이 적용된 것을 확인 할 수 있다. (여기서 공급자는 Kinesis Analytics이고 소비자는 Lambda이다.)간단한 Flow를 살펴보면 Analytics에서 파악한 Anomaly 점수를 데이터 스트림으로 보내고 비즈니스 로직을 처리하는 Lambda에서 점수를 바탕으로 경보를 발생하기 위해 SNS에게 데이터를 전달하는 구조이다. 즉, Io.. 2019. 2. 16.