보안 공부, 시작은 했는데…?

TULA
ocol
Published in
7 min readAug 22, 2020

“시작은 했는데, 모르는 단어가 너무 많아요!”

이런 분들을 위해 준비했습니다. 보안 관련 키워드 모음!

Photo by Kelly Sikkema on Unsplash

자주 나오는 단어들 중 9개를 골라 가져와봤습니다.

1. BOF

BOF란 Buffer Over Flow의 약자로, 직역하자면 Buffer(버퍼)를 넘치게 한다는 뜻이 됩니다. 그럼 이때 버퍼란 무엇일까요? 버퍼는 데이터가 이동할 때, 그 데이터가 일시적으로 보관하는 메모리입니다. 예를 들자면 RAM이 이에 해당하겠죠.

그럼 BOF는 메모리를 넘치게 했다는 뜻이 됩니다. 이때 메모리가 넘쳤다는 것은, 입력한 데이터의 양이 너무 많아서 메모리의 제한된 용량을 넘겨버린 것입니다. 그래서 이 용량을 넘겨버리면 어떤 문제가 발생할까요?

데이터의 양이 용량을 넘겨서 제한된 영역을 벗어나면, 다른 메모리 영역을 침범하게 되게 됩니다. 이는 프로그램 작동 오류나 메모리 접근 오류을 발생시키고, 심지어 시스템의 보안도 누설될 수도 있습니다.

2. DoS, DDoS

이 단어들은 뉴스 헤드라인에서도 많이들 보셨을 겁니다. DoS는 Denial of Service의 약자로, 서비스 거부를 의미합니다. 여기서 서비스 거부 공격을 통해 공격자는 서버에 과부하를 주어, 특정한 네트워크나 웹 리소스에 합법적인 유저가 접근하지 못하도록 방해합니다. 방금 얘기했던 BOF가 DoS 공격에 사용됩니다.

DDoS는 Distributed Denial of Service의 약자로, DDoS는 DoS에서 Distributed만 추가된 단어입니다. 직역하자면 분산된 서비스 거부인데, 왜 ‘분산된’이 추가되었을까요? DoS와 DDoS의 공격 방법을 비교하면 답이 나옵니다.

DoS가 단일 기기로 공격하는 1대 1의 싸움인 반면, DDoS는 공격 지점을 분산시켜 1대 다수의 싸움을 일으키는 것입니다. 1대 다수의 싸움에서 가장 큰 문제는 공격 지점이 어디인지 유추하기 힘들다는 것입니다. 그래서 DDoS가 공격자에게 더 선호받는다고 합니다. 아무래도 1보다는 다수인 편이 싸우기 쉬우니까요!

3. HTTP, HTTPS

HTTP는 Hypertext Transfer Protocol의 약자로, Hypertext인 HTML을 전송하기 위한 통신규약(Protocol)을 의미합니다. HTTPS은 보안이 강화된 HTTP입니다. HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에, 서버와 클라이언트가 주고 받는 메시지를 몰래 듣는 것이 매우 쉽습니다. 그래서 이러한 허점을 파악하여 보안을 강화해 등장한 것이 HTTPS입니다.

4. SSL

SSL은 Secure Socket Layer로, 제 3자인 Certificate Authority(CA)의 인증을 통해 암호화된 통신을 제공하며, 서버와 클라이언트의 안전한 접속을 보장합니다. HTTPS는 SSL 프로토콜을 기반으로 둔 프로토콜입니다.

해당 사이트가 CA가 제공하는 인증서를 사용한다면 브라우저의 주소창에 위와 같이, 자물쇠 표시가 뜹니다.(이는 인증된 사이트라는 뜻이죠!)

5. SSO

SSO는 Single Sign-On의 약자로, 로그인 하나로 여러 서비스를 이용하기 위해 만들어진 ‘인증 방식’을 뜻합니다. SSO가 사용되는 예시로는 구글이나 네이버가 있습니다. 구글이나 네이버에서는 메인 사이트에 로그인한 것만으로 메일, 블로그, 클라우드까지 다 사용 가능합니다. 이는 SSO가 있기 때문입니다. SSO의 안전한 통신을 위해 아까 언급했던 SSL이 사용됩니다.

6. IAM

IAM은 Identity and Access Management의 약자로, 권한과 접근을 제어하게 도와주는 웹서비스입니다. 보통 클라우드 보안과 관련해 많이 등장하는 단어입니다.(클라우드 제공 업체마다 정책이 조금씩 다르니까 사용 전에 IAM 정책 확인하고 사용하세요!)

7. SQL Injection

SQL Injection은, 말 그대로 SQL을 주입하는 것을 말합니다. 이는 웹 보안과 관련된 부분인데, 웹과 데이터베이스가 연동되어 있는 경우에 SQL 구문을 조작해서 비정상적인 데이터베이스 명령을 실행시킵니다. OWASP에서 선정한 Top 10 Web Application Security Risks에 첫번째로 기록될 만큼 매우 유명한 웹 해킹 방법 중 하나입니다.

8. Fuzzing

Fuzzing(퍼징)은 소프트웨어에 ‘무작위로’ 입력 값을 넣는 과정에서 발생하는 에러를 보면서 보안의 허점을 찾아내는 방식인데요. 실제로 소스 코드를 분석해서 찾아낼 수 있는 버그보다, 퍼징을 통해 찾아낼 수 있는 버그가 더 많다고 합니다. 그런데 이 무작위로 입력한다는 것은 가능한 모든 경우의 수를 입력한다는 것인데, 이는 매우 오랜 시간과 막대한 비용이 들기 때문에 거의 불가능합니다.(마치 막대한 경우의 수를 완전 탐색하는 것처럼요.)

그래서 최근에 퍼징과 AI를 결합해 AI 퍼징을 활용하고 있다고 합니다. 이를 통해 퍼징을 할 때 테스트 사례 생성이 용이해지면서 효율적인 맞춤 방식이 가능해졌고, 기존 방식으로는 발견할 수 없는 취약점까지도 좀 더 빨리 찾아낼 수 있게 되었습니다.

9. 리버싱과 포렌식

리버스 엔지니어링(reverse engineering)은 완성된 제품를 분석하여 기본적인 설계와 적용 기술을 파악하고 재현하는 것을 이야기합니다. 그래서 이 방법을 보안에 적용한 리버싱(reversing)은 완성된 소프트웨어를 뜯어보는 행위를 통해, 코드의 허점을 찾아내서 보안 수준을 개선합니다.

포렌식은 Forensic science(또는 Criminalistics)와 관련된 것으로, 보통 포렌식이 아니라 과학 수사라 불려왔던 것들입니다. 과학 수사대에서는 범죄 현장 조사 및 분석을 통해 근거를 모아서 범죄의 증거로 제출하는 일을 합니다. 만약 과학 수사가 아니라 포렌식이라 불리는 것들은 사이버 상의 범죄를 다루는 것을 이야기합니다. 포렌식 전문가들은 해킹이 발생했을 때, 해킹을 누가 했는지, 어떤 부분에서 피해가 발생했는지 등을 밝혀내 법적 근거를 마련하는 일을 합니다.

글을 마치며.

최대한 쉽고 간단하게 설명하려고 노력했는데, 어떠셨나요? 프로그래밍 공부를 하다보면 TLA(Three-Letter Acronym. 이것도 줄여서 얘기합니다😆)이 굉장히 많이 등장합니다. TLA는 마주할 때마다 찾아보고, 기록해두는 편이 좋을 거 같아요. 저는 이런 기록들을 노션을 이용해 남기고 있습니다. 최근에 노션이 무료로 풀려서 잘 쓰고 있답니다👍

각종 피드백과 오류 수정 및 오탈자 지적 등의 댓글은 언제나 환영입니다🎉 앞으로도 저는 OCOL에서 보안과 관련된 글을 토요일 저녁 8시(GMT+9)에 꾸준히 올릴 예정입니다. Stay tuned🍪

📎참고한 링크

  1. https://en.wikipedia.org/wiki/Buffer_overflow: BOF (Eng)
  2. https://academy.binance.com/ko/security/what-is-a-dos-attack: 서비스 거부 공격(DoS)이란?
  3. https://12bme.tistory.com/80: SSL(Secure Socket Layer) 이란
  4. https://hanee24.github.io/2018/08/04/sso/: SSO란 무엇인가! 이해해봅시다
  5. https://www.samsungsemiconstory.com/2048: 잠재적 보안 취약점을 찾기 위한 테스트 기법 ‘AI퍼징(AI Fuzzing)’
  6. https://en.wikipedia.org/wiki/Forensic_science: Forensic science (Eng)

--

--

TULA
ocol
Editor for

Keep Writing️ ✍️ | Interested in Security, Cloud, and Quantum Computing