[ 도라 이브 저자 와 의 대화 ] ‘ 직접 설계 하 고 개발 하 는 IoT 백신 ’ 의 이창우 저자 – 테크 수다 
 페이스북 생 중계 방송 ‘ 도 라이브 ( Do Live ) ’ 를 만들 며 2016 년 2 월 2 일 다시 시작 하 며 2013 년 5 월 8 일 Home / CULTURE / Book / [ 도라 이브 저자 와 의 대화 ] ‘ 직접 설계 하 고 개발 하 는 IoT 백신 ’ 의 이창우 저자 
 펀 집 국 2017 년 5 월 17 일 	 Book , InterviewLive , Live , Video 
 “ 책 이 단 한 권 도 없 는데 , 어디 서 배우 나요 . 어떻게 개발 해야 할지 모르 겠 어요 . ” 
 그 한마디 에 펜 을 들 고 써내려갔 던 책 이 마침내 나왔 다 . 이창우 저자 의 첫 책 < 직접 설계 하 고 개발 하 는 IoT 백신 > 다 . 내놓 기 만 하 면 날개 달린 듯 팔리 는 ‘ 인공지능 ’ 이 아니 라 속 댓 말 로 돈 이 안 되 출판사 마다 마다 하 는 보안 , 그것 도 ‘ 백신 ’ 으로 삼 은 것 은 후배 의 이 말 한마디 때문 이 었 다 . 누구 도 가 지 않 은 길 을 택한 것 은 그저 뒤따라올 이 들 을 위해서 였 다 . 사물 인터넷 ( IoT ) 과 백신 을 엮 은 것 도 주류 에 편승 하 겠 단 얄팍 한 속셈 에서 가 아니 라 , 최소한 의 자원 만 허용 되 는 IoT 장치 가 백신 개발 을 설명 하 기 가장 좋 아서 라고 . 
 이창우 이창우 
 보안 기업 안랩 ( AhnLab ) 에서 10 년 동안 PC 용 V 3 방화벽 과 침입 차단 시스템 엔진 , 웹 보안 솔루션 을 개발 했 다 . 이후 삼성전자 에서 SDL ( Security Development Lifecycle ) 적용 하 고 스마트 TV 보안 강화 와 임베디드 보안 프레임워크 를 설계 했 다 . 현재 는 삼성 스마트 TV 통합 보안 솔루션 인 ‘ 스마트 시큐리티 ’ 를 담당 하 며 임베디드 백신 , 코드 서명 , 방화벽 을 개발 하 고 있 다 . 
 Q . IoT 에서 보안 이 왜 중요 한 거 죠 
 IoT 시대 는 PC 뿐 아니 라 작 은 사물 들 조차 도 인터넷 에 연결 되 는 시대 를 말 합니다 . 4 차 산업 혁명 을 이야기 할 때 빼놓 을 수 없 는 주제 죠 . 그런데 우리 는 이미 IoT 시대 를 살 고 있 습니다 . 지하철 버스 요금 단말기 , 편의점 PoS 시스템 , ATM 기기 , 도서관 대출 시스템 등 주위 를 둘러보 면 이미 많 은 기기 가 인터넷 에 연결 되 어 있 습니다 . 불과 몇 일 전 에 도 랜섬 웨어 가 사회 적 이슈 였 죠 . 뉴스 에서 PC 를 네트워크 에서 분리 하 는 이야기 를 들 었 을 겁니다 . PC 조 차 도 인터넷 연결 로 인해 보 안 사고 가 일어나 는데 , 대부분 사물 이 인터넷 에 연결 된다면 보 안 사고 의 피해 규모 는 우리 의 상상 을 초월 할 것 입니다 . 결국 IoT 시대 에 는 보안 이 중요 할 수 밖에 없 습니다 . 
 Q . 이미 시장 에 유명 한 백신 을 IoT 에 적용 하 면 안 되 나요 ? 
 PC 버전 의 백신 을 그대로 탑재 하 면 두 가지 문제 가 발생 합니다 . IoT 장치 는 하드웨어 성능 이 낮 아 상용 백신 과 같이 기능 이 많 은 백신 을 그대로 탑재 하 기 는 어렵 습니다 . 또한 IoT 장치 는 플랫 폼 이 다양 하 지만 , 상용 보안 솔루션 이 동작 하 는 플랫 폼 은 한정 적 입니다 . 따라서 상용 보안 솔루션 을 IoT 장치 에 넣 을려면 많 은 비용 이 듭니다 . 결국 성능 과 비용 을 생각 하 면 IoT 장치 에 꼭 맞 는 보안 기능 을 직접 개발 할 수 밖에 없 습니다 . 이때 백신 의 기본 구조 는 IoT 보안 솔루션 개발 에 좋 은 참고 자료 가 될 것 입니다 . 
 백신 의 기본 구조 는 이렇 습니다 . 중앙 서버 에서 규칙 을 배포 하 고 장치 에서 는 그 규칙 을 수신 하 고 장치 의 행위 를 감시 하 다가 규칙 에 위반 되 는 것 이 있 으면 차단 하 는 구조 입니다 . 그런데 이런 백신 의 기본 구조 는 다른 대부분 의 보안 솔루션 에 도 응용 되 었 습니다 . 방화벽 , 침입 차단 시스템 , MDM 들 도 모두 같 은 구조 를 가지 고 있 죠 . 한마디 로 IoT 보안 솔루션 을 기획 하 거나 설계 할 때 백신 의 전체 구조 는 좋 은 참고 자료 이 자 시발점 인 것 입니다 . 
 Q . IoT 백신 은 PC 용 백신 과 무엇 이 다른가요 ? 
 성능 과 비용 차이 도 있 지만 결정 적 차이 는 바로 사용 자 관점 입니다 . 사용자 입장 에서 PC 와 IoT 를 살펴보 죠 . PC 에 는 모니터 와 스피커 , 키보드 , 마우스 와 같 은 입출력 장치 가 있 습니다 . 이런 PC 에서 바이러스 를 발견 하 면 사용 자 에게 바이러스 를 경고 하 고 자세 한 정보 를 보여 줍니다 . 그것 을 삭제 할지 무시 할지 묻 죠 . 
 IoT 의 경우 는 어떨까 요 ? 혹시 아마존 에서 만든 대시 버튼 을 아 시 나요 ? 세탁기 옆 에 붙여 두 고 세제 가 떨어지 면 버튼 만 누르 면 세제 가 배송 되 는 작 은 IoT 장치 입니다 . 이 처럼 대부분 IoT 입출력 장치 는 열악 합니다 . 적 은 수 의 버튼 이나 스피커 , LED 정도 가 달렸 을 뿐 입니다 . 이런 장치 에서 사용자 와 교감 하 는 UI 를 구성 해야 하 는데요 . 이런 걸 Zero UI 라고 말 합니다 . 
 IoT 보안 솔루션 도 이러 한 Zero UI 에 맞 게 설계 돼야 합니다 . 예 를 들 어 바이러스 를 발견 했 다면 어떻게 해야 할까요 ? 마우스 같 은 입력 장치 가 없 으니 사용 자 가 차단 을 선택 하 도록 유도 할 수 없 습니다 . 그래서 IoT 백신 은 사용 자 선택 이 필요 없 는 완벽 하 고 정교 한 차단 기준 을 가져야 합니다 . 또한 사용 자 가 IoT 앞 에 상주 하 는 것 이 아니 기 때문 에 나중 에 차단 여부 를 확인 하 고 싶 어도 LED 만 있 는 경우 에 는 그것 조차 어렵 습니다 . 따라서 차단 결과 를 수집 하 고 관리 하 는 백 엔드 인프라 시스템 도 IoT 백신 에 는 반드시 필요 합니다 . 
 Q . < 직접 설계 하 고 개발 하 는 IoT 백신 > 을 집필 하 게 된 동기 는 무엇 입니까 ? 
 백신 개발 은 꽤 어려워 보 입니다 . 더 군다 가 IoT 용 백신 이 라고 하 니 더 어려워 보일 수 밖에 요 . IoT 보안 은 개발자 들 이 직접 개발 할 수 밖에 없 습니다 . 그런데 신입 사원 들 에게 물 어 보 면 보 안 솔루션 개발 에 참고 할 만 한 책 이 없 다고 합니다 . 대부분 의 보안 서적 들 이 해킹 이나 암호 화 에 대해서 만 다루 다 보 니 보 안 솔루션 개발 에 참고 할 만 한 책 이 없 다는 겁니다 . 백신 의 기본 구조 가 보안 솔루션 의 기초 가 되 기 때문 에 이러 한 책 이 한 권 쯤 은 있 어야 할 것 같 았 습니다 . 
 Q . 책 을 소개 해 주 세요 . 
 대부분 의 기술 서 들 이 이미 작성 된 코드 를 설명 하 는 식 으로 구성 되 어 있 습니다 . 같 은 목적 을 가지 는 코드 도 작성자 마다 다를 수 밖에 없 기 때문 에 독자 입장 에서 는 어려울 수 밖에 없 습니다 . 그래서 제 가 생각 한 해결책 은 백신 개발 과정 을 스토리 를 구성 하 는 것 이 었 습니다 . 이 책 은 한 대학생 이 소프트웨어 공모전 에 IoT 백신 을 출품 하 기 위해 개발 하 는 과정 을 그리 고 있 습니다 . 독자 는 책 을 읽 으면서 요구사항 을 분석 하 고 이걸 토대 로 설계 도 해 보 고 설계서 를 바탕 으로 코드 를 작성 하 며 자연 스럽 게 백신 의 기본 구조 를 익히 고 어느덧 자신 만 의 백신 을 만들 게 됩니다 . 
 다른 사람 이 어렵 다고 생각 하 는 걸 자신 이 할 수 있 다면 그 만큼 자신 의 가치 가 높 아 지 는 거 아닐까요 ? 독자 에게 보안 솔루션 개발자 로서 의 꿈 과 희망 을 드리 고자 이 책 을 썼 습니다 . 
 Q . 독자 는 누구 입니까 ? 
 이 책 에 등장 하 는 대학생 정도 의 실력 이 면 충분 합니다 . 조금 더 넓 게 보 면 , 고등학생 부터 사회 초년생 까지 를 독자 층 으로 생각 하 고 있 습니다 . C 언어 로 간단 한 네트워크 프로그래밍 을 해 봤 고 , 리눅스 를 다뤄 봤 으며 UML 이 무엇 인지 알 고 있 는 사람 이 라면 이 책 을 충분히 읽 을 수 있 습니다 . 
 Q . 어떤 점 에 주안점 을 두 고 집필 하 셨 나요 
 이 책 의 주제 는 실용 적 인 소프트웨어 설계 방법론 입니다 . 그래서 제목 에 ‘ 직접 설계 하 고 개발 하 는 ’ 이 라는 수식어 를 붙였 습니다 . 이 책 은 가상 의 대학생 을 중심 으로 한 스토리 로 구성 돼 있 는데요 . 이 책 의 주인공 은 한 번 도 백신 을 개발 해 보 지 않 은 인물 입니다 . 이 주인공 이 백신 요구 사항 만 주어져 있 는 상태 에서 자신 이 백신 을 직접 설계 하 고 개발 할 수 있 는 이유 는 바로 이 책 의 특징 인 UML 실용 설계 덕분 입니다 . 
 Q . UML 실용 설계 가 무엇 인지 조금 더 자세히 설명 해 주 세요 
 그런 이야기 들 어 보 셨 나요 ? 요구사항 , 설계서 , 코드 따로 논다는 … 대부분 개발자 들 이 요구 사항 이 아닌 경험 을 바탕 으로 설계 를 하 고 있 습니다 . 예 를 들 어서 명함 정보 를 파일 로 저장 해 달 라는 요구사항 을 받 았 습니다 . 그럼 개발자 는 설계 하 면서 파일 클래스 를 일단 작성 하 고 시작 합니다 . 그 클래스 에 save 라는 메서 드 를 추가 하 겠 죠 . 그 다음 에 는 명함 클래스 를 추가 합니다 . 그리고 이 두 개 를 어떻게 연관 시킬지 , 어떤 디자인 패턴 을 적용 할지 고민 합니다 . 시간 이 지날수록 설계 는 복잡 해 지 고 설계대 로 만들 어 진 코드 는 요구사항 과 는 상관없 는 코드 가 만들 어 집니다 . 
 이렇게 비대 해진 코드 의 사용 성 을 보 면 20 % 도 사용 되 지 않 습니다 . 코드 가 비대 하 다는 것 은 그만큼 성능 에 도 문제 가 있 다는 것 이 고 , 유지 보수 비용 도 많이 들 고 심지어 보안 취약점 도 많 을 수 밖에 없 습니다 . 
 결국 요구사항 을 만족 하 면서 도 간결 한 코드 를 작성 해야 합니다 . 다시 말 해 소프트웨어 개발 은 요구사항 에서 시작 해서 요구사항 으로 끝나 야 합니다 . 흔히 설계서 를 유지 보수 하 기 위한 문서 라고 생각 하 는데요 . 설계서 는 요구사항 과 코드 사이 의 연결 고리 입니다 . 예 를 들 어 어떤 함수 를 설계 했 다면 왜 그런 함수 를 도출 했 는지 , 그 근거 를 표현 해야 합니다 . 그 방법 이 바로 UML 실용 설계 입니다 . 
 UML 실용 설계 는 제 가 15 년 동안 개발자 로 활동 하 면서 만든 설계 방법 인데요 . 소비자 가 원 하 는 요구사항 을 분석 하 고 분석 된 걸 다시 동적 관점 에서 정적 관점 에서 공통점 을 추출 해서 함수 를 만들 고 이렇게 도출 된 함수 들 을 보안 성 과 관리 효율 기준 에 의해 컴포넌트 로 모으 고 이 내용 을 그대로 코드 로 구현 하 면 됩니다 . 결국 요구사항 부터 컴포넌트 까지 연결 된 하나 의 다이어그램 을 만들 수 있 게 됩니다 . 저 는 이걸 UML 전체 흐름 도 라고 부릅니다 ( http : / / www . schoolime . com / securityschool / download / ko - iot - antivirus - c 2 - requirement - uml - total - flow / ) . 이렇게 하 면 요구사항 과 상관없 는 함수 들 이 존재 하 지 않 기 때문 에 최소한 의 코드 로 모든 요구사항 을 만족 할 수 있 습니다 . 코드 가 간결 하 기 때문 에 성능 은 좋 고 버그 도 적 으며 유지 보수 비용 도 적 게 들 고 보 안 취약점 도 적 게 됩니다 . 
 정리 하 면 UML 실용 설계 는 요구사항 을 분석 해서 필요 한 요소 들 을 도출 합니다 . 따라서 백신 경험 이 없 는 주인공 도 백신 요구 사항 만 으로 자신 이 직접 설계 하 고 백신 을 개발 할 수 있 었 습니다 . 백신 뿐 아니 라 처음 경험 하 는 소프트웨어 를 개발 할 때 도 UML 실용 설계 를 사용 할 수 있 습니다 . [ 테크 수다 Techsuda ] 
 태그 IoT IoT 백신 도라 이브 이창우 한빛 미디어