제가 보안 소프트웨어 개발이 꿈인데 c언어를 하다가 c보다 자바의 수요가 더 높은것 같아 자바를 하고 있는데 보안 프로그램에서는 c언어가 거의 사용된다고 하더라구요. 그 이유는 무엇인가요? 그리고 앞으로도 보안 소프트웨어에 자바 같은 객체지향 언어는 쓰이지 않을까요? 점점 c의 수요가 줄어든다는데 c언어를 더 팔지 자바를 할지 고민입니다..
컴퓨터 시스템의 깊숙한 곳까지 핸들링하면서도 비교적 편하게 짤 수 있어서 c가 많이 쓰입니다. c도 고급 언어이긴 하나 기계와 밀접한 부분이 있어서 지금 나오는 고급 언어들에 비해 쓰기 편한 언어는 아닙니다.
일례로 안랩같은 백신업체들의 바이러스 분석 보고서에 헥사덤프가 많이 보이는데 c로 하면 이걸 다루기가 자유롭습니다. c보다 더 자유로운건 어셈블리인데 어셈블리는 코딩 효율이 엄청나게 떨어지기 때문에 c로 못하는곳 일부에 끼워넣는 형태로 쓸 뿐 메인으로는 안씁니다.
바이러스뿐만 아니라 buffer overflow 같은 비정상 동작을 유발하는 해킹 기법은 자세히 파고보면 H/W나 S/W의 설계상 허점을 이용하는 것인데, 이런 것들은 자바 같은 쓰기편한 고급 언어로는 구현이 거의 불가능합니다. 컴파일러, 인터프리터에서 이런걸 감지하고 막아버리거든요. 기계 성능보다 사람이 쓰기 편하게 하는데에(그래야 개발자들의 업무효율이 올라가고 회사는 빨리 프로그램 만들어서 돈벌죠.) 중점을 두는 것들이라
그리고 객체지향 불가능하다 하셨는데 c에서 가능한 것은 c++에서도 가능합니다.
그렇다고 해서 c 표준이 어쩌니 뭐니 하는 것까지 다 파고들 필요는 절대 없고요. 보안쪽 하게 된다면 c는 쓸만한 수준으로만 하고, 컴퓨터 동작 원리에 대해 해박해야 합니다. 어떤 작업을 할때 컴퓨터 내부의 각 부품들에서 어떤 동작이 일어나는지 전반적으로 다 알아야 합니다. 한대면 한대, 네트워크면 네트워크 동작과 거기 연결되는 컴퓨터 각각에 대해.
C, Java 에 초점을 두기보다는 보안에 초점을 두시기를 권합니다.
보안이라는게 암/복호화, Network 보안 등등 분야도 다양하고요.
C로 주로 되어 있는건 구현의 편리성이라고 생각됩니다. 직관적이기도 하고요.
보안쪽 공부에 중점을 두고 공부하시면서 C, Java 로 두루 구현가능하다면 좋을것 같네요.
컴퓨터 시스템의 깊숙한 곳까지 핸들링하면서도 비교적
컴퓨터 시스템의 깊숙한 곳까지 핸들링하면서도 비교적 편하게 짤 수 있어서 c가 많이 쓰입니다. c도 고급 언어이긴 하나 기계와 밀접한 부분이 있어서 지금 나오는 고급 언어들에 비해 쓰기 편한 언어는 아닙니다.
일례로 안랩같은 백신업체들의 바이러스 분석 보고서에 헥사덤프가 많이 보이는데 c로 하면 이걸 다루기가 자유롭습니다. c보다 더 자유로운건 어셈블리인데 어셈블리는 코딩 효율이 엄청나게 떨어지기 때문에 c로 못하는곳 일부에 끼워넣는 형태로 쓸 뿐 메인으로는 안씁니다.
바이러스뿐만 아니라 buffer overflow 같은 비정상 동작을 유발하는 해킹 기법은 자세히 파고보면 H/W나 S/W의 설계상 허점을 이용하는 것인데, 이런 것들은 자바 같은 쓰기편한 고급 언어로는 구현이 거의 불가능합니다. 컴파일러, 인터프리터에서 이런걸 감지하고 막아버리거든요. 기계 성능보다 사람이 쓰기 편하게 하는데에(그래야 개발자들의 업무효율이 올라가고 회사는 빨리 프로그램 만들어서 돈벌죠.) 중점을 두는 것들이라
그리고 객체지향 불가능하다 하셨는데 c에서 가능한 것은 c++에서도 가능합니다.
그렇다고 해서 c 표준이 어쩌니 뭐니 하는 것까지 다 파고들 필요는 절대 없고요. 보안쪽 하게 된다면 c는 쓸만한 수준으로만 하고, 컴퓨터 동작 원리에 대해 해박해야 합니다. 어떤 작업을 할때 컴퓨터 내부의 각 부품들에서 어떤 동작이 일어나는지 전반적으로 다 알아야 합니다. 한대면 한대, 네트워크면 네트워크 동작과 거기 연결되는 컴퓨터 각각에 대해.
Written By the Black Knight of Destruction
댓글 달기