Showing posts with label 매드프로젝트 강좌. Show all posts
Showing posts with label 매드프로젝트 강좌. Show all posts

Wednesday, April 29, 2015

[매드프로젝트 강좌] KALMAN Filter - 03. 평균, 편차, 분산, 표준편차 그리고 공분산


이번에는 칼만필터를 이해하기 위한 선행학습들 중 하나인

평균, 편차, 분산, 표준편차 그리고 공분산에 대해서 학습해 보도록 하자.



평균(mean) 이란 기준이 되는 중간값으로 전체를 다 더해서 더한 개수만큼 다시 나눠주면 평균이 된다. 평균을 하는 이유는 누가 더 잘했고 못했는지를 기준을 통해 알기 위해 중간값으로 평균을 만들게 된다.




편차(deviation) 란 기본값에서 평균값을 뺀 값으로 편차가 클 수록 평균에서 멀리 떨어져 있음을 나타낸다. 따라서 편차들의 합은 0이 된다.




분산(variance) 이란 편차의 제곱을 기본값으로 나눈 것으로 편차 제곱값들의 평균이 분산이다. 분산은 평균에 얼마나 가깝게 밀집해 있느냐 떨어져 있느냐를 구분하는 것으로 분산이 크면 기본값들이 평균값에 멀리 떨어져 있는 것이고 분산이 작으면 기본값들이 평균값에 가까이 모여 있는 것이다.

이런 분산에 다른 수식이 있는데 위 식의 N 대신 n-1로 나누는 것을 말한다. 식으로 다시보면


위와 같이 쓰게 되는데 N으로 나누는 경우는 '모집단의 분산'일 경우에 사용하고 n-1로 나누는 경우는 '표본집단의 분산'일 경우에 사용한다.

그럼 여기서 모집단은 머고 표본집단은 무엇인지 확인하고 넘어가자.

예를들어 고등학생들의 영어성적을 알고 싶다고 했을 때,

전국 모든 고등학생들의 영어성적 데이터 - 모집단
을 가지고 추출하는 것이 힘들다. 그래서

몇몇 대표할만한 고등학생들의 성적 - 표본집단
을 바탕으로 정보를 추출해야한다.





이런 분산을 음이 아니게 하기 위해 제곱한 후 루트를 씌우게 되면 표준편차가 된다.
(절대 값이 아닌 제곱하는 이유는 미적분에서 계산하기 편해서라는 어딘가 인터넷 블로그 자료가 있었음)

표준편차(standard deviation)란 분산에서 제곱한 값을 루트를 통해 다시 원래의 단위로 맞춰주는 것인데 표준편차가 클수록 기본값들간의 차이가 크다는 것을 의미하고 평균 밖으로 많이 퍼져있다는 것을 의미한다.

위에 얘기한 평균, 분산, 표준편차를 정리해보면


요렇게 정리가 된다.

추가 공분산은 위에서 말한 분산과는 다른얘기 인데
어떤 두가지 변수(x와 y)가 변하는 정도를 수로 나타낸 것이다.

A가 변할 때 B가 변하는 정도, 두 변수가 동시에 변하는 정도 가 되겠다.



또는



한번더 간단히 정리하면 공분산은 편차곱을 합한개수만큼 나눈 '편차곱의 평균' 인 것이다.

후.. 거의 정리 된 것 같은데 정신 없다.

일단 필요할 때마다 다시 읽어보기로하고 원리는 여기서 끝!


다음 시간에는 가우스와 정규분포에 대해서 알아보자.

Friday, April 24, 2015

[매드프로젝트 강좌] KALMAN Filter - 02. 역사

칼만필터의 정의부터 알아보자.

칼만필터(Kalman filter)는 잡음이 포함되어 있는 선형 역학계의 상태를 추적하는 재귀 필터로 루돌프 칼만이 개발하였다.

먼가 어려운 말이 여러개 포함되어 있는데 하나하나 풀어보자.

먼저 <선형역학계>가 무엇인지 알아보자.

선형역학계(線形力學系)를 나눠보면 선형 + 역학 + 계 로 나눌 수 있는데 계는 일정한 분야나 부문으로 해석하여 넘어가고 선형 + 역학에 대해서 알아보자.

역학이란 물체의 운동에 관한 법칙을 연구하는 물리학의 한 분야로 힘의 평형을 다루는 정역학, 힘과 운동의 관계를 다루는 동역학, 운동만을 다루는 운동학이 있다.

선형이란 Linear라고 해서 직선처럼 똑바른 도형, 또는 그와 비슷한 성질을 갖는 대상이라는 뜻으로, 함수의 경우 어떠한 함수가 진행하는 모양이 '직선' 이라는 의미로 사용된다. 보통 1차식, 1차 함수 등을 선형이라고 한다.

간단히 정리하면 선형역학계는 '직선의 성질을 갖는 물체의 운동에 관한 법칙 분야' 정도로 해석하면 될 것 같다.

위키백과를 참조하여 식으로 보면


벡터x(시간에 따른 x의 변화량)와 행렬 A로 표현할 수 있으며

우리가 쉽게 이해할 수 있는 이산계로 보면


가 된다.

그 다음 <재귀 필터> 에 대해서 알아보자.

재귀 필터는 재귀 + 필터로 만들어졌는데 필터는 내가 원하는 부분(액체, 기체, 주파수 등)을 걸러내는 장치 정도로 해석하면 되고 재귀가 무슨 뜻인지 보면

수학이나 컴퓨터 과학 등에서 자신을 정의 할 때 자기 자신을 재참조하는 방법을 뜻한다.

<그림 참조 위키 백과 >

자 그럼. 칼만필터를 다시 쉬운말로 정의하면

칼만필터(kanlman filter)는 잡음(noise)이 포함되어 있는 직선의 성질을 갖는 물체의 운동에 관한 법칙 분야에서 자기 자신을 재참조하여 내가 원하는 부분을 걸러내는 필터

이다.

더 쉽게 말하면 시간에 따라 진행한 측정을 기반으로 잡음까지 포함한 데이터를 재참조 처리하여 현재상태에 대한 최적의 통계적 예측을 진행할 수 있다.


어려운 정의를 대략 이해했으니 역사를 정리해 보면

칼만필터는 루돌프 칼만이 개발했는데 칼만이 미 항공 우주센터를 방문 중에 아폴로 프로젝트의 궤도 추정 문제에 자신의 아이디어가 사용가능함을 알고 아폴로 항법 컴퓨터에 적용하도록 사용되었다. 이후 칼만필터는 많은 연구가 진행 되었는데 제어 이론 분야에서 '칼만 필터'는 가장 유용한 것으로 알려져 있으며 현재 라디오, 컴퓨터, 비콘, GPS, 네이게이션 등 많은 분야에서 다양하게 사용되고 있다.

이 얼마나 대단한 필터인가. 이 필터만 있으면 노이즈를 보정하고 미래에 대해서 예측이 가능해지기 때문이다. 다만 이 필터의 단점이 선형구조에서 효과가 좋다는 것인데 계속적인 연구를 통해 확장 칼만 필터, 무향 칼만필터 등 비선형에서도 좋은 효과를 나타내는 필터들을 볼 수 있다.

먼가 칼만필터가 정말 완전 슈퍼 최고 처럼 보이지 않는가?

다음 강좌는 이 칼만필터를 파해치기 위한 선행 학습으로 '평균과 표준편차'에 대해서 알아보도록 하자.

Thursday, April 23, 2015

[매드프로젝트 강좌] KALMAN Filter - 01. 시작


오랜만에 강좌를 시작해 보려고 한다. 이번에 시작할 강좌는 공대생이라면 한번쯤 들어봤을만한 <칼만필터> 이다.

우선 왜 필자가 칼만필터에 대해서 관심을 갖게 되었는지 끄적이자면 최근에 떠오르고 있는 비콘 기술을 찾다가 비콘이 사실은 사용자의 위치 파악을 위해서 나온 기술이 아니었는데 애플에서 iBeacon을 거리측정이 가능한 알고리즘을 넣어 제품화하면서 크게 이슈되었으며 이에 기반한 기술을 검색하다보니 또다시 칼만필터 라는 알고리즘에 봉착해 이번에는 제대로 칼만필터를 뽀개보자. 라고 생각하고 진행하고자 한다.

사실 기존에 만들어진 칼만필터 라이브러리를 가져다가 사용해도 되지만 엔지니어로써 궁금한건 파해쳐야 하기에 이참에 기본부터 제대로 다져볼려고 .... 콜럭 콜럭 하지만 초중고 때 공부를 너무 안한 관계로 굉장히 기나긴 여정이 될 것 같다. 어짜피 해야하는거 이번에 10강이 되던 100강이 되던 한번 최대한 쉽게 정리해 보려고 한다.

그럼 프롤로그는 여기까지 하고 칼만필터를 어떻게 정리해 볼 것 인지 일단 간략하게 목차를 잡아보자.

우선 기초조사를 했을 때 필요한 부분들을 정리해보면

선형 시스템, 비선형 시스템, 통계/확률의 이해, 평균, 표준편차, 분산, 공분산, 정규분포, 가우스, state space의 이해, Observer의 이해 등 (헉헉)

정도가 선행 학습으로 필요하다... (엄청난 선행학습 인것 같지만 이미 초중고때 다 배웠다는 ㅠ 필자는 기억안남)

여기서 잠깐 잡소리하자면 최근에 필자가 가장 관심 있어 하는 부분중에 하나가 바로 '예측' 시스템이다. 주식부터 인생까지 예측만 가능하다면 모든 부분에서 남들보다 이득을 볼 수 있는데 이 예측 가능한 기술중에 요즘 떠오르는 기계학습, 딥러닝, 인공지능 기술 등이 있지만 이번에 정리하는 '칼만필터'도 예측기술 중 하나이기에 제대로 파보려고 하는 것.

그럼 앞서 말했던 선행 학습부터 강좌를 진행해야 하는데 우선 순서는

1. 역사
2. 평균, 표준편차
3. 분산, 공분산
4. 가우스, 정규분포
5. 통계/확률
6. 선형시스템
7. 비선형시스템
8. state space 이해
9. observer 이해
.
.
.

요런식으로 진행할 예정이며 중간중간 진행하면서 분량 문제 또는 추가로 필요한 지식에 대해서 삽입, 수정 될 수 있음을 말한다.

그럼 다음 강좌부터 기나긴 여정을 시작해 보자.


Monday, December 29, 2014

[매드프로젝트 강좌] CORDIC - 02. 알고리즘-2

최종 알고리즘은 아래와 같다!!!!



회전모드(Rotation)
z를 현재 각도라고 하고 z를 0으로 만들면 
초기값 x = 0.607253, y = 0, z = θ  

i = 0 -> n 까지 
z > 0 이면 di = 1 그렇지 않으면 di = 0

xi+1 = xi - di*(2^-i)*yi
yi+1 = yi + di*(2^-i)*xi
zi+1 = zi - di*ai

결과 xn = cos(θ ), yn = sin(θ )
정확도 n bits

헉헉... 힘든 여정이였다. 이해가 잘되었는지 모르겠다. 위 공식에 의해서 최종 값 x는 cos이고 y는 sin이 되는 것이고 정확도는 가져간 n만큼 비트수가 되겠다.
(사실 필자도 아직 코딩 안해서 ... 맞는지는... 코딩하다 문제있으면 추후 수정)

벡터모드는 위 식을 반대로하면 되는데 증명은 안하고 식만 .. (히..힘드니까욤)

xn = 1/K(x^2 + y^2)^(1/2)
yn = 0
zn = z + tan^-1(y/x)

고맙게도 식과 함께 CORDIC 기본 모드부터 Linear, Hyperbolic을 한번에 정리해 놓은 것이 있어 그대로 붙여 넣는다.


아 정말 깔끔하다. 이거 만든분에게 정말 감사해야 할 듯.

이 CORDIC 알고리즘을 이용하여 계산할 수 있는 수식을 정리하면 아래와 같다.

직접적으로 계산가능한 것은
sin, cos, sinh, cosh
tan^-1, tanh^-1
Division
multiplication
tan^-1(y/x)
y + x*z
(x^2+y^2)1/2
(x^2-y^2)1/2
e^z = sinh(z) + cosh(z)

간접 계산으로 가능한 수식들도 있는데 나머진 위키북 자료를 참조하시기 바라며

최종 요약이다.

(귀찮아서 잘라 붙인게.... 맞습니다. ㅠ)

조금 먼가 수식들 때문에 복잡해 보인다면 같은거지만 추가로 위키북에서도 가져오면 




하드웨어 아키텍쳐도 위키북에서 가져와 추가해본다.
(3화로 하드웨어를 포스팅할려고 했으나 내용도 별로 없어서 그냥 붙여 넣음!!!)

- 하드웨어 재사용을 이용한 면적 최적화 아키텍쳐
그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC




- 파이프라인을 이용한 속도 최적화 아키텍쳐
그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC



이해할 수 있도록 자료를 잘 만들어 준 
Minnesota 대학의 Kia Bazargan 님에게 감사하며... 이 강좌를 마친다.

reference
2. EE 5324 – VLSI Design II, Part IX: CORDIC Algorithms, Kia Bazargan, University of Minnesota, spring 2006

Friday, December 26, 2014

[매드프로젝트 강좌] CORDIC - 02. 알고리즘-1

후.. 전 강좌에서는 CORDIC 내용보다 잡소리가 더 길었던 것 같은데 이번에는 제대로! 알고리즘을 파해쳐 보자.

CORDIC 알고리즘을 통해서 여러 어려운 연산들을 간단히 비트 쉬프트(bit shift), 가산, 감산, LUT(Look Up Table)을 통해서 처리할 수 있다.

CORDIC 알고리즘은 함수를 2차원 평면상의 벡터로 보고 반복되는 벡터 회전을 통하여 수렴한 해를 얻을 수 있는 반복 계산 해법이다. 이 알고리즘은 회전 모드와 벡터 모드의 두가지 모드가 존재한다.

회전 모드는 임의 벡터를 희망하는 가도까지 반복 회전시켜 목적 값에 수렴시키는 것이고
벡터 모드는 회전한 각도를 기록해 가면서 임의 벡터를 X축 까지 회전시키고 그 회전 각도와 원래의 벡터 크기를 해로 해서 얻는다.

좀 더 쉽게 설명하기 위해 그림과 수식을 첨부한다.

기본 아이디어는 아래와 같다.

그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC

2차원에서 시작을 (1,0) 으로 하고 각도를 θ (theta) 라고 하면 우리는 임의의 좌표 (cosθ, sinθ )를 얻을 수 있다.

그림참조 : http://en.wikibooks.org/wiki/Digital_Circuits/CORDIC

한단계 더 나아가서 시작점을 (1,y)로 두고 y = 0일대까지 회전하면 각도는 tan^-1(y) 가 된다.


이를 바탕으로 임의 (x,y)에서 다른 임의의 점 (x',y')를 나타내면

x' = x*cos(θ ) - y*sin(θ )
y' = y*cos(θ ) + x*sin(θ )

로 (x',y')를 나타낼 수 있고 (헉헉...) 삼각함수 공식인 sin(θ )/cos(θ ) = tan(θ ) 에 의해서 다시 식을 바꾸면

x' = cos(θ )*[x - y*tan(θ )]
y' = cos(θ )*[y + x*tan(θ )]

가 되는 것이다. (헉헉... 먼가 어려워 보이지만 우리가 중학교 때 배웠던 삼각함수 공식들이다 .. 난 이전에 멀 공부한거니ㅠ)

일단 핵심이 되는 첫번째 공식을 얻었고 두번째 원리를 찾아보자.

사실 두번째는 나도 이해가 안가서 자료 그대로 올린다.(ㅠ 눙물.. )


 cos(θ )
- Reduces the magnitude of the vector
- If dont' multiply -> pseudo rotation
tan(θ )
- Rotates the vector
- Break θ  into a series of successively shrinking angles ai such that tan(ai) = 2^-i

으악.. 해석 안된다. 하지만 이해는 했다. 수학이 좋은게 참 세계 공용어라는거!!!
핵심은 

tan(ai) = 2^-i  or ai = tan^-1(2^-1)

이거다!!

이걸 해석하면 아래와 같다.


i를 증가시켜서 ai 를 점차 감소시키면 어떤 각도(θ )도 만들어 낼 수 있다는 것이 바로 위의 공식이 되시겠다. 식으로 다시 정리하면 

θ = ±a0±a1±a2 ..... ±a9

정확도는 아래 식에 의해서 
ai ≤ SNj=i+1 (ai+1)

10^-5 deg accuracy 이다.

위 식을 통해 예를 들어 설명하면 아래와 같다.



θ  = 30.0도 라고 가정했을 때 
a0 = 45.0 ( > 30.0 ) 30도 보다 크므로 다음 음수
45.0 - 26.6  = 18.4 ( < 30.0 ) 30도 보다 작으므로 다음 양수
18.4 + 14.0  = 32.4 ( > 30.0 ) 30도 보다 크므로 다음 음수
32.4 - 7.1  = 25.3 ( < 30.0 ) 30도 보다 작으므로 다음 양수
.
.
.
θ  = 30는 
45.0 - 26.6 + 14.0 - 7.1 + 3.6 + 1.8 - 0.9 + 0.4 - 0.2 + 0.1 = 약30.1 로 계산이 된다. 

그럼 위에 나온 첫번째 식과 두번째 원리를 이용하여 정리하면 

두번째 원리에 의해 
θ  = ±a

이므로 첫번째 식은 

x' = cos(ai)*[x - y*di*tan(ai)]
y' = cos(ai)*[y + x*di*tan(ai)]
di = ±1

가 되고 위에서 뽑아낸 기본 원리에 의해 

tan(ai) = 2^-i 

식을 한번 더 정리하면

x' = cos(ai)*[x - y*di*2^-i]
y' = cos(ai)*[y + x*di*2^-i]
di = ±1

가 된다. 여기서 cos(ai)를 Ki로 치환 하면
(참고 cos(ai) = cos(-ai) )

식은 다음과 같다.

x' = Ki*[x - y*di*2^-i]
y' = Ki*[y + x*di*2^-i]
Ki = cos(ai) = cos( tan^-1(2^-1) )
di = ±1
오메 힘들다... 드뎌 뽑아낸 식이 다음과 같은데 아직 끝난게 아니다. cos이 들어가는 Ki가 남아 있지 않은가?!

Ki = cos(ai) = cos(-ai)

이므로 매번 i값이 변할 때마다 계속 곱한다는 것을 수식으로 나타내면 


n이 무한대로 갔을 때 K 값은 하나의 상수로 나타 낼 수 있게 된다.

아 힘들다... 거의 다 왔다.

위의 것을 정리하는 최종 알고리즘은..........

다음 포스팅에서 계속 설명한다.


Wednesday, December 24, 2014

[매드프로젝트 강좌] CORDIC - 01. 개념


오랜만에 조금은 전문적인 강좌를 해보고자 한다.
이유는 어쩌다보니 이 CORDIC에 관한 자료를 찾게되었는데 인터넷 블로그에 제대로 설명된 블로그가 개인적으로 검색(?) 했을 때 나오지 않는 것 같다.

홍익인간의 뜻으로 자료를 한글로 정리하고자 한다.
짧은 영어 실력과 나쁜 머리로 이해한 것이니 .. 혹시 틀린게 있더라도 널리 이해를 바란다.(리플 달아주시면 더욱더 감사드립니다.)

우선 CORDIC이 무엇인지 알아보자.

CORDIC란? COordinate Rotation DIgital Computer의 약어로 1959년 Volder에 의해 나온 알고리즘이다. 이 알고리즘을 이용하여 삼각 함수, 쌍곡선 함수, 승산, 나눗셈 등을 할 수 있다.

응? 삼각 함수, 쌍곡선 함수, 승산, 나눗셈 등은 이미 가능한데 이건 먼소리인가?

후.. 이걸 설명하려면 조금 더 거슬러야 하는데 최대한 간략히 설명해 보도록 하겠다.

우리가 이미 사용하고 있는 컴퓨터 언어는 굉장히 상위레벨의 언어들이다. JAVA, C/C++, C# 등 이 되겠는데 여기서 사용하는 언어에서는 +, -, *, /, %, sin함수, cos함수, tan함수, root 등을 사용하여 단순하게 기입한다.

그러나 실제로 이렇게 사용한 것들을 컴파일러를 통해 컴퓨터언어로 바꾸게 되고 최종적으로 CPU 또는 MCU 등에서 처리 할 때는 하드웨어로 처리하게 되는 것이다.

그래 .. 내가 멀 코딩하던 그게 최종 처리하는건 하드웨어인걸 알겠어 그래서?

문제는 하드웨어에서는 우리가 표현할 수 있는 한계가 바로 0과 1 이라는 것이다. 이것만을 가지고 덧셈, 뺄셈, 곱셈 정도는 그럭저럭 할 수 있지만 나눗셈, 삼각함수 등으로 넘어가게 되면 엄청나게 복잡해지고 느려지게 된다. 거기다가 소숫점이라니... 하드웨어로 소수점을 표현하기 위해서 고정소수점과 부동소수점이 있는데 부동소수점 같은 경우에도 엄청나게 복잡한 하드웨어가 필요하기 때문에 느려지고 커지게 된다. (이를 특화 시킨게 DSP 임)

자 .. 그럼 이거랑 CORDIC랑 어떤 연관이냐 하는 것인데 이전 암호화 강좌에서 한번 언급했듯 인류가 발전하게된 가장 큰 원인은 바로 '전쟁'에서 나오는 것인데 CORDIC 또한 군사용으로 사용하게 되었다. 바로 대표적인게 군용 레이더 이다. 속도를 빠르게 하기 위해서는 위의 문제로 인해 가능하면 하드웨어로 처리하는 것이 좋다. 따라서 적보다 빠르게 레이더로 발견하기 위해 삼각함수나 나눗셈 같은 연산들을 하드웨어로 처리하려고 보니 너무너무 복잡하고 느리고 크기가 커지게 되는데 여기서 이 CORDIC 연산을 사용하게 되는 것이다.

아마 처음에는 LOGIC 게이트인 74 시리즈 칩들만을 이용하여 CORIDC 연산기를 설계하지 않았나 싶은데 지금은 주로 FPGA, ASIC을 위한 알고리즘으로 많이 사용하고 있으며 Pipeline 설계에도 적합하다.

들리는 말로는 이 CORDIC을 증명하신 Volder 님께서 알고리즘 특허를 내셨으면 아마 때돈을 손에 쥐셨겠지만 '널리 인간을 이롭게 한다'는 취지로 특허를 일부러 안내셨다고 하는 카더라가 있다.

그냥 생각난거지만 특허라는 제도도 사실은 '널리 인간을 이롭게 하자' 라는 것에서 부터 시작된 것이다. 특허를 통해서 기술을 공개시키지만 그것에 대한 소유권을 보장해주고 대신 특정기간이 지난 후에는 인류를 위해 누구나가 사용할 수 있도록 하는 것이 바로 특허제도 인 것이다. 재밌지 않은가??

이를 이용해서 아주아주 옛날에 개발되었지만 최근에서야 급격하게 떠오르고 있는 것이 3D 프린터 되시겠다. 특허 풀리면서 제조 산업의 구조가 변하고 있다는...

잡소리가 긴데 마..마지막 하나만 더... 재밌는 단어가 있어 공유하고자 한다.

세상이 천천히 '시나브로' 변하고 있다.

시나브로 .. 이 이쁜 순우리말을 왜 난 모르고 있었지??

다음 강좌는 실제로 CORDIC 알고리즘에 대해서 설명한다... 쿨럭;

Friday, November 28, 2014

[매드프로젝트 강좌] 트렌드 - 04. 빅데이터(Big Data) 란 무엇인가?


이번에는 지금까지 설명한 IoT와 Wearable 등을 통해 모인 수많은 정보를 말하는 BIG DATA에 대하여 알아보도록 하자.

빅데이터(Big Data)란 기존 방식으로 저장, 관리, 분석하기 어려울 정도로 '큰' 규모의 자료를 말한다.

빅데이터의 등장배경에 가장 큰 핵심은 소셜 미디어 확산에 따른 비정형 데이터 폭증에 있다. 비정형데이터 라는 것은 기업의 매출액, 개인의 나이와 성별 등의 정형화된 데이터가 아닌 문자 메시지, 음성, 영상, 위치 등 다양한 유형의 데이터를 말한다. 특히 스마트폰이 대중화 되면서 이러한 비정형데이터가 폭발적으로 증가하고 있다. 사람들은 언제 어디서나 스마트폰을 통해 자신이 좋아하는 정보를 보거나 관심사에 대해서 컨텐츠를 만들어 생산하고 있다. 이런 개개인의 성향들을 알 수 있는 자료들도 다 빅데이터가 되는 것이다. 더군다나 최근에 사물인터넷 및 웨어러블 기기가 확산되면서 발생하는 정보의 양은 이루 말할 수 없을 정도로 엄청나게 증가하고 있다. 하지만 이것들을 재가공하지 않는다면 그냥 쓰레기 정보로 전락해 버린다.

예를들어 필자는 주로 IT나 하드웨어 그리고 영화에 관심이 많다. 이 블로그에도 광고가 노출되고 있지만 필자가 가는 싸이트마다 필자가 좋아하는 관심사를 분석하여 주로 IT나 영화광고가 노출된다면 필자는 당연히 관심을 가지고 그 광고를 누르지 않을까? 이런 것들을 알아 낼 수 있는 것이 바로 빅데이터를 어떻게 가공하느냐에 달려 있는 것이다.

따라서 빅 데이터를 분석하여 효율적인 알고리즘을 개발하는 기술의 필요성이 사물인터넷과 웨어러블 기기, 페이스북, 트위터 등 소셜 어플과 프로그램들의 등장에 따라 함께 대두 되고 있다.

이런 정보들은 엄청난 부가가치와 연결되는데 역시나 돈과 연결된다면 이런 정보들이 원하지 않게 노출되거나 유출되었을 때 많은 피해와 돌이킬 수 없는 문제를 양산할 수 있다. 이를 막기 위해 보안 인식을 강화하는 것이 중요하다고 할 수 있겠다.

지금까지 ICT부터 시작해서 IoT와 Wearable을 공부하고 이로인해 발생하는 Big Data까지 정리해 보았다. 과연 얼마나 빨리 대응하고 발전할지는 모르겠지만 일본 애니메이션 '공각기동대' 처럼 사람들끼리 뇌를 통해 통신하는 시대가 코앞에 와있는게 아닐까?

Thursday, November 27, 2014

[매드프로젝트 강좌] 트렌드 - 03. 웨어러블(wearable) 이란 무엇인가?

요즘 쏟아지고 있는 웨어러블(wearable) 기기들이 많은데 이 웨어러블이라는 용어가 무엇인지 알아보자.


웨어러블(wearable)이란 말은 본래 패션 용어로써 '착용할 수 있는' 이란 뜻이다. 입을 수 있는 패션 또는 현대의 라이프스타일에 부응한 세련되면서도 현실적인 옷을 말한다.

그러나!

최근 웨어러블이라는 단어는 웨어러블 컴퓨터(wearable computer)와 같은 의미로 해석되고 있다. 언제부터 IT 기기들은 우리 생활에 녹아들어 IT라고 부르는 것들의 바운더리가 희미해지고 있다. 그만큼 시대가 변하면서 IT는 우리 일상이 되어 버린 것이다. 웨어러블 컴퓨터는 말그대로 입을 수 있는 것에 PC 기능을 담은 컴퓨터로 초기에 미국 군사용으로 개발 되기 시작하였으나 패션, 통신기기, 디지털 제품까지 영역을 넓혀가고 있다. 이제는 기계, 물리, 의류, 감성공학, 심리 등 전 산업에 걸쳐 IT가 활용되고 융합되고 있다. 따라서 최근에 나오고 있는 웨어러블 컴퓨터인 스마트워치, 스마트밴드, 스마트 안경, 스마트 밸트 등 몸에 장착할 수 있는 IT기기 들을 통칭하여 웨어러블 기기라고 부르고 있다.






웨어러블이 중요한 이유는 사물인터넷(IoT)와 빅데이터(Big data)와 연관된다. 개인의 몸에 기기를 부착하여 개인의 무수히 많은 정보, 즉 빅데이터를 사물인터넷을 통해 수집하게 되는데 이를 이용한 부가가치가 무한대 라는 것이다. 바로 '돈' 벌 수 있는 아이템이라는 것이다. 웨이러블기기는 이제 막 시작하는 분야다. 벌써부터 유투브(youtube)를 통해 구글 글라스와 같은 기기를 통해 영상 콘텐츠가 올라오고 있으며 삼성 스마트워치 기어s 의 경우에는 SKT와 같이 데이터 무제한 서비스를 하여 가까운 운동이 필요할 때는 스마트 워치 하나만으로 간단한 전화통화부터 신체데이터 수집까지 한번에 가능하다.

다만 걱정되는 점은 무한한 가치를 가진 이 소중한 개개인의 데이터들이 노출되어 악용되거나 잘못 사용  된다면?? 당연히 보안이 필요해지는 부분이라고 할 수 있겠다. 특히 우리나라의 보안 의식이 많이 부족한데 앞으로의 미래를 위해 미리미리 보안의식을 높여야 할 것이다.

Wednesday, November 26, 2014

[매드프로젝트 강좌] 트렌드 - 02. 사물인터넷(IoT) 란 무엇인가?

 ICT에서 언급되었던 사물인터넷(IoT)에 대하여 알아보도록 하자. 


사물인터넷(Internet of Things) 이란 각종 사물에 컴퓨터 칩과 통신 기능이 내장되어 서로간에 통신하는 것을 의미한다. 약어로 IoT라고 사용하며 가전제품, 모바일 장비, 웨어러블 컴퓨터 등 다양한 임베디드 시스템이 된다.

논문을 인용한 사물인터넷의 정의를 보면
1. 자신을 구별할 수 있는 유일한 아이디를 가져야 하고
2. 인터넷을 통한 통신 능력을 가져야 하고
3. 데이터를 처리하는 능력을 가져야 하고
4. 필요할 경우 외부 환경으로부터 데이터 취득을 위해 센서를 내장 할 수 있다.

IoT가 전세계적으로 널리 퍼지기 위해서는 위의 조건에 따라 몇가지 문제점이 있다. 먼저 자신을 구별할 수 있는 아이디와 인터넷을 통한 통신 능력이다. 현재 스마트폰을 포함하여 인터넷에 연결된 많은 기기들을 구별할 수 있는 방법으로 IP(Internet Protocol)을 사용한다. 그러나 IoT와 웨어러블 기기들로 인하여 발생할 수 있는 인터넷 기기들은 수를 셀 수 없을 만큼 무수히 많아지게 되며 이것은 인터넷에 연결된 기기의 유일한 아이디로서 IP가 부족할 수 밖에 없게 된다. 이를 해결할 많은 방법들이 연구되어지고 있으며 조만간 큰 문제 없이 해결될 것이라고 생각된다.

IoT는 새로운 시장으로 급부상하고 있고 인터넷에 연결된 웨어러블 기기를 포함하고 있다. 이외에도 세탁기, TV, 전자렌지 등 모든 가전기기가 인터넷에 연결되어 앞으로를 예상해 보자면 카카오톡으로 '1시에 들어갈테니 1시까지 넣어진 옷 세탁해놔' 라고 세탁기에 명령할 수 있는 시대가 되는 것이다. 

IoT보다 더 큰 테두리로 IoE(Internet of Everything)이라는 용어까지 나오게 되었는데 사물 뿐만 아니라 모든 것이 인터넷에 연결된 다는 IoT보다 더 큰 개념이다. 정말 사람의 상상은 끝이 없나보다 새로운게 나오면 더 새로운 것을 찾고 발전해 간다. 모든 것들이 인터넷에 연결되어 정보를 주고 받다보면 세상에 정말 수많은 정보가 넘쳐나게 될텐데 이것을 우리는 바로 빅데이터(Big Data)라고 부르게 되는 것이다.

P.S. 미래를 점쳐 보자면 이 수많은 정보들이 네트워크로 연결되면 지금과는 차원이 다른 무선 네트웍 밴드(무선 정보가 지나가는 길)이 필요하게 될 것이다. 이를 기반으로 볼때 통신 사업을 주도적으로 하고 있는 기업들은 앞으로 10년 아니... 50년 이상은 더욱더 발전하게 될 것 이라는것이 내 생각이다. (주식을 사놔야하나???ㅎㅎ)


Tuesday, November 25, 2014

[매드프로젝트 강좌] 트렌드 - 01. ICT란 무엇인가?

최근에 광고를 통해 ICT라는 단어를 많이 볼 수 있다. ICT가 무엇인지 알아보도록 하자.

ICT는 Information and Communication Technology의 약자로 1980년대 부터 사용되어 왔으나 1997년에 데니스 스티븐슨이 영국정부의 보고서에 사용하면서 부터 유명해지기 시작했다고 한다. 그러나 일반인들에게는 ICT라는 용어는 그냥 생소한 단어로 밖에 들리지 않았으며 최근에서야 유명 기업들의 광고를 통해 ICT가 홍보되면서부터 많은 사람들에게 ICT에 대하여 알려지기 시작했다.






ICT는 우리가 익히 알고 있던 IT(Information Technology) + Communication을 결합시킨 거라고 생각하면 된다. 우리들이 흔히 접하고 있는 IT 기술인 스마트폰, 스마트패드 등을 포함하여 통신사업과의 융합을 통한 포괄적인 산업을 얘기하는 것이다.






불과 10년 전만 하더라도 IT라는 용어는 새로운 시장을 창출하고 새로운 트랜드로 급부상하는 용어로 인식되었다. 그런데 지금의 IT라는 용어는 잘 사용되지 않는다. IT라는 용어를 사용할 필요가 없다. 왜냐하면 우리 삶에 IT가 녹아 있기 때문이다.






시간이 지나면서 모든 사람들이 IT기기 없이는 아무것도 할 수 없는 시대가 되었다. IT기기들은 업무효율을 늘려주고 삶의 질을 높여주었다. 그러나 인간의 욕심은 끝이 없다고 했는가. 그냥 정보를 이용만하는 것이 아닌 인터넷을 통해 정보를 공유하기 시작한 것이다. 이것은 스마트폰이 등장하기 시작하면서 급속도로 퍼지기 시작했다. 1인 1스마트폰은 스마트폰을 가진 사람들을 하나의 네트워크로 연결하기에 이른다. 그러면서 떠오르게 된것이 사물인터넷(IoT)과 웨어러블(Wearable)이다. 사람만이 네트워크로 연결되는 것이 아니라 사물까지도 네트워크로 연결되는 것이다. 그리고 사람의 삶의 질을 더 높이기 위해 좀 더 편리하게 IT기기들을 사용할 수 있도록 기존의 입을 수 있는 것들에 컴퓨터를 붙여 웨어러블 컴퓨터를 만들게 되고 이제는 이것을 웨어러블 기기라고 부르게 된다. 






따라서 더이상 네트워크가 연결되지 않은 곳이 없기 때문에 ICT가 각광 받고 있는 것이다. ICT는 사물인터넷(IoT)부터 웨어러블(Wearable)기기 까지 '인터넷에 연결된 정보화 기기' 라면 이를 통합하여 부를 수 있기 때문이다. 

Tuesday, October 21, 2014

[매드프로젝트 강좌] 암호화에 대해서 알아보자 - 04. 암호화에 대한 나의 견해

필자가 생각하는 대칭키, 비대칭키, 해쉬함수의 최근에 많이 사용되고 있는 대표적인 것들은 대칭키로는 AES, 비대칭키로는 RSA, 해쉬함수는 SHA라고 생각한다. 비대칭키에서 RSA 못지 않게 ECC가 각광 받고 있지만 우선 이번 강좌에서는 따로 설명하지 않으려고 하니 궁금하신 분들은 개인적으로 찾아보시길 권한다.

우선 AES에 대하여 알아보도록 하자. AES는 Advanced Encryption Standard)의 약자로 기존에 미국에서 사용하던 DES를 교체하기 위해 제정된 미국 정부 표준 암호화 알고리즘이다. DES에 대한 암호화의 보안성이 불안정해 지면서 이를 대체하기 위해 암호 학계에 제안하여 공모전을 개최했는데 여러개의 암호 알고리즘 중에 Rijndael이 벨기에 연구자 Joan Daemen과 Vincent Rijmen과 함께 설계한 암호 알고리즘이 채택되어 2001년에 미국표준기술연구소(NIST)에서 연방 정보처리 표준으로 발표하게 된다. 이 알고리즘은 128비트의 블록크기를 가지며 키 길이는 128/192/256 비트를 가진다. 키 길이가 가변적이고 라운드 수도 블록 크기에 따라 가변적인 알고리즘으로 안전성과 성능의 요구에 따라 유연하게 사용이 가능하다.

RSA는 Rivest Shamir Adleman의 약자로 1977년 미국의 MIT 공학자 론 리베스트(Ron Rivest), 아디 셰미르(Adi Shamir), 아델먼(Leconard Adleman)의 3명의 수학자에 의해 개발된 알고리즘을 사용하는 비대칭키 알고리즘이다. 이 알고리즘은 소인수분해의 어려움에 안전성의 기반을 두고 있으며 개인키를 해독하려면 슈퍼컴퓨터로도 1만년 이상이 소요되므로 공개키 암호화 방식으로 많이 사용되고 있으나 계산량이 많은 것이 단점이다. 따라서 이런 문제를 해결하기 위해 최근 ECC 알고리즘이 등장했다.

SHA는 Secure Hash Algorithm의 약자로 미국 국가안보국(NSA)에서 1993년에 처음으로 설계 했으며 미국 국가 표준으로 지정되었다. SHA의 경우 MD5의 보안성 문제가 대두되어 MD5를 대신하여 SHA가 사용되며 SHA-224, SHA-256, SHA-384, SHA-512등이 있다. 최근에는 SHA도 공격당하여 미국 표준 기술 연구소(NIST)에서 이를 대체할 새로운 암호화 해시 알고리즘 후보를 공모 하고 있다.





이와 같이 최근 대표적인 암호화는 AES, RSA, SHA 로 줄일 수 있으며 필자가 이 3가지 암호화로 줄인 이유는 하이브리드 방식으로 3가지 암호화의 단점을 보안하여 사용되고 있기 때문이다. 속도가 빠른 대칭키 AES 암호화 알고리즘을 통해 전달하고자하는 데이터를 빠르게 암호화하고 함께 전달해야하는 AES 키 값은 속도는 느리지만 편리한 RSA를 통해 공개키로 암호화하여 전송하게 된다. 이렇게 보내는 데이터의 무결성 검증을 위해 SHA 해쉬 값을 동시에 전송하는 방식이 최근에 사용되는 하이브리드 방식이다.

최근 다양한 사물인터넷(IoT) 제품이 출시되면서 새로운 시장으로 급변화를  예고하고 있지만 보안에 대한 고민은 충분히 이루어지고 있지 못하다. 한편에서는 IoT 시장이 예상보다 느리게 성장할 것으로 예상하고 있으며 이유는 보안문제의 대두로 많은 걸림돌이 발생하게 된다는 것이다. 개인화기기들의 개인정보들은 빅데이터로 어떻게 가공하느냐에 따라 엄청난 부가가치를 창출할 수 있는 정보가 되는데 IoT가 발달하게 되면 이런 정보들의 유출이 공공연하게 일어나거나 악의적으로 유출될 것으로 예상되기 때문이다. 뿐만 아니라 가정용 기기들을 외부에서 악의적으로 조종하게 된다면 이로인한 파급 여파는 실로 엄청나다고 할 수 있다. 우리가 영화나 게임에서나 보던, 상상 속에서나 존재하던 일들이 눈앞의 현실이 되고 있는것이다. 누구의 말로는 앞으로의 5년이 인류의 지난 50년 보다 크게 급변할 거라고 내다보는 시선도 있다. '모든 것이 인터넷이 가능한 세상'은 곧 '모든 것이 해킹이 가능한 세상'이라는 의미이기도 하다. 따라서 IoT의 발전 기대감과 함께 미래에 발생 할 수 있는 보안 피해를 최소화 할 수 있는 대응책 마련이 시급한 시점이라고 생각하며 지금 이라도 보안에 대한 문제점이 국내에서 대두되는 것이 앞으로 대한민국이 IT 강국으로 재도약하기 위한 시발점이라고 생각한다.




암호화에 대한 강좌는 이상으로 마무리 하며 얇은 지식으로 강좌를 쓰다보니 틀린부분이 있을 수도 있고 말도 안되는 부분이 있을 수도 있습니다. 따라서 잘못된 부분이나 고쳐야 할 부분을 지적해주시면 감사드리겠습니다. 이 외 궁금하신 사항은 리플달아 주시면 성실히~ 답변 드리겠습니다. 이상~ 매드 강좌 였습니다. 감사합니다.

Monday, October 20, 2014

[매드프로젝트 강좌] 암호화에 대해서 알아보자 - 03. 암호화의 종류

앞서 설명한대로 암호화는 대칭키, 비대칭키, 일방향(해쉬함수) 정도로 구분할 수 있다. 각 암호화 방식에 대해서 알아보도록 하자.






우선 대칭키에 대해서 살펴보면 일반적으로 우리가 생각하는 암호화 방식이라고 할 수 있다. 보통은 암호화 없이 데이터 전송을 할 경우 중간에 데이터가 누설되면 제3자가 누설된 데이터를 그대로 확인 할 수가 있게된다. 그러나 대칭키를 통해서 암호를 거쳐 데이터를 전송하게 되면 중간에 데이터가 누설 되더라도 제3자는 '키'가 없기 때문에 누설된 데이터를 정상적으로 확인 할 수가 없게된다. 여기서 이 '키'는 데이터를 전송하는 사람이 키를 이용하여 데이터를 암호화 하고 데이터를 받는 사람도 이 '키'를 통해서 데이터를 복호화하기 때문에 데이터를 정상적으로 확인할 수 있게 된다. 이 '키'는 암호화 하는 사람과 복호화 하는 사람이 동일한 '키'를 가지고 있어야 가능하므로 우리는 이것을 '대칭키' 라고 부른다.

대칭키 암호화 방식은 비대칭키 암호화 방식에 비해 빠른 처리속도를 제공하고, 암호키의 길이가 상대적으로 작은 것이 장점이다. 그러나 정보 교환 당사자 간에 동일한 키를 공유해야 하므로 여러 사람과의 정보 교환 시 많은 키를 유지 및 관리해야 하는 어려움이 있다.

대표적인 대칭키 암호 알고리즘은 국내의 SEED, ARIA가 있으며 미국의 DES, Triple-DES, AES가 있고 유럽의 IDEA, 일본의 FEAL, MISTY 등이 있다. 최근의 경우 국내 암호화 방향도 세계 표준에 맞춰가고 있으며 미국의 AES가 가장 많이 각광받고 있는 암호화 중에 하나이다.









비대칭키 암호화는 대칭키와는 말그대로 '키'의 값이 다른 방식이다. 이전에 대칭키의 경우 데이터를 교환하는 당사자들이 같은 키를 공유했다면 비대칭키 방식의 경우는 '데이터를 받는 사람의 공개키' 를 이용하여 '데이터를 주는 사람'이 데이터를 암호화 하게 된다. 이 암호화된 데이터는 통신을 통해 '공개키의 주인'에게 전달되고 데이터를 받은 주인은 본인만이 가지고 있는 '비공개키'를 이용하여 받은 데이터를 복호화 하여 정상적인 데이터를 확인 할 수 있다. 이 공개키는 말그대로 '공개'되어 있는 상태이기 때문에 데이터가 누설 되었을 때 제3자도 공개키를 가지고 있게된다. 공개키로 암호화된 데이터를 정상적으로 확인하기 위해서는 반드시 공개키와 쌍으로 연결된 '비공개키'를 이용해야만 데이터를 정상적으로 복호화 할 수 있다. 그러면 누가봐도 대칭키 암호화 보다 비대칭키 암호화가 훨씬 더 편리해보이는데 왜 아직까지 비공개키를 사용하지 않는 걸까?

이유는 비대칭키 암호화 방식의 경우 대칭키 암호화 방식보다 느리기 때문이다. 따라서 최근에는 키 분배나 전자서명 또는 카드번호와 같은 작은 크기의 데이터 암호화에 많이 사용되고 있다.

대표적인 비대칭키 암호화 알고리즘은 국내에는 KCDSA가 있으며 국외에서는 RSA, Elgamal, ECC 등이 있다. 최근에는 RSAECC가 각광받고 있는 추세이다.








마지막으로 일방향(해쉬함수)에 대하여 알아보도록 하자. 해쉬함수의 경우 말 그대로 한쪽 방향으로만 암호화를 진행하는 것이다. 잉? 그럼 이게 왜 필요하냐고? 해쉬함수는 데이터의 '무결성' 확인을 위해서 사용되는 것이다. 예를 들어 인터넷을 통해 대용량의 자료를 다운 받는데 이 다운받은 데이터가 제대로 통신을 통해 전송된 것인지 아닌지 알 수가 없다. 통신이 가지고 있는 여러 에러검출 및 보정 알고리즘들이 있지만 이것으로도 해결되지 않는 문제가 발생 될 수 있는데 이럴 때 처음 대용량 자료를 배포하는 사람이 해쉬함수를 공개해 놓았다면 대용량 자료를 다운 받은 사용자도 다운을 다 받은 후 해쉬함수를 만들어 배포자가 공개한 '해쉬함수와 비교'하여 데이터의 '무결성'을 검증하게 된다. 이해가 쉽도록 그림에서는 사과로 표시 해봤다. 







예를 들어 데이터를 보내는 사람이 해쉬함수와 함께 데이터를 보냈는데 중간에 데이터가 악의적으로 변형된다면 데이터를 받은 사람이 해쉬함수를 확인했을 때는 보낸 사람의 해쉬함수와 다른 해쉬함수가 나타나게 된다. 그림과 같이 보내는 데이터는 빨간 사과 해쉬함수가 나타나는데 받는 사람은 초록 사과 해쉬함수가 보이게되면 어떤 이유로 인하여 데이터가 변형이 되었다는 것을 알 수 있게 된다.

대표적인 해쉬 함수로는 국내에서 개발한 HAS-160이 있으며 SHA, MD5, RIPEMD-160과 같은 해쉬 함수들이 있다. 최근에는 SHA가 가장 많이 사용되는 해쉬함수로 각광 받고 있다. 흔히 MD5를 많이들 들어 봤겠지만 보안성에 문제가 발견되어 현재에는 많이 사용되고 있지 않다. 

다음 강좌에서는 필자가 생각하는 최근에 많이 사용되고 있는 대표적인 암호화 알고리즘에 대해서만 좀 더 자세히 알아보도록 하자.

Friday, October 17, 2014

[매드프로젝트 강좌] 암호화에 대해서 알아보자 - 02. 암호화란 무엇인가?

암호화는 '정보(데이터)를 암호화 알고리즘을 통해 암호화된 정보(데이터)로 변형하여 제3자로부터 중요한 정보(데이터)를 보호하는 기술' 이다. 이를 이해하기 쉽도록 그림으로 그려 보았다.

이렇듯 암호화 되지 않은 정보(데이터)는 다른 사람에게 어떠한 통신기술을 이용하여 전달하고자 할 때 중간에서 가로채 데이터를 악용할 수 있게된다. 따라서 암호화는 4가지 목적으로 암호화 하게 된다.
- 인증(Authentication) : 허가 받은 사용자인지 여부 확인
- 기밀성(Confidentiality) : 허가 받은 사용자만 내용 확인
- 무결성(Integrity) : 데이터의 위-변조 방지
- 부인방지(Non-Reputation) : 송-수신자의 발-수신 사실의 부인 불가

과거 역사에서 보면 위대한 왕과 장군들은 효율적인 통신 수단에 의존해 나라를 다스리고 군대를 움직여 왔다 해도 과언이 아니다. 하지만 동시에 이러한 통신 내용이 적의 손에 들어가 귀중한 비밀이 누설되거나 중요한 정보가 들어가지 않을까 늘 우려했다. 이러한 우려가 암호를 만들게 된 시초라고 할 수 있다. 암호의 어원은 그리스어의 비밀이란 뜻을 가진 크립토스(Kryptos)로 알려져 있다. 이는 평문을 해독 불가능한 형태로 변형하거나 암호화된 통신문을 원래의 해독 가능한 상태로 변환하기 위한 모든 수학적인 원리, 수단, 방법 등을 취급하는 기술이나 과학을 말한다.

암호화 기술은 1920년대 세계 1,2차 대전에서 무선 통신 기술의 발전을 기반으로 급격히 발전하기 시작했으며 1970년대 컴퓨터의 사용이 활발해지면서 이를 이용한 암호 기술이 다시한번 급변하였다.

제대로 된 암호화는 메시지 원문의 내용과 암호화 알고리즘을 알아내기 어려운 암호이다. 그러기 위해서는 혼돈과 확산이라는 두 가지 성질을 가져야 한다.
-혼돈(Confusion) : 성질은 메시지 원문의 내용을 짐작하기 어렵게 함.
-확산(Diffusion) : 성질은 암호화 알고리즘의 패턴 추론을 어렵게 함.

좋은 암호는 혼돈과 확산 두 가지 성질 모두를 갖춘 암호이다. 옛날 고전 방식을 이용하여 나타내 보면 아래 그림과 같다.


이 와 같은 방식은 메시지의 원문 내용의 추론을 어렵게 하는 혼돈(Confusion) 성질을 만족하는 방식으로 문자열을 다른 문자열로 이동 교체하는 방식이다.


이 방식은 암호화 알고리즘을 짐작하기 어렵게 하는 확산(Diffusion) 성질을 만족하는 방식으로 무작위로 보이는 '원칙'에 따라 문자열 순서를 바꿔 이동하는 방식이다.
따라서 위의 두가지 방식을 모두 적용 한다면 혼돈과 확산이 동시에 적용된 좋은 암호화 방식이라고 할 수 있다.

현대의 알려진 암호화 방식은 크게 세가지로 분류되는데 '대칭키 암호화', '비대칭키 암호화', '일방향(해쉬함수) 암호화' 로 분류된다. 이 3가지 분류의 암호화에 대해서는 다음 강좌에서 좀 더 자세히 다루기로 한다. 다음 강좌에서는 3가지 분류의 암호화에 대한 개념 정리 및 종류 그리고 최근 가장 많이 사용되는 암호화 알고리즘에 대하여 설명하도록 하겠다.

Thursday, October 16, 2014

[매드프로젝트 강좌] 암호화에 대해서 알아보자 - 01. 암호화를 왜?



최근 카카오톡으로 인하여 불거진 '보안' 이슈에 관하여 생각하다가 암호화에 대하여 정리해 놓으면 좋겠다는 생각에 일반인들을 기준으로 암호화에 대해 간단히 정리해 보려고 한다.

먼저 암호화에 대한 정의부터 알아보면 암호화는 '데이터 전송 시 불법적인 방법에 의해 데이터가 손실되거나 변경되는 것을 방지하기 위해 데이터를 변환하여 전송하는 방법' 이다. 현대 사회는 인터넷을 이용한 비즈니스가 활성화 됨에 따라 인터넷상에서 개인정보를 손쉽게 획득할 수 있게 되었다. 이에 따라 2011년 9월 말 시행된 개인정보보호법에서는 공공행정, 정보통신, 금융 및 신용정보 등 비즈니스 분야에 관계없이 국제수준에 부합하는 개인정보 처리 원칙을 단일화하여 제시하고 있다. 특히, 주민등록번호와 같은 고유식별정보가 변조, 유출 또는 도용되지 않도록 암호화 등 안전성 확보에 필요한 조치를 취하여야 한다고 명시하고 있어 데이터 보호를 위한 활동이 증가할 것으로 예상된다.


개인정보가 유출되는 경우 개인은 생명 및 신체에 대한 위협, 재산상의 손실, 사회적 평가의 저하 등 다양한 불이익을 받을 수 있다. 예를들면 최근에 애플 iCloud 사건처럼 연애인들의 사적인 사진들이 인터넷을 통해 유포된다던가 국내의 경우에는 트위터나 페이스북이 해킹당해 말도 안되는 글을 퍼뜨려 개인의 명예를 훼손하는 일이 빈번이 발생하고 있다. 이런 온라인에서의 피해는 일단 발생한 경우 회복이 어려울 뿐만 아니라 피해가 복구되기 전에 다른 게시판이나 소셜 서비스들을 통해 2차 피해가 실시간으로 발생하게 된다.




최근 이슈되고 있는 IoT에서는 반드시 개인의 동작 센싱 기술과 액츄에이션을 바탕으로 서비스를 제공하는 중요한 요소중의 하나이다. 대표적으로 나이키 퓨어밴드, 구글 글라스 등이 대표적이다. 이렇게 사물이 능동적인 처리를 할 수 있는 세상에서 정보보안의 현실은 국내의 경우 IoT의 발전과 확산을 막을 정도로 이슈되고 있으며 카카오톡 뿐만 아니라 미국의 경우 TV나 냉장고 등의 가전기기가 해킹돼 사이버 공격에 악용된 사례도 있다고 한다.



따라서, 현대사회에서 웨어러블기기나 IoT를 통해 모든 개인정보들이 데이터화 되어 가고 있고 거기에 따른 개인정보들이 엄청난 부가가치를 창출 할 수 있는 또 하나의 빅데이터 시장으로 변화해 가고 있다. 이런 데이터들을 안전하게 보호하기 위해서는 반드시 암호화 기술을 통해 보안을 강화해야 한다. 이런 암호화가 무엇인지는 다음 강좌를 통해서 간단히 암호화에 대한 기본 개념과 역사에 대해서 알아보도록 하자.