본문 바로가기

알아야 산다/IT 최신 정보

[IT 최신 정보] '알.쓸.굳.IT' 제6화 - '웹사이트'와 'ActiveX' 그리고 'EXE'는 대체 무슨 사이? ②

 

지난 ①편에서는 웹사이트는 어떤 역사를 거쳐 생겨났는지, HTML은 무엇인지 등에 대해 알아봤습니다. 설마! 홀랑 다 까먹으신 건 아니시죠? 기억이 희미하다면 지난 편부터 읽고 다시 돌아와주세요~ 오늘은 어떻게 움직이는 문서를 만들게 되었으며, 'ActiveX'와 'EXE'가 나타나게 된 계기는 무엇인지, 과연 이 친구들은 모범답안이었을지 등에 대해 살펴보겠습니다. 



▶ '웹사이트'와 'ActiveX', 그리고 'EXE'는 대체 무슨 사이? ① (바로 가기)


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

 


ㅣ 움직이는 문서를 만드는 두 가지 방법

 

  
움직이는 문서를 만들기 위해 전문가들은 두 가지 방법을 고민하게 됩니다. 첫 번째 방법은 문서의 내용을 사용자의 컴퓨터로 전송하기 전에, 경우에 따라 달라지는 내용을 미리 변경해서 보내주는 방식입니다. 이 방법은 웹페이지의 HTML을 사용자에게 전송하기 전에 사용자에 따라 어떻게 달리 보여줘야 하는지를 미리 확인하는 것이지요. 그래서 똑같은 페이지라도 경우에 따라 다른 모양으로 보이도록 합니다. 예를 들면, 화면에 들어갈 때마다 '환영합니다! 이 사이트를 방문하신 000번째 방문자입니다'라는 내용을 표시하고 싶고, 000번째를 들어오는 순서에 맞춰 나타내고 싶다면 사용자에게 HTML을 전송하기 이전에 지금까지 몇 명의 방문자가 방문했는지 여부를 확인한 후 000번째 부분에 그 숫자를 넣어서 전송하는 방식입니다.

인터넷 게시판 같은 것이 이 방식으로 나타내는 대표적인 예라고 할 수 있어요. 게시판에 글이 1,000개가 있다면 그 목록을 10개씩 표시하기 위해 100개의 웹페이지를 만들어요. 1,000개의 웹페이지를 모두 만들 수는 없기 때문에 목록 중 어디를 표시해야 하는지와 어떤 글의 내용을 표시해야 하는지 여부를 확인해, 해당 목록에 일치하는 글을 나타내 주는 방식이라고 보시면 됩니다. (물론 최근에는 다른 방식으로 사용하는 게시판도 많이 있습니다만, 최대한 단순하게 설명하기 위하여 전통(?)적인 방식의 내용을 예로 들었습니다)

이 방식의 장점은 웹페이지 하나만 잘 만들어 놓으면, 여러 개의 웹페이지를 만든 효과를 볼 수 있다는 것입니다. 또한, 상황에 따라서 살~짝 다른 페이지를 나타낼 수도 있지요. 굳이 단점을 꼽아보자면, 한 번 사용자에게 전송된 HTML의 내용은 책의 페이지 한 장을 프린트물로 복사해서 보내는 것과 같이 내용을 변경할 수가 없다는 것입니다. 요즘 웹페이지도 대부분 이 방식을 사용하거나 여기서 조금 변형된 방식을 기본으로 하고 있어요. 인터넷에서 볼 수 있는 'jsp' 및 'php', 'asp' 등이 이러한 방식으로 페이지를 만드는 것이랍니다. 

 

※ 'jsp'는 'java'라는 언어를 이용해서 위의 방법으로 만든 페이지들을 나타냅니다. 'php'는 php라는 언어를 이용해 위의 방법처럼 만든 페이지를 나타내고, 'asp'는 'vbscript'라는 언어를 이용해 위의 방법대로 만든 페이지들을 나타냅니다. 최근에는 다른 이름의 방식들도 많이 나오고 있지만, 대부분의 경우 이 3가지 프로그래밍 언어를 사용하고 있어요.

 

 


첫 번째 방법은 한 번 사용자에게 문서를 전달한 이후에는 내용을 변경할 수가 없다는 한계가 있지요. 그래서 탄생한 것이 두 번째 방법입니다. 이 방법은 사용자에게 전달하는 문서의 내용에 프로그램을 같이 집어넣어서 사용자가 받은 HTML 문서를 화면에 표시하거나 화면에서 보고 있을 때 실행되도록 하는 방법입니다. 가령 화면에 '현재 시각은 00시 00분 00초입니다'라는 내용을 나타내고 시간이 계속 변경되길 원한다고 해봅시다. 첫 번째 방법으로는 1초에 한 번씩 페이지를 다시 가지고 와서 표현하는 방법밖에는 없을 것입니다. 

 

이와 달리, 두 번째 방법으로는 사용자가 보고 있는 페이지에서 1초에 한 번씩 시간을 바꿔서 내용을 출력하는 프로그램을 집어넣는 것이지요. 즉, 1초에 한 번씩 바뀐 시간을 나타낼 수 있게 됩니다. 이렇게 하면 중간에 내용을 변경할 수도 있고, 화면을 움직이게도 할 수 있습니다. 심지어 게임을 만들 수도 있어요! 대신 넣은 프로그램은 사용자의 웹브라우저에서만 동작할 수 있고 웹페이지를 전달해 주는 서버에서 자료를 받지 않는 한, 서버에서 변경된 내용을 알 수는 없습니다. 

웹페이지에 집어넣는 프로그램은 코드가 들어있는 것으로, 대다수의 경우 'javascript'라는 언어를 이용합니다. 웹페이지를 만드는 초기에는 글쓰기 버튼에 마우스를 올리면 버튼 모양이 바뀌는 것부터 마우스 커서를 따라다니는 이미지 등에도 이러한 방식을 사용했으며, 최근에는 게시판에 글을 쓰거나 이메일 주소를 입력할 때 형식에 오류는 없는지, 빈 내용이 들어있지 않은 지 등을 확인하기 위한 용도로도 많이 사용되고 있습니다. 대부분의 사이트에서 두 가지 방법을 동시에 사용하고 있는 추세입니다. 

 

ㅣ 움직이는 문서의 한계와 위험성


움직이는 문서의 두 가지 방법 중, 첫 번째 방법의 한계를 먼저 알아볼게요! 첫 번째 방법은 내용이 변경될 때마다 새로운 내용을 다시 전송받아야 한다는 것이 문제랍니다. 이 과정에서 새로운 내용을 전달해 주는 서버에도 상당한 무리가 있을 것이고, 모바일 환경에서는 데이터를 많이 사용하기 때문에 비용도 꽤 나올 거예요. 뿐만 아니라, 새로운 내용을 받아 화면에 나타내게 되면 화면을 새로 그려주는 것이기 때문에 깜박깜박하는 모습도 보일 테고, 속도도 느려질 수밖에 없답니다. 이러한 점을 제외하면 보안상의 문제는 없어요.

 

 


보안상 문제는 두 번째 방법을 사용하는 경우 발생합니다. 두 번째 방법처럼 사용자에게 실행 프로그램을 보내고, 사용자의 컴퓨터에서 해당 프로그램을 실행한다면……. 자, 슬슬 느낌 오시지요? 믿을 수 없는 사이트에서 불순한 의도를 가지고 웹페이지 사이에 해킹 프로그램을 심어 놓을 수 있겠지요. 극단적인 예로, 특정 사이트에 들어갔을 때 웹사이트 운영자가 만들어 놓은 악마의 프로그램이 실행되면서 사용자 PC에 들어있는 모든 파일을 삭제하거나 이름을 바꾸는 등의 행동도 할 수 있는 것입니다. 이렇게 되면 불안해서 인터넷 서핑도 제대로 못 할 것 같네요. 그래서 보안성과 안전성을 위해 사용자의 인터넷 브라우저(Internet Explore, Chrome, FireFox 등)안에서만 실행 프로그램이 작동하도록 제한을 걸어 놓고 사용합니다. 인터넷 브라우저를 벗어나 사용자 PC의 파일을 읽거나 삭제하는 등 일반적인 프로그램에서 할 수 있는 동작들을 최대한 제한해 놓은 후, 인터넷 페이지에서 할 수 있는 기능 정도만 가능하게 해놓았답니다. 


※ 두 번째 방법의 기술이 많이 발전되어 최근에는 오피스 문서를 편집하는 프로그램도 웹페이지 상에서 구현 가능합니다. 구글 문서나 MS의 Office Online, 한컴 오피스 등이 웹페이지에서 바로 실행되는 방식을 사용하고 있지요. 

 


ㅣ 드디어 ActiveX

 

"이마저도 부족하다! 더 편하게 사용하고 싶다!"는 니즈가 끓어오릅니다. 사용자 브라우저에서 실행하는 프로그램에 한계를 느낀 사람들은 이를 뛰어넘기 위해 또 다른 노력을 하기 시작하지요. 그때 당시 브라우저와 운영체제 시장을 장악했던 '마이크로소프트'에서 'ActiveX' 방식을 내놓게 됩니다. ActiveX는 Internet Explore 브라우저에 특정 프로그램을 설치할 수 있도록 하며, 이 프로그램은 프로그램 코드가 들어가 있는 것이 아니라 우리가 윈도우 등에서 실행하는 프로그램과 비슷한 방식으로(게임과 같은 방식으로) 실행할 수 있는 실행 파일로 만들어져 있고, 브라우저가 아니라 사용자의 컴퓨터에서 실행하는 방식이기 때문에 위의 방법에서 느꼈던 한계를 해결할 수 있는 획기적인 방법이었습니다. 

 

이 ActiveX 기술 덕분에 웹하드에서 큰 파일을 다운로드 할 때, 다운로드 현황을 확인하거나 이어받기도 가능해졌습니다. 또한, 인터넷에서 동영상도 보고, 음악도 들을 수 있게 된 것이지요. 이 외에도 ActiveX 기술을 이용하면 일반적인 인터넷 환경에서는 불가능한 일을 처리할 수 있기 때문에 큰 인기를 얻게 되었어요. 사람들은 ActiveX 기술을 이용한 각종 인터넷의 확장에 열광했고 이것저것 만들어보고 적용해보느라 신이 났답니다.

하지만, ActiveX 방식은 여러 보안상의 문제를 고치지 않은 상태에서 사용되었습니다. '설치하시겠습니까?'라는 질문에 '예'를 클릭하는 것만으로 사용자 컴퓨터에 있는 파일을 맘대로 들여다보고, 새로 만들거나 지울 수도 있었어요. 심지어 바이러스나 해킹 프로그램 설치까지 가능하게 된 것입니다. 사실, 이러한 위험에 대해 어느 정도 인지하고 있었지만 별다른 대안이 없었기 때문에 불안해하면서도 사용했답니다 우리나라의 경우, 해당 기간에 인터넷의 사용이 급증하면서 ActiveX를 사용하는 사람들이 상당수였지요.  

 


ㅣ 우리나라의 특수성 - 인터넷 상거래와 암호화
 


그때쯤 국내 인터넷 환경도 급속도로 발전하고 있었습니다. 슬슬 인터넷으로 은행거래나 상거래를 시도하는 움직임이 보였지요. 그러나 인터넷의 특성상, 통신하는 중간에 누군가가 끼어들어 자료를 도청할 수도 있고(은행 계좌정보와 비밀번호, 카드 정보 등을 유출할 수 있겠지요) 그 자료를 범죄에 악용할 가능성도 컸답니다. 이러한 문제를 해결하기 위해 '배우신 분'들이 은행과 사용자, 상점과 사용자 간의 통신 과정을 암호화 해버리는 방법을 연구했습니다. 누군가 도청을 시도하더라도 무슨 내용인지 알 수 없도록 외계어로 변환해버렸어요. 이것이 바로 지난 편에서 다뤘던 '암호화' 입니다.

 


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

 


그런데, 인터넷을 통한 전자상거래나 은행거래 모두 인터넷 브라우저에서 이루어지고 있었고 브라우저에서 지원하는 암호화 방법이 그때 당시에는 매우 부실했습니다. 조금만 노력하면 금방 해독될만한 수준의 암호화만 지원이 되었거든요. 포기란 없습니다! 이 문제를 해결하기 위해 미국의 암호화 방식에 허가도 요청하고, 국내에서만 사용할 수 있는 별도의 암호화 방법에 대해서도 더욱 열심히 연구하기 시작했습니다. 그 결과, 우리나라의 독자적인 암호화 알고리즘인 'SEED 방식'이 탄생했어요. 자세한 사항은 아래 링크를 참고해주세요!


▶ 위키백과 바로 가기 
▶ 나무위키 바로 가기
 


SEED 방식을 사용하면 보안 이슈는 어느 정도 해결이 가능했어요. 하지만, 당시에 사용하고 있던 인터넷 브라우저들이 SEED 방식에 맞는 암호화 기능이 없었다는 것이 문제였습니다. 따라서 SEED 방식을 각 브라우저에 적용할 방법이 필요했지요. 그래서 SEED 방식 암호화 관련 기능을 브라우저(특히, Internet Explore)에 추가하기 위해 ActiveX를 사용하게 되었답니다. 암호화 관련 부분을 ActiveX로 처리하게 되자 보안 관련 부분도 점차 ActiveX를 사용하는 방식으로 흘러가게 되었어요. 대표적인 예로, 사용자 PC에서 키보드로 입력한 내용을 저장 혹은 유출하는 프로그램을 차단하는 기술이나 해킹용 프로그램을 확인해주는 PC 보안 프로그램 등이 빠르게 보급되었습니다. (참고로 이제는 브라우저에서도 강력한 보안을 지원하도록 업그레이드되었어요~)

 

ㅣ ActiveX 위험성과 한계 - 그리고 우리나라의 상황

 

모범답안으로 보이는 ActiveX, 하지만 이 역시 또 다른 위험성을 지니고 있습니다. 보안을 강화하기 위해서 보안을 약화하는 방법을 사용하는 아이러니가 발생한 것이지요. 게다가 ActiveX는 MS의 Windows에서 실행하는 Internet Explore에서만 작동하기 때문에 모바일 환경이나 리눅스와 같은 운영체제는 지원이 안 된다는 한계가 있었어요. 물론 우리나라의 경우 대부분 윈도우 기반의 Internet Explore를 사용하고 있었지만, 외국에서는 Mac이나 리눅스 같은 다른 환경에서도 브라우저를 많이 사용하기 때문에 이러한 호환성 문제는 꽤 타격이 컸습니다. 또한, 브라우저 자체의 보안 기능이 점차 업그레이드되면서 별도의 보안 기능을 사용하지 않아도 안정적인 환경이 구축되자 ActiveX를 사용하는 의미가 없어졌어요.  

 

그리하여, 국내에서는 Internet Explore에 설치되던 ActiveX 프로그램을 윈도우에서 실행하는 프로그램으로 변환하고, 윈도우 실행 파일인 'EXE' 방식을 도입했습니다. EXE는 ActiveX와 비교했을 때 기능적인 면에서 크게 달라진 점은 없어요. 오히려 예전에는 특정 웹 페이지에서만 작동하던 각종 보안 기능이, 이제는 언제 필요할지 모르기 때문에 사용자의 PC에서 항시 실행 중이어야 하는 구조로 바뀌었지요. ActiveX를 사용하지 않는 대신, 더 다운그레이드된 방식으로 변경되었다고 보시면 됩니다.

 

ㅣ 마지막으로


여러분, 지금은 IoT 시대입니다. 다양한 운영체제와 모바일, 가전, 자동차 등 거의 모든 사물에 인터넷이 연결돼요. 더 이상 윈도우 기반의 ActiveX만을 고집할 수 없는 환경이 온 것이지요. 그렇다면 ActiveX와 별반 다를 바가 없는 EXE 방식도 머지않아 사라질 것으로 예상해봅니다. 인터넷 기술이 발전하고 더욱 고도화된 기능을 수행할수록 강력한 보안이 요구된다는 것, 다들 동의하시지요? 변화되는 환경에 맞춰, 보안 전문가들이 열심히 개선안을 연구하신 덕에 보다 안전한 환경에서 인터넷을 즐길 수 있게 됐어요. 이번 기회에 감사한 마음 살포시 탑재해보며, 더 나은 개선안이 나올 때까지 응원하는 마음으로 기다립시다!

 

 

ㅣ 짧고 굵게 3줄 요약!

 

1. 인터넷 웹페이지는 책 등의 문서와 같은 개념에서 시작했다고 보시면 됩니다.

 

2. 인터넷의 기능이 계속 확장되면서 더욱 다양한 기능을 넣기 위해서 어쩔 수 없이 사용하게 된 것이 ActiveX이고, ActiveX를 없애는 척하면서 비슷하게 만든 것이 EXE 방식이라고 합니다.

 

3. ActiveX나 EXE 방식 모두 윈도우 Internet Explore에서만 작동하는 방식이기 때문에 다양한 환경을 지원해야 하는 웹에서는 점차 사라지는 분위기입니다. 더 나은 개선안이 나올 때까지 조금만 참고 기대해 보도록 합시다!