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를 많이들 들어 봤겠지만 보안성에 문제가 발견되어 현재에는 많이 사용되고 있지 않다. 

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

2 comments :

  1. A very awesome blog post. We are really grateful for your blog post. You will find a lot of approaches after visiting your post. 토토사이트

    ReplyDelete
  2. I admire this article for the well-researched content and excellent wording. I got so involved in this material that I couldn’t stop reading. I am impressed with your work and skill. Thank you so much. 먹튀검증

    ReplyDelete