2020-10-27 22:05 (화)
[김승주 교수 칼럼] 해킹에 안전한 제품을 만들려면
상태바
[김승주 교수 칼럼] 해킹에 안전한 제품을 만들려면
  • 길민권 기자
  • 승인 2020.09.01 12:14
이 기사를 공유합니다

글로벌 표준에 맞는 보안내재화 보급 및 특화된 보안 개발인력 양성 시급
그림 1. 해외 보안내재화 표준 개발 및 도입 현황.
그림 1. 해외 보안내재화 표준 개발 및 도입 현황.

“제품을 안전(secure)하게 잘 만든다.”함은 쉽게 해킹 당하지 않도록 제품을 만든다는 것이요, 그것은 곧 취약점(vulnerability)이 없는 제품을 만든다는 뜻일 겁니다.

취약점에는 이미 ‘알려진 취약점(known vulnerability)’과 ‘알려지지 않은 취약점(unknown vulnerability 또는 zero-day vulnerability)’ 크게 두 종류가 있습니다. 아직 알려지지 않은 취약점, 즉 모르는 취약점에 대해서는 어쩔 수 없다 하더라도 이미 알려진 취약점들이 방치되는 것은 곤란하며, 이는 제품 개발 과정에서 반드시 제거되어야만 합니다. 제품의 설계 단계에서부터 일찌감치 보안을 고려함으로써 알려진 취약점을 조기에 효과적으로 제거할 수 있도록 하는 것을 우리는 ‘보안내재화(SbD: Security by Design)’라 부르며, 이를 체계적으로 수행할 수 있도록 하는 방법론을 ‘보안공학(security engineering)’ 또는 ‘소프트웨어 개발보안 라이프사이클(Secure SDLC: Secure Software Development Life Cycle)’이라고 합니다. 이러한 보안내재화의 개념은 최근 더욱 확장되어 개발 과정에서뿐만 아니라 제품 출시 후에도 ‘취약점 신고 포상제(bug bounty)’ 등의 적극적인 사후 관리를 통해, 개발 당시에는 몰랐던 취약점까지도 적시에 대응할 수 있도록 하고 있습니다.

미국 정부는 이미 1980년대 초부터 보안내재화의 중요성을 인식하여 군을 중심으로 이와 관련한 기반 기술을 마련함과 동시에 각종 표준을 제정하기 시작했으며, 민간에서는 2002년부터 최초로 마이크로소프트(MS)와 IBM이 이를 자사의 제품 개발 공정에 도입하기 시작했습니다. (보안내재화를 전체 개발 공정에 적용한 첫 번째 운영체제가 바로 윈도우XP의 후속작인 윈도우VISTA임.) 이후 보안내재화의 도입은 MS와 같은 소프트웨어 개발업체뿐만 아니라 뱅크오브아메리카(Bank of America)와 같은 금융권이나 볼보(Volvo) 같은 자동차업계로까지 확대돼 나갔으며, 2015년부터는 군에 도입되는 전산 시스템 외에 F-35, 드론 등과 같은 첨단 무기체계에까지도 적용되기 시작합니다.

(▷유엔유럽경제위원회(UNECE: United Nations Economic Commission for Europe)에서는 자동차에 대한 보안성을 확보하기 위해 현재 사이버보안 관련 규제를 준비 중에 있음. 이 새로운 규제에 따르면 일정 수준 이상의 보안내재화를 갖추지 못한 차량(신차 기준)은 2022년부터 유럽에 수출할 수 없게 됨.)

다행히 우리 정부도 보안내재화의 중요성을 인식해 2016년 12월26일에 <전자정부법> 제45조 제3항에 따른 <행정기관 및 공공기관 정보시스템 구축․운영 지침>을 개정하고, 이를 통해 소프트웨어 개발시 보안의 의무 적용 범위를 구현 단계에서 설계 단계까지로 확대합니다. 그런데 문제는 정부가 내놓은 지침상의 방법론이 글로벌 표준과 맞지 않으며, 나름 보안내재화를 잘하고 있다는 기업들조차도 해외 기업들과 많은 수준 차이를 보이고 있다는 것입니다.


제대로 된 보안내재화를 달성하기 위한 요건은 다음과 같다.

① 우선 현재까지 알려진 취약점 관련 정보들, 즉 CPE(Common Platform Enumeration), CVE(Common Vulnerabilities and Exposures), CVSS(Common Vulnerability Scoring System) 및 각종 논문들에서 발표된 취약점 관련 최신 정보들을 잘 수집해 데이터베이스화 해 놓는 것이 중요합니다. 이러한 데이터베이스를 ‘공격 라이브러리(attack library)’라고 합니다.

② 공격 라이브러리가 완성되면 만들고자 하는 제품을 추상화시켜 표현합니다. 이렇게 추상화시켜 표현한 결과물을 ‘모델(model)’이라고 합니다. 여기서 ‘추상화(abstraction)’라 함은 설계도상에서 (취약점) 분석과 관련된 필수 정보만을 남기고 나머지는 제거하는 것으로서, 이를 통해 분석의 집중성과 효율성을 향상시킬 수 있습니다. 물론 이러한 추상화에도 원칙이 있습니다.

바로 ‘건전성(soundness)’ 조건을 유지하는 것입니다. 건전성은 “모델에서 발생하지 않는 것으로 판명된 취약점은 실제 제품상에서도 발생하지 않음”을 뜻하는 것으로, 실제 대상(target)과 추상화 된 모델사이의 차이(일명, ‘abstraction gap’)가 적으면 적을수록 건전성이 충족될 확률은 올라갑니다. 예를 들어 샌프란시스코에서 로스엔젤리스까지 가는 최단 경로를 검색한다고 가정해보겠습니다. (그림 2 참조)

이때 우리는 맨 왼쪽의 위성사진을 토대로 경로를 탐색하지는 않습니다. 도로 교통정보 외에 너무나도 많은 정보가 함께 있어 분석을 방해하기 때문입니다. 위성사진에서 경로 탐색에 필요한 정보만을 추려낸 즉, 추상화한 것이 바로 우리가 네비게이터 등에서 흔히 볼 수 있는 가운데 있는 지도입니다. 만일 추상화가 잘 진행되었다면 추상화 된 지도상에서 예측된 시간이나 실제 걸린 시간이 유사할 것입니다. 이를 건전성이라고 합니다.

그림 2. 추상화 예시 (출처: Aaron Tomb, "Assuring Crypto Code with Automated Reasoning", 2017)
그림 2. 추상화 예시 (출처: Aaron Tomb, "Assuring Crypto Code with Automated Reasoning", 2017)

이러한 추상화에는 다양한 기법이 사용될 수 있겠으나, 가장 널리 활용되는 도구는 1967년에 Larry Constantine이 제안한 ‘데이터 흐름도(DFD: Data Flow Diagram)’입니다. DFD는 시스템 구성요소인 프로세스와 프로세스 간 데이터의 흐름을 일목요연하게 표현할 수 있기 때문에 데이터 보호가 목표인 보안 분야에서 취약점을 분석하는데 매우 효과적으로 이용될 수 있습니다.

그림 3. 드론의 DFD 예시.
그림 3. 드론의 DFD 예시.

③ DFD가 완성되면 단계 ①에서 구축해 놓은 공격 라이브러리를 바탕으로 공격 벡터(attack vector), 즉 DFD상의 각 구성요소(그림 3)에서 흰색 동그라미 또는 네모, 화살표 선으로 표시된 것들)별로 취약점을 도출합니다. 이때 공격자의 관점에서 취약점을 조금 더 쉽게 찾아낼 수 있도록 도와주는 도구가 바로 STRIDE, LINDDUN 등의 도구입니다. STRIDE는 MS의 Loren Kohnfelder와 Praerit Garg가 1999년에 제안한 개념으로, MS에서는 2002년부터 이를 제품 개발에 본격적으로 활용하기 시작합니다. 재미난 것은 Loren Kohnfelder는 1978년에 ‘공개키 인증서(public-key certificate)’란 개념을 최초로 만든 인물이기도 하다는 사실입니다. 그것도 MIT 학부 졸업 논문에서 말입니다.

④ 이렇게 구성요소별로 도출된 취약점들은 시스템(위의 예에서는 드론)을 공격하는데 직․간접적으로 활용될 수도 있고 활용되지 않을 수도 있습니다. 각 취약점들이 시스템 공격에 실제 활용되는지 여부를 파악하기 위해 브루스 슈나이어(Bruce Schneier) 하버드대 교수가 제안한 공격 트리(attack tree) 방법론을 이용할 수 있습니다. 공격 트리를 이용하면 시스템의 각 자산에 대한 다양한 공격 시나리오를 체계적으로 도출할 수 있게 됩니다.

⑤ 공격 시나리오가 도출되면 각 시나리오별로 ‘위험도(risk)’를 산정하게 됩니다. 모든 공격을 한 번에 다 막을 수 있으면 좋겠으나 조직에는 허용된 예산과 시간이 정해져 있습니다. 이에 우선순위를 결정하는 것은 매우 중요하며 이를 위해 위험도 분석(risk analysis)을 수행합니다.

⑥ 이제 우선순위에 따라 보안대책을 세웁니다. 이때 개발자는 다음 4가지 방법 중 하나를 선택할 수 있습니다. ▲Risk Avoid=그냥 해당 사업을 접는 것, ▲Risk Accept=그냥 그 위험을 안고 가는 것. 문제가 생기면 본인이 직접 배상, ▲Risk Transfer=‘보험을 통한 배상’ 등 제3자에게 사고 대응에 대한 책임을 넘기는 것, ▲Risk Mitigate=기술적으로 해당 위협에 대응하는 것. 만일 해당 위협을 기술적인 방식으로 해결하고자 결론 내렸다면, 어떤 방법을 쓸 것인지 결정 한 후 다시 ②번으로 돌아가 해당 기술이 또 다른 보안 위협을 야기하지는 않는지 점검합니다.

⑦ ①번부터 ⑥번까지의 과정을 거쳐 설계가 마무리 됐으면 구현에 들어갑니다. 구현 과정에 있어 가장 중요한 것은 보안대책들이 빠짐없이 제대로 구현됐느냐 여부일 것입니다. 이를 위해 일반적으로 시큐어코딩(secure coding) 및 정적분석(SAST: Static Application Security Testing), 동적분석(DAST: Dynamic Application Security Testing) 등의 방법을 활용할 수 있습니다.

대략 여기까지의 과정이 완료됐을 때 우리는 해당 제품이 보안내재화 방법론에 따라 개발됐다고 얘기합니다. 이때 중요한 것은 다음 단계로 넘어가기 위해서는 현재 단계의 완전성(completeness)이 입증돼야만 가능하다는 것입니다. 이것을 ‘Shift-Left Testing’이라고 하며, 바로 이 Shift-Left Testing을 통해 우리는 제품의 문제를 조기에 발견할 수 있게 되며, 조직 내 보안팀에 걸리는 테스트 업무의 과부하를 개발팀 전체로 분산시킬 수 있게 됩니다.

또 하나 우리가 유의해야 할 점은 개발 공정 전체에 걸쳐 ‘추적성(traceability)’을 확보해야 한다는 것입니다. 추적성이 중요한 이유는 식별된 취약점에 대응하는 각각의 보안 요구사항들이 정확히 설계․구현되고 있는지를 알기 위해서이며, 또한 출시 후 제품에 문제가 발생했을 때 단순히 해당 제품의 보안 패치에만 그치는 것이 아니라 요구사항 분석–설계–구현-테스트로 이어지는 개발 공정상에서 어디에 문제점이 있었는지 식별하고 이를 근본적으로 개선해나가기 위함입니다. 이러한 추적성을 확보하기 위해서 기업에서는 일반적으로 ‘추적성 매트릭스(traceability matrix)’라는 것을 활용합니다.


이제 보안내재화의 진정한 의미가 약간이나마 이해가 되셨나요? 앞서 말씀드렸듯 미국 정부는 이미 1980년대 초반부터 보안내재화의 중요성을 인식하기 시작했으며, 이의 보급을 위해 TCSEC(Trusted Computer System Evaluation Criteria) 및 CC(Common Criteria), CMVP(Cryptographic Module Validation Program)와 RMF A&A(Risk Management Framework Assessment and Authorization)와 같은 각종 보안성 평가․인증 제도들을 적극 활용해 오고 있습니다.

사실 우리가 단순히 제품의 안전성을 따지는 것으로만 알고 있는 보안성 평가․인증 제도는 실제로는 해당 제품이 소프트웨어 개발보안 라이프사이클을 충실히 따랐는지 여부를 심사하는 것이며, 보안 등급이 높다는 것은 ①번부터 ⑦번에 이르는 각 단계별 완전성이 수학적으로 엄밀히 증명되었다는 것을 뜻합니다. 이를 소위 ‘정형 명세 및 검증(formal specification & verification)’이라고 하며, CC의 경우 EAL5(Evaluation Assurance Level 5) 이상의 등급부터 이를 요구하고 있습니다.

더욱이 최근에는 AI기술이 발달함에 따라 프로그램 코드의 정적․동적 분석뿐만이 아니라 공격 트리 구성 및 설계․구현의 정형 검증에 이르기까지 다양한 제품 개발 단계에서 AI기술을 통한 자동화가 추진되고 있고, 이와 관련한 혁신적인 결과들이 유명 학회에서 연이어 발표되고 있습니다.

4차 산업혁명 시대에는 사람과 사물, 공간 등이 인터넷을 매개로 물샐틈없이 연결돼 정보의 생성과 수집, 공유와 활용이 매순간 이뤄지는 ‘초연결사회’(hyper-connected society)로 진화할

필자. 김승주 고려대 교수
필자. 김승주 고려대 교수

것이며, 코로나19 사태 이후 이러한 변화는 더욱 가속화 될 것입니다. 이는 곧 디지털 시스템에 대한 국민들의 의존도를 높이게 되므로, 네트워크와 연결된 IoT 기기들이 해킹이나 장애 없이 의도한 대로 본래의 기능을 잘 수행할 수 있도록 유지하는 것은 국가적으로 매우 중차대한 일이 됩니다. 이에 앞으로 보안내재화의 중요성은 더욱 높아질 것이며, 그 적용 범위 또한 확대될 것임은 너무도 자명한 일입니다. 이제는 우리 정부도 구호만인 보안내재화, 취약점 분석가 일변도인 보안인력 양성이 아니라, 글로벌 표준에 맞는 제대로 된 보안내재화 보급 및 우수한 제품 개발에 특화된 양질의 보안 개발인력 양성에 보다 더 관심을 기울여야 하겠습니다.

[글. 김승주 고려대학교 정보보호대학원 교수]

★정보보안 대표 미디어 데일리시큐!★