국가차원 SW 안전체계 만들자

  • 김진형 제1대 소장 (2013.12. ~ 2016.07.)
날짜2015.03.20
조회수9420
글자크기
    • 소프트웨어정책연구소 소장 김진형
    • “당신의 소프트웨어는 안전한가요?”라는 질문을 던지면 대부분은 해킹이나, 피싱이나 바이러스 등을 떠올리게 될 것이다. 물론 인터넷에서의 정보보호도 중요하지만 이것들이 우리의 생명을 직접 위협하지는 않는다. 더 위험한 것은 사회 기간 시스템이 소프트웨어의 오작동으로 안전사고를 일으킬 수 있다는 것이다.
    • 많은 국민이 소프트웨어를 자주 사용한다. 왜냐하면 철도, 항공, 자동차, 발전소, 의료기기, 무기체계, 항만시스템 등에는 소프트웨어가 내장되어 있기 때문이다. 즉, 기능이 소프트웨어로 구현된 부품이 사용되거나 소프트웨어로 제어된다. 고급 자동차에는 천만 줄, 보잉787 항공기에는 1,400만 줄, F35 전투기에는 2,400만 줄의 소스코드가 사용되고 있다.
    • 시스템의 기능은 HW로 모두 구현할 수도 있고 범용 컴퓨터에 소프트웨어로 구현할 수도 있지만 기능이 복잡하면 HW 구현은 거의 불가능하다. 소프트웨어 구현만이 유일한 대안이 된다. 이러한 이유 때문에 사회 기간 시스템에는 소프트웨어가 내장된 부품이 많이 사용된다. 따라서 우리들은 알게 모르게 소프트웨어를 자주 사용하게 되는 것이다.
    • 이런 시스템에서의 소프트웨어 오작동은 치명적인 안전사고를 유발할 수 있다. 소프트웨어 오작동은 여러가지 원인이 있다. 설계나 구현 시 개발자의 오류일 수도 있고, 극한 상황에서 메모리의 내용이 변경됐을 수도 있다. 겹겹이 안전장치를 설치하여 어떠한 경우에도 안전하도록 보장해야 한다. 물론 시스템이 복잡하면 100% 안전을 요구하는 것은 현실적이지 않다. 통상적으로 사회가 받아드릴 수 있도록 충분히 안전한 시스템 구축을 목표로 한다. 유형에 따라 작은 오류는 용인한다는 식의 사회적 합의에 따른다.
    • 우리가 사용하는 소프트웨어는 안전한가? 1998년 미국 대통령 IT 자문위원회에서는 ‘미국이 잘 깨지는 소프트웨어, 즉 안전하지 않은 소프트웨어 위에 의지하고 있다’고 지적했다. 이러한 지적은 여러 안전사고의 원인이 소프트웨어 오류임이 증명되면서 사실임이 확인됐다.
    • 96년 우주선이 단순 프로그래밍 실수로 발사 40초 만에 폭발했고, 2003년 미 동북지역의 대정전 사고는 전력망 감시·제어 소프트웨어의 오류로 판명이 났다. 아직도 논란이 있는 것은 도요타 자동차의 급발진사고 원인이다. 소송 중에 급발진 상태를 재현하여 소프트웨어 오류가 원인일 수 있다는 것은 확인했지만, 그 사고 차량이 그 상황이었음을 증명하지는 못했다. 이 상황에서 도요타는 판결 전 합의로 소송을 종결했고, 미국 법무부에서 부과한 사상 최대 1조 3,000억 원의 벌금을 납부하는 것으로 관련 수사를 종결하는 것에 합의했다.
    • 대한민국 소프트웨어는 충분히 안전한가요? 그 답은 ‘모르겠다’는 것이 양심적일 것이다. 우리의 소프트웨어 안전 의식은 바닥 수준이다. 수입하는 무기체계, 의료기기의 경우 탑재되는 소프트웨어의 소스코드도 확보 못한 것이 많다. 서울지하철 2호선 상왕십리역에서 뒤따르던 열차가 앞차를 추돌하는 사고가 발생했다. 제어 시스템은 상당 부분이 소프트웨어로 구현되었으나 사고원인 조사단에 소프트웨어 전문가는 한 명도 포함되지 않았다. 이것이 우리의 수준이다.
    • 최근 소프트웨어코딩 실수로 현대자동차 만여 대를 리콜했다. 우리가 만든 KTX 산천과 지하철 스크린 도어를 수출하려니 탑재된 소프트웨어가 안전하다는 것을 인증받아 오라고 한다. 인증 능력 있는 우리 기업은 없는데 외국 회사들은 고액을 요구한다. 이제야 우리 기업들이 소프트웨어 안전 투자의 필요성을 느끼고 있을 것이다.
    • 소프트웨어에의 의존도가 높아지면서 소프트웨어의 안전이 사회의 안전이 됐다. 국가 차원에서 소프트웨어 안전 진흥체계를 구축하여야 한다. 체계구축의 장기적 목표는 우리의 소프트웨어 안전 산업육성에 두어야 한다. 안전한 소프트웨어를 만들 수 있는 전문기업과 국제적으로 인정받는 인증기관도 키워야 한다. 또 소프트웨어 안전 기술의 연구개발도 필요하다. 소프트웨어 안전공학 엔지니어의 양성도 시급하다. 사회 기간 시스템의 소프트웨어 안전 점검의 의무화 등 법·제도도 정비해야 한다. 이런 과업을 추진할 컨트롤 타워가 필요하다,
    • 이러한 노력은 건전한 소프트웨어산업 생태계 구축과 전문가 대접이 병행돼야 한다. 합당한 정규교육과 경험을 쌓은 소프트웨어 엔지니어만이 안전한 소프트웨어를 생산할 수 있다는 것을 인정해야 한다. 국민은 안전한 사회에서 살고 싶어 한다. 안전을 위한 소프트웨어, 또 소프트웨어의 안전에 정책 집중을 촉구한다. 비용이 들어간다면 이를 국민에게 설득해야 할 것이다. 안전은 공짜로 얻어지지 않는다.
    • 본 칼럼은 디지털타임스 3월 9일자 1면 [이슈와 전망]에 게재된 글입니다.