(저는 보안 및 IT 분야의 전문가가 아닙니다.)
정보보안, 프로그래밍, 기타 IT 관련 커뮤니티를 구경하다 보면 다음과 같은 질문들이 자주 눈에 들어옵니다.
- 제 연령이 ~인데 ~가 되기에는 늦었을까요?
- ~하려면 수학 잘해야 하나요?
- 어디서부터 시작해야 할지 감이 안 옵니다.
- 대학교/대학원 가야하나요?
- 독학으로도 가능한가요?
질문자들은 흔히 경험 많은 현직 종사자들이 이러한 질문에 적절하게 대답할 수 있다고 생각하고 있습니다. 하지만, 해당 질문들에 답하는 것은 상당히 까다롭고 신중을 요하는 일입니다. 왜냐하면 이러한 질문들이 묻고자 하는 것은 본질적으로 해킹, 코딩에 관한 것이 아니기 때문입니다.
해커들은 해킹에 대해 배우지만, "연령및해킹학습가능성이론", "해킹학습과정학" 같은 괴상한 것은 배우지 않습니다. 어셈블리어와 운영체제에 대해서는 잘 알겠지만 해킹이 독학으로 가능한지, n살부터 시작하면 학습 성공 확률이 통계적으로 어떻게 되는지, 해킹을 어디서 부터 시작하여 어떤 과정으로 배워야 이론의 여지가 없이 가장 효과적인지와 같은 지식은 알지 못합니다.
설령 해킹 관련 교육을 제공하는 기관에서 수많은 케이스를 봐왔거나, 여러 사람들을 만나고 어느 정도의 통찰을 얻었거나, 교육자로서 많은 제자를 배출했다고 해도 크게 달라지는 것은 없습니다. 해킹만 한 사람들에 비해 어느정도 신뢰성은 있을지 모르지만 그들은 과학자가 아닙니다.
명확한 가설 설정, 변수의 명확한 정의, 실험군과 대조군 등 제대로 실험을 설계하고 신뢰성과 타당성을 갖춘 자료를 수집 및 분석하여 적절한 결과 해석 및 일반화 과정을 거친 것이 아니기 때문입니다. 즉, 과학적 방법을 사용하지 않았습니다. 누군가 해킹은 독학으로 절대 안 됨
같은 주장을 한다면 논문, 혹은 에세이를 요구하세요. 과학적으로 검증되지 않은 주장은 결국 개인적인 의견에 지나지 않습니다.
여기까지가 일반적인 답변이며, 이제 앞서 나온 질문들에 대한 저의 자의적이고 개인적인 견해를 적어 보겠습니다.
30살인데 해킹 배우기에는 늦었을까요?
우선 늦었다는 표현이 무슨 의미인지 명확히 알 수 없습니다. 우리가 평소에 해당 표현을 쓰는 두 가지 경우를 생각해 봅시다.
- 학교에 늦었다.
- 그 기차를 타기에는 늦었다.
우선 "학교에 늦었다"는 학교에 도착했지만 이미 출석 시간이 지난 이후라서 지각으로 처리되는 등의 경우를 의미합니다. 이 경우 학교에 제시간에 도착하지 못해 수업을 제대로 듣지 못하거나, 어떠한 평가에서 부정적인 영향을 받을 수 있습니다. 즉, 학교에 도착은 하였지만 그 효용이 감소하게 되는 경우입니다.
"그 기차를 타기에는 늦었다."는 좀 다릅니다. 기차를 늦게 타는 것은 불가능합니다. 이 경우는 기차 시간에 늦어서 목표한 바인 기차를 타는 것을 부분적으로라도 이루지 못하는 것을 의미합니다.
두 가지 경우가 있음을 고려했을 때, 질문자님이 30살에 해커가 되는 것 자체에는 문제가 없지만 보안 회사에 취직하지 못하거나, 오래 근무하지 못하거나, 메리트가 감소한다는 의미인지 혹은 해커 자체가 될 수 없다는 의미인지 명확하게 파악하기 어렵습니다. 질문자님의 목적이 취업 및 해킹을 통한 근로소득 창출인지, 프리랜서인지, 취미로 해킹을 하는 사람인지, 혹은 기업을 해킹하려고 하는지(?!) 조차 질문에 포함되어 있지 않습니다.
그러므로 당연히 답변이 어렵습니다. 그럼에도 대답을 하자면, 본인이 늦었다고 생각한다면 늦은 것이고, 아니라고 생각한다면 아닌 것입니다.
해킹 하려면 수학을 잘 해야 하나요?
"수학을 잘 한다" 라는 표현이 모호해서, 명확한 답변은 불가능합니다. 일반적으로 프로그래밍 언어의 기초 부분은 그저 자연어의 구조를 형식적인 언어로 구성한 것일 뿐이므로, 프로그래밍을 배우고 기초적인 포너블, 리버싱, 웹 해킹 등을 해보는데는 문제가 없다고 볼 수 있겠습니다.
가령, 다음 코드를 봅시다.
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i += 1;
}
이 코드를 한국어로 옮기면 sum은 처음에 0이고, i는 1인데, 만약 i가 100보다 같거나 작으면 그렇지 않을 때 까지 계속 sum에 i를 더하고 i에 1을 더해
입니다. 이 문장에는 그 어떤 복잡한 수학 용어도 등장하지 않으며, 프로그래밍을 모르는 사람에게 공책에 sum = 0
이랑 i = 0
를 적어주고 해당 문장을 지시한다면 아마 성공적으로 해낼 것입니다. (그가 인내심이 있다면)
이처럼, 프로그래밍 언어는 만약
, 계속 ~
, ~는 ~다
등의 우리가 어릴적부터 배운 자연어의 논리적 구조를 컴퓨터가 효율적이고 명확하게 인식할 수 있도록 형식적으로 만든 것일 뿐입니다. 그래서 미적분, 기하학, 방정식 등의 고급수학모델(?)은 기초 단계에서는 그다지 필요하지 않습니다. 다만 기본적인 수 체계, 거듭제곱 등에 대한 이해는 따라와야 할 것입니다. 당신이 한국어를 할 줄 안다면, 코딩과 해킹을 시작하세요.
어디서부터 시작해야 할지 감이 안 옵니다.
정상적입니다. 처음 배우는 학문/기술을 어디서부터 어떻게 공부해야 할지 제대로 파악하는 것은 도전적인 과제입니다. 여러가지 소스(구글 검색, ChatGPT, 커뮤니티 글, 유튜브 동영상, 지인에게 질문 등)의 정보를 보시고, 개인적인 신념, 직관, 인상, 뭔가 좋은 느낌, 가치관 등도 섞어서 결론을 내 보시기 바랍니다. 뭔가 이상한 답변 같지만, 이것 말고는 방법이 딱히 없습니다. 누군가 어떻게 주장한다고 해도 대부분의 경우 앞서 언급한 과학적 방법이 아니기 떄문에 검증 및 신뢰할 수가 없기 때문입니다. 어떤 정보도 신뢰할 수 없을때는 직관+신념이 정답이라고 저는 생각합니다.
대학교/대학원 가야하나요?
저는 "인공지능 하려면 대학원은 필수인 것 같다"라는 견해를 여러 사람으로 부터 들어서 인상깊게 기억하고 있습니다. 그리고 굳이 인공지능이 아니더라도 이 주장은 틀렸다고 생각합니다. 하지만 제가 다루어야 할 쟁점들이 너무 많기 때문에, 누군가 특정 쟁점(대학원은 ~때문에 가야 한다)에 대해 말씀드린다면 하나씩 답변드려 보겠습니다.
독학으로도 가능한가요?
독학이란 "스스로 학습의 주체가 되어 필요한 정보를 찾아가며 배우는 과정"을 의미합니다. 저는 해킹 독학은 가능하며 이미 많은 해커들이 이를 입증하였다고 생각합니다. 다만 질문자님의 의도가 "해킹은 독학으로 가능한가?"가 아닌 "해킹은 독학으로 가능하긴 한데, 그 가능성이 유의미하며 나에게도 적용될거라고 기대해도 좋은가?" 라면, 좀 더 심층적인 대화가 필요합니다. 하지만 저는 그 경우에도 가능하다고 말씀드리고 싶습니다. 이것에도 또한 쟁점이 많기 때문에 누군가 질문드린다면 답변 드리도록 하겠습니다.
Title | Author | Vote | Hits | Created at |
---|---|---|---|---|
1 | 81 | 7 days ago | ||
플누리
No badge
| 1 | 33 | 7 days ago | |
liberty_rapid
No badge
| 22 | 432 | 15 days ago | |
_0xH0P3_
No badge
| 2 | 158 | 17 days ago | |
-1 | 199 | 18 days ago |