암호학에서 salt는 단방향 해시 함수에 추가 입력되는 "임의의 데이터"다. Salt는 일종의 nonce(Number used just Once)로 사전계산된 rainbow table 공격을 막기 위해서 사용한다. 각각의 패스워드 마다 랜덤한 salt가 만들어지며,해시 함수에 전달되서 처리되고 그 결과는 salt와 함께 데이터베이스에 저장된다.패스워드는 단방향으로 해시 되서 저장한다. 해시는 원문으로의 복원이 불가능 하기 때문에, 해시 결과를 비교하는 방법을 사용한다. 사람이 만드는 패스워드는 유추가능한 단어의 조합으로 만드는 경우가 많은데, 해커들은 사람의 이러한 인지적 특성을 이용해서 조합가능한 문자열의 테이블을 만들어서 공격을 한다. 이 테이블을 rainbow table이라고 한다. 일종의 사전공격이라고 볼 수 있을 것이다.
빅데이터 쪽은 드문드문 했다. AWS를 기반으로 개발활동을 하고 있으니, AWS 환경에서 빅데이터를 제대로 시작해보기로 한다. 하여 문서들을 정주행하기로 했다. 이 문서는 스터디노트 정도로 보면 되겠다. 가장 기본이 되는 빅 데이터 개요 문서 부터 시작한다. 빅 데이터 개요는 4개의 모듈로 구성된다. 1. 빅 데이터 개요 2. 데이터베이스 아키텍처 3. Hadoop 및 MapReduce 4. Hive 및 Pig 5. AWS 및 빅 데이터
"AWS Big Data Technology Fundamentals - 모듈 2마법의 은탄환은 없다. 빅 데이터가 모든 문제를 해결해주지 못한다. 현장에서는 (간단한 서비스라고 하더라도) 3개 이상의 데이터베이스 모델을 섞어서 사용한다. 빅 데이터를 제대로 활용하기 위해서는 다양한 데이터베이스들의 특징들을 알고 있어야 한다.RDBMS(Relational Database Management System, RDBMS)는 IBM의 에드거 F, 커드가 도입한 관계형 모델을 기반으로 하는 데이터베이스 관리 시스템이다. 빅 데이터시대가 되면서 RDBMS와 다른 데이터베이스 관리 시스템들이 늘어나고 있기는 하지만, 여전히 인터넷 서비스에서의 핵심적인 데이터베이스 모델로 사용하고 있다.
아파치 하둡(Hadoop)은 대량의 데이터를 용이하게 처리하기 위해서 분산 컴퓨터 네트워크 기술을 사용하는 오픈 소스 소프트웨어 유틸리티들의 모음이다. 수천개의 노드에서 실행 할 수 있으며, 테라바이트 혹은 페타바이트 단위의 데이터를 저장하고 처리 할 수 있다. 아파치 하둡의 핵심은 HDFS로 알려진 분산 파일 저장소와 분산 프로그래밍 모델인 MapReduce로 구성된다. 하둡은 파일을 블록으로 분할해서 클러스터의 노드에 분산하고, 코드를 노드로 전송해서 병렬로 데이터를 처리한다.
API 서버의 경우, stateless하게 개발을 한다. Stateless는 서버로의 모든 요청과 응답이 다른 요청 혹은 응답과 독립적으로 이루어지는 것을 의미한다. 서버는 상태를 저장할 필요가 없으므로 요청처리부가 단순해지고, 요청을 자유롭게 분산할 수 있다. 각 요청이 독립적으로 실행이된다면, 클라이언트와 서버간의 요청&처리 프로세스는 함수의 실행으로 추상화 할 수 있을 것이다. 실제 REST API에서 제공하는 API는 독립적인 핸들러로 만들어지는 경우가 많고, 이 핸들러는 길어도 수백라인 내외의 단일 함수나 마찬가지이다.
16 POSTS HERE
Salt
암호학에서 salt는 단방향 해시 함수에 추가 입력되는 "임의의 데이터"다. Salt는 일종의 nonce(Number used just Once)로 사전계산된 rainbow table 공격을 막기 위해서 사용한다. 각각의 패스워드 마다 랜덤한 salt가 만들어지며,해시 함수에 전달되서 처리되고 그 결과는 salt와 함께 데이터베이스에 저장된다.패스워드는 단방향으로 해시 되서 저장한다. 해시는 원문으로의 복원이 불가능 하기 때문에, 해시 결과를 비교하는 방법을 사용한다. 사람이 만드는 패스워드는 유추가능한 단어의 조합으로 만드는 경우가 많은데, 해커들은 사람의 이러한 인지적 특성을 이용해서 조합가능한 문자열의 테이블을 만들어서 공격을 한다. 이 테이블을 rainbow table이라고 한다. 일종의 사전공격이라고 볼 수 있을 것이다.
AWS BigData
학습노트다. AWS를 사용하니, AWS 기반의 빅데이터 서비스들을 배워서 사용할 생각이다. 1. 1. 1.
빅 데이터 개요
빅데이터 쪽은 드문드문 했다. AWS를 기반으로 개발활동을 하고 있으니, AWS 환경에서 빅데이터를 제대로 시작해보기로 한다. 하여 문서들을 정주행하기로 했다. 이 문서는 스터디노트 정도로 보면 되겠다. 가장 기본이 되는 빅 데이터 개요 문서 부터 시작한다. 빅 데이터 개요는 4개의 모듈로 구성된다. 1. 빅 데이터 개요 2. 데이터베이스 아키텍처 3. Hadoop 및 MapReduce 4. Hive 및 Pig 5. AWS 및 빅 데이터
데이터베이스 아키텍처
"AWS Big Data Technology Fundamentals - 모듈 2마법의 은탄환은 없다. 빅 데이터가 모든 문제를 해결해주지 못한다. 현장에서는 (간단한 서비스라고 하더라도) 3개 이상의 데이터베이스 모델을 섞어서 사용한다. 빅 데이터를 제대로 활용하기 위해서는 다양한 데이터베이스들의 특징들을 알고 있어야 한다.RDBMS(Relational Database Management System, RDBMS)는 IBM의 에드거 F, 커드가 도입한 관계형 모델을 기반으로 하는 데이터베이스 관리 시스템이다. 빅 데이터시대가 되면서 RDBMS와 다른 데이터베이스 관리 시스템들이 늘어나고 있기는 하지만, 여전히 인터넷 서비스에서의 핵심적인 데이터베이스 모델로 사용하고 있다.
Hadoop 및 MapReduce
아파치 하둡(Hadoop)은 대량의 데이터를 용이하게 처리하기 위해서 분산 컴퓨터 네트워크 기술을 사용하는 오픈 소스 소프트웨어 유틸리티들의 모음이다. 수천개의 노드에서 실행 할 수 있으며, 테라바이트 혹은 페타바이트 단위의 데이터를 저장하고 처리 할 수 있다. 아파치 하둡의 핵심은 HDFS로 알려진 분산 파일 저장소와 분산 프로그래밍 모델인 MapReduce로 구성된다. 하둡은 파일을 블록으로 분할해서 클러스터의 노드에 분산하고, 코드를 노드로 전송해서 병렬로 데이터를 처리한다.
AWS Lambda
API 서버의 경우, stateless하게 개발을 한다. Stateless는 서버로의 모든 요청과 응답이 다른 요청 혹은 응답과 독립적으로 이루어지는 것을 의미한다. 서버는 상태를 저장할 필요가 없으므로 요청처리부가 단순해지고, 요청을 자유롭게 분산할 수 있다. 각 요청이 독립적으로 실행이된다면, 클라이언트와 서버간의 요청&처리 프로세스는 함수의 실행으로 추상화 할 수 있을 것이다. 실제 REST API에서 제공하는 API는 독립적인 핸들러로 만들어지는 경우가 많고, 이 핸들러는 길어도 수백라인 내외의 단일 함수나 마찬가지이다.