본문 바로가기

알아야 산다/IT 최신 정보

[IT 최신 정보] '알.쓸.굳.IT' 제5화 - 복잡하고 머리 아픈 암호화 이야기(2)



지난 시간에 암호화가 무엇인지, 암호화 종류에는 어떤 것이 있는지, 어떤 상황에 사용되는지 등을 알아봤습니다. 수포자의 입장에서 최대한 쉽게 설명 드리려 노력했지만, 그래도 내용 자체가 워낙 복잡하다 보니 어렵긴 어렵네요. 그리하여, 지난 시간에 익혔던 내용을 조금 더 확실하게 이해하실 수 있도록 재미있는 사례를 들어 접근해보겠습니다! 


▶ '알.쓸.굳.IT'제5화 – 복잡하고 머리 아픈 암호화 이야기'① (바로 가기)


※ '알.쓸.굳.IT(알아봤자 쓸데없고 굳이 누가 알려주지 않는 IT 이야기)' 시리즈는 컴퓨터에 대해 관심이 없으시거나 상식이 거의 없다고 볼 수 있는 컴알못 분들을 대상으로 작성했답니다. '컴퓨터에 대해 아는 것은 별로 없지만 대강 어떻게 돌아간다 정도는 알고 싶다' or '그런 분들에게 설명해야 하는 곤란한 상황에 처해있다'는 분들을 생각하며 준비한 내용이기 때문에, 쉬운 이해를 위한 비유 및 약간의 과장, 과감한 단순화 과정이 있을 수 있다는 점 양해해주세요! 



 팀장님은 모르는 암호로 대화하자!

팀원들끼리만 오붓하게, 맘 편히 회식하고 싶습니다. 팀장님이 참석하시는 순간 재미는 증발해버리니, 제발 팀장님은 이 계획을 모르셨으면 하고요. 들킬 위험성이 있어서 최대한 몰래, 조심조심 논의해야 하겠지요? 


상황 1. 팀원들끼리 미리 약속이 되어있음. 약속 내용을 확인하기 위한 비밀 메시지



사원들은 미리 약속해 놓고, 서로서로 얘기한 시간이 맞는지 확인을 하고자 합니다. 그런데 대놓고 '우리 몇 시에 어디서 모이기로 했지?' 하고 물어봤다간 팀장님께서 들으실 수도 있고, 그럼 본인도 가겠다고 할 것이 뻔합니다. 그래서 ‘몇 시, 어디’라는 정보를 비밀 메시지로 만들어 주고받기로 했지요. 그 비밀 메시지를 듣고 자신이 알고 있는 ‘몇 시, 어디’ 정보를 암호화했을 때 동일한 메시지가 나오면 다른 사람들이 보낸 시간, 장소 정보와 맞다고 판단할 수 있어요. 이것이 단방향 암호화의 장점입니다. 팀장님은 이 메시지를 들어도 해석이 안 되기 때문에 무슨 내용인지 절대 알 수가 없지만, 비밀 메시지 내용을 모두 정확하게 알고 있는 사람들끼리는 내용 검증이 가능하다는 것이지요. 



상황 2. 약속 시간이나 장소를 잘 모르는 직원이 생겼습니다. 어떻게 해야 할까요?


사원 A가 약속 시간과 장소를 잘 몰라서, 비밀 메시지를 받아도 확인이 안 되는 상황이 발생했어요. 사원 A는 어떻게 해서든 팀장님 몰래 회식을 가고 싶은데, 어떻게 하면 좋을까요? 사원 A는 사원 B의 공개키로 <어디서 몇 시에 볼지 모르겠는데, 우리 암호화로 이야기합시다>라는 내용을 암호화해서 팀장님이 듣든지 말든지 거침없이 메시지를 던졌습니다. 팀장님은 사원 B의 개인키가 없으니, 무슨 내용인지 절대 모르시겠지요. 암호문을 받은 사원 B는 메시지를 보낸 사원 A의 공개키를 이용해 암호문을 보냅니다. <내가 메시지를 보내줄게. 우리의 암호는 ‘12345’야. 그리고 내가 보낸 메시지라는 것을 확인하기 위해, 이걸 암호화해서 ‘가나다’라는 메시지를 보낼게> 그리고 동시에 자신의 개인키로 '가나다'라는 메시지를 암호화 해서 보냅니다. 사원 A는 받은 메시지를 확인한 후 '가나다'라는 문자가 나오는지도 체크했어요. 팀장님이 사원인 척 메시지를 보낸 것이 아니라 그 사람이 직접 보낸 내용이라는 것을 검증한 것이지요. 그리고 같이 사용하기로 한 암호 12345로 회식 장소와 시간을 서로 교환했습니다.  



설사 팀장님이 대화 내용을 듣더라도 무슨 내용인지 파악이 불가하며, 눈치 백 단 팀장님이 사원인 척 하면서 직원들에게 정보를 빼내는 것도 불가능합니다. 이 방법이 비대칭 암호화 방식이에요! 암호화 키를 교환하고 그것으로 대칭키 암호화를 사용하는 일반적인 방법이라고 보시면 됩니다. 일반적으로 비대칭 암호화는 암호화/복호화하는데 시간도 꽤 걸리고 복잡하기 때문에, 많은 내용은 보내지 않아요. 그저 서로 대칭으로 사용할 키를 전송하면서 본인이 보낸 것이 맞다는 것을 인증하기 위해 사용한답니다. 


 생활 속에 쓱~ 스며들어 있지요! 

조금 더 구체적으로! 요걸 실생활에서 쓰긴 쓰는 걸까요? 그렇다면, 대체 뭐할 때 써먹는걸 까요?


 로그인할 때

우리가 일반적으로 사용하는 포털사이트 및 대부분의 사이트에서 사용하는 아이디/패스워드 입력 항목을 확인할 때 암호화를 사용합니다. 사이트 관리자가 회원의 패스워드를 알면 문제가 발생할 가능성이 있기 때문이지요. 일반적으로 단방향 암호화 방식을 사용합니다. 사이트 패스워드의 경우 단방향 암호화를 한 결과만 저장하고, 사용자가 로그인할 때 입력한 암호를 암호화해 그 결과가 저장한 암호화된 결과와 같은지를 비교하는 방식입니다. 이 방식을 사용하는 사이트에서는 패스워드를 분실했을 때, 패스워드 자체를 알려주는 것이 아니라 임시 비밀번호를 하나 만들어서 사용자에게 전달해요! 정확한 패스워드를 알 수 없기 때문이랍니다. 

  

② 개인정보를 저장할 때

주민등록번호, 전화번호 등 주요 개인정보라고 할 수 있는 항목을 저장할 때 암호화를 한 후 저장합니다. 물론, 사이트를 사용하는 우리는 모르겠지만 사이트를 운영하는 사람들이 알아서 암호화해 저장하고 읽어오는 것이지요. 사용자 정보의 경우 일반적으로 양방향 암호화를 사용해 저장합니다. 특히 로그인할 때나 개인정보를 저장할 때는 법적으로 암호화해서 저장하게 되어있기 때문에 우리가 알만한 사이트는 대부분 암호화 저장 방식이 적용되어 있다고 보시면 됩니다. 


③ 인터넷의 https

인터넷 주소 맨 앞에 나오는 http/https 중에 https를 사용하는 경우, 인터넷을 통해 전달되는 내용이 모두 암호화된 상태로 처리됩니다. 만약 중간에 통신 내용이 유출되더라도 암호화되어 있기 때문에 해당 내용을 다른 사람이 볼 수 없지요. 그래서 보안상 매우 중요하답니다. https는 먼저 비대칭 암호화 방식을 사용한 후, 암호화에 사용할 키를 전달해요. 그리고 나서 대칭키 암호화를 사용한다고 생각하시면 됩니다. 예전에는 이런 처리방식이 속도도 느릴뿐더러 암호화, 복호화를 하기 위해선 컴퓨터 성능도 좋아야 하기 때문에 로그인 및 결제 시에만 사용했어요. 하지만 최근에는 서버와 컴퓨터 성능이 얼추 평균 이상은 하잖아요? 그래서 모든 내용을 https로 보내는 사이트가 점차 늘고 있답니다. (크롬 브라우저에서는 https를 사용하지 않는 사이트에는 주소창 앞부분에 '안전하지 않음' 혹은 '주의요함' 이라고 표시하기도 합니다)




이 부분은 맘먹고 시작하면 엄청난 내용이 줄줄~ 나오기 때문에 그냥 ‘https는 암호화된 통신이라 중간에 유출되더라도 위험이 적다’는 것만 기억해주세요!


④ 은행이나 관공서 사이트 등에서 많이 사용하는 (공인) 인증서

은행 거래를 할 때나 관공서 사이트에서 사용하는 공인인증서 역시 비대칭키 암호화 방식을 사용하는 대표적인 사례입니다. 공인인증서 안에는 인증서를 발급받을 때 가지고 있는 키가 들어있고, 이 키를 이용해서 암호화 통신을 하는 것이라고 보시면 됩니다. 앞서 말씀드렸듯이, 인증서는 암호화 자체도 중요하지만 이 거래를 하고 있는 사람이 '본인'이라는 게 보장돼요. 주로 이 용도로 많이 사용하고 있답니다. 최근에는 법적으로 공인인증서 사용을 의무화하지 않았기 때문에, 사설 인증서 서비스를 제공하는 곳이 점차 증가하고 있습니다. 


 마지막으로 

1편의 내용을 좀 더 쉽게 이해하실 수 있도록 사례를 들어봤는데 그래도 어렵지요? 사실 암호화라는 것이 다양한 수학적 이론과 복잡한 내용으로 구성돼 있어, ‘간단히’ 설명한다는 것 자체가 가능할까 싶습니다. 그래도 분명한 것은! 요즘은 거의 모든 정보가 인터넷에 있으며 IoT 시스템 덕에 기계끼리 서로 정보를 교환할 수 있어 보안이 매우 중요한 사안이라는 것이에요. 뚫리면 끝장이라고요!! 그리고 이렇게 중요한 보안의 시작은 암호화 방법에 있겠지요? 암호화라는 것이 보안에 이렇게 사용되는구나 정도만 이해하셔도 충분히 여기까지 읽으신 보람이 있을 거예요~



 


 짧고 굵게 핵심만 요약! 

1. 어떤 내용을 다른 사람이 볼 수 없게 바꾸는 것을 암호화라고 하고 그걸 다시 풀어서 일반적인 내용으로 바꾸는 것을 복호화라고 합니다.

2. 암호화는 다시 원문으로 변환 불가능한 단방향 암호화, 원문으로 변환 가능한 양방향 암호화가 있습니다. 양방향 암호화는 암/복호화에 사용하는 키의 구분에 따라 대칭키 암호화와 비대칭키 암호화로 나뉩니다.

3. 인터넷 시대에 암호화는 매우 중요한 보안 수단 중 하나이기 때문에 우리가 모르는 곳곳에 아주 다양하게 사용되고 있습니다.