고장과 공격은 작동 원리의 틈에서 생긴다
컴퓨터 보안은 특별한 마법이 아니다. 앞에서 배운 CPU, 메모리, 저장장치, 운영체제, 네트워크의 원리를 안전하게 관리하는 일이다. 프로그램은 명령을 순서대로 실행하고, 메모리에 데이터를 올리며, 파일을 읽고 쓰고, 네트워크로 다른 컴퓨터와 통신한다. 이 흐름 중 어디에서든 실수나 악의적인 조작이 들어오면 오류와 공격이 발생한다.
신뢰성은 컴퓨터가 예상한 대로 계속 동작하는 능력이다. 보안은 허락되지 않은 사용과 변경을 막는 능력이다. 둘은 다르지만 연결되어 있다. 고장 난 시스템은 보안에 약해지고, 공격받은 시스템은 신뢰할 수 없어진다.

버그, 예외, 충돌
버그는 프로그램이 작성자의 의도와 다르게 동작하는 문제다. 예를 들어 계산식이 틀렸거나, 없는 파일을 읽으려 하거나, 배열의 범위를 벗어난 위치에 접근할 수 있다. CPU는 명령을 그대로 실행할 뿐이므로, 잘못된 명령 흐름도 일단 실행하려고 한다.
운영체제는 위험한 상황을 감지하면 예외를 발생시킨다. 예외는 "이 명령을 계속 실행하면 안 된다"는 신호다. 프로그램이 사용할 수 없는 메모리 주소에 접근하면 운영체제가 실행을 중단시킬 수 있다. 우리가 보는 "프로그램이 종료되었습니다" 같은 충돌은 대개 이런 보호 장치가 작동한 결과다.
특히 메모리 사용은 많은 문제의 출발점이다. 필요한 공간보다 더 많이 쓰거나, 이미 해제한 공간을 다시 사용하거나, 초기화하지 않은 값을 읽으면 프로그램은 예측하기 어려운 상태가 된다. 그래서 현대 운영체제와 언어는 메모리 접근을 제한하고, 위험한 실행을 가능한 한 빨리 막으려 한다.
악성 코드는 어떻게 시스템을 흔드는가
악성 코드는 사용자의 의도와 다르게 동작하도록 만든 프로그램이다. 실행 파일처럼 설치될 수도 있고, 문서나 스크립트에 숨어 실행될 수도 있으며, 네트워크를 통해 다른 컴퓨터로 퍼질 수도 있다.
악성 코드가 큰 피해를 주는 이유는 권한 때문이다. 프로그램은 실행될 때 사용자나 시스템으로부터 일정한 권한을 받는다. 파일을 읽고 쓸 권한, 네트워크에 접속할 권한, 다른 프로그램을 실행할 권한이 있다. 악성 코드는 이 권한을 이용해 데이터를 훔치거나, 파일을 암호화해 사용할 수 없게 만들거나, 다른 시스템을 공격하는 데 컴퓨터를 이용할 수 있다.
그래서 운영체제는 권한을 나누어 관리한다. 일반 사용자가 할 수 있는 일과 관리자만 할 수 있는 일을 구분한다. 프로그램마다 접근 가능한 파일과 장치를 제한하기도 한다. 보안의 기본은 "필요한 권한만 주는 것"이다. 권한이 작을수록 문제가 생겨도 피해 범위가 줄어든다.
암호화와 해시가 지키는 것
암호화는 데이터를 알아볼 수 없는 형태로 바꾸는 기술이다. 올바른 열쇠를 가진 사람만 다시 원래 내용으로 되돌릴 수 있다. 덕분에 네트워크 중간에서 데이터가 가로채이더라도 내용을 쉽게 읽을 수 없다. 이것이 기밀성이다.
해시는 데이터를 짧은 값으로 요약하는 방법이다. 같은 데이터는 같은 해시값을 만들지만, 데이터가 조금만 바뀌어도 해시값은 크게 달라진다. 그래서 파일이 전송 중에 바뀌었는지, 저장된 비밀번호가 입력값과 일치하는지 확인하는 데 쓰인다. 이것이 무결성 확인의 기본이다.
인증은 "상대가 정말 그 상대인가"를 확인하는 과정이다. 비밀번호, 인증서, 서명 같은 방법이 여기에 들어간다. 보안 통신은 보통 암호화로 내용을 숨기고, 해시로 변조를 확인하며, 인증으로 상대를 확인한다.
데이터 손실을 막는 백업과 중복
저장장치는 영구적인 것처럼 보이지만 언제든 고장 날 수 있다. 사용자가 실수로 파일을 지울 수도 있고, 악성 코드가 데이터를 망가뜨릴 수도 있다. 그래서 중요한 데이터는 한 곳에만 두면 안 된다.
백업은 데이터를 별도의 위치에 복사해 두는 일이다. 같은 컴퓨터 안의 다른 폴더에 복사하는 것보다, 외장 저장장치나 다른 서버처럼 분리된 위치에 보관하는 편이 안전하다. 문제가 생겼을 때 백업에서 복원할 수 있어야 백업의 의미가 있다.
중복 저장은 같은 데이터를 여러 장치에 나누어 보관해 한 장치가 고장 나도 서비스를 계속하게 하는 방법이다. 서버와 데이터 센터에서는 이런 방식을 자주 사용한다. 백업은 과거 상태로 되돌리는 힘이고, 중복은 현재 동작을 계속 유지하는 힘이다.
업데이트는 결함을 줄이는 수리 과정이다
소프트웨어는 사람이 만든다. 따라서 결함이 들어갈 수 있다. 어떤 결함은 단순한 오류로 끝나지만, 어떤 결함은 공격자가 시스템에 침입하는 통로가 된다. 이런 결함을 보안 취약점이라고 한다.
업데이트는 기능을 추가하는 일만이 아니다. 발견된 버그를 고치고, 위험한 동작을 막고, 공격에 사용될 수 있는 약점을 줄이는 과정이다. 운영체제, 브라우저, 앱, 장치 드라이버를 최신 상태로 유지해야 하는 이유가 여기에 있다.
컴퓨터의 원리를 이해하면 보안도 더 분명해진다. 프로그램은 명령의 흐름에서 잘못될 수 있고, 메모리는 잘못된 접근으로 흔들릴 수 있으며, 파일과 네트워크는 악성 코드의 통로가 될 수 있다. 좋은 시스템은 이 위험을 완전히 없애기보다, 발견하고 제한하고 복구할 수 있게 설계된다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.
