기본 콘텐츠로 건너뛰기

2월, 2010의 게시물 표시

Windows에서 F1이 도움말로 작동하지 않도록 하기

보안, 보안 프로그램만 방법이냐?

요즘 스마트폰 시장이 커지면서 인터넷뱅킹이나 카드결재 등에 얽힌 ActiveX 가 다시 한 번 도마에 오르고 있다. PC에서도 너무 짜증나는 보안툴끼리 오탐이나 키보드 먹통, 기타 인터넷 서비스 정지 등의 문제는 아직도 빈번히 발생하고 있으며, 차라리 ARS를 통한 폰뱅킹이 더 편해 보이기까지 한다. 컴퓨터 보안, 중요하다. 돈이 걸려 있으면 더욱 더 조심해야한다 . 하지만 이렇게까지 써야할 필요가 있나 싶다. 사실 통신보안 (데이터 전송에 한 함)은 현존 표준 TLS/SSL 과 인증서 만으로도 충분히(당연히 지속 발전해야 한다) 지킬 수 있다고 본다. 문제는 클라이언트이다 . 클라이언트 환경에 아무리 정교한 보안툴을 깔아봤자 각종 VoC나, 충돌 및 오탐까지 해결하다 보면 어쩔 수 없이 구멍이 생기기 마련이다. 더욱이 클라이언트 환경이 정확히 동일하지 않다. 같은 Windows라고 해도, XP/2000/Vista/7 등 다양하게 존재하고, 같은 Windows XP라고 해도 최종 사용자 컴퓨터엔 어떤 패치와 프로그램이 깔려 있을지는 신도 모른다. 이런 지저분하기 짝이 없는 클라이언트 환경을 지키려고 노력하는 것이 과연 적절한지 의문이다. 그렇다고 보안을 하지 말자는 이야기는 아니다. 대안 을 찾자는 것이지... 클라이언트 환경에서 크래커가 패킷/화면/키보드입력을 훔쳐가더라도 중요한 이체/대출/결재 같은 중요한 행위를 할 수 없게 만들어야 하는데, 대표적인 것이 OTP 가 아닐까 한다. 물론 휴대전화 SMS를 통해 제공하는 OTP (인증번호)도 있지만 이것은 좀 위험(개인이 계정관리 잘못을 통한 메신저 도용)해 보이고, 휴대전화에 설치하는 OTP 도 스마트폰에선 좀 위험(어플이나 어플 데이터를 크래커가 분석할 기회가 높아지므로)해 보이지만, 은행에서 제공하는 외부와 완전히 단절된 OTP 기기 (삐삐 같이 생긴 것)를 이곳저곳에서 제휴해서 쓸 수 있으면 편리성을 덜 해치고 보안도 지킬 수 있지 않을까 싶다. 덧붙여 개인도 보안에 대해 관심과 공부를 지속해야 할 것

(장난)반값 대학등록금 만들기

[#ALLBLET|2249#] 대학등록금이 100만원일 때, 반값 등록금을 외친다. 다음 년도 대학등록금을 300만원으로 인상한다. 다음 년도 대학등록금 300만원을 150만원으로 낮춘다. 학교도 학생도 만족하는 반값 대학등록금 완성. orz... OTL.... 덧글: 이랬는데, 이 장난안을 채택하면... 원본 위치: http://purewell.egloos.com/4686094

아사다 마오, 실망이야! orz OTL...

왜 이렇게 못한거야! 내가 마오에게 얼마나 기대를 많이 했는데... 20점 차이... 것도 깔끔하게 기술 성공해서 얻은 점수도 아니고... 정말 실망이야... 김연아 선수에 라이벌이면 그에 맞는 실력을 갖추란 말이야! 버럭! 덧글: 아사다 마오랑 안톤 오노, 애국가 외우고 있지 않을까? 덧글2: 그래도 아사다 마오는 이상하게 밉지 않네... ㅡ_-)/ 마오도 파이팅~ 원본 위치: http://purewell.egloos.com/4684505

Java에서 클라이언트 인증받는 TLS/SSL 연결 만들기

열심히 OpenSSL 소스 까보면서 공부해서 Java로(??!) 소켓 연결 맺기 해보는 중이다... 물론 Java에서 SSLSocketFactory에서 SSLSocket을 만들어 Buffer 연결하고 깔작거리면 얼마나 좋으련만, 세상이 녹록치 않더라. TLS/SSL은 클라이언트가 서버를 인증하는 것도 있지만, 서버가 클라이언트 인증을 필요로 할 때도 있다. 그래서 이땐 클라이언트가 사전에 서버쪽이랑 깔짝거려서 발급받은 인증서를 미리 쥐고 있다가, 서버에 접속(정확히는 접속해서 Handshake과정에서)할 때 넘겨줘야한다. SSLSocketFactory에서 그냥 깔짝깔짝 하는 걸로는 어림 반푼어치가 없더라고... SSLSocket부터 올라가보니, SSLContext라는 익숙한 놈이 있고, 이놈을 만들려면 KeyManagerFactory가 있어야 하고 TrustManagerFactory도 있어야 하는데, 각각은 KeyStore를 필요로 하고, KeyStore는 PKCS12 인증서를 필요로 하더라... 학학학 일단 잡다한 소리 집어치우고, 암호 설정한 PKCS12 인증서를 준비하자. 참고로 암호 안 걸리면 인증서 읽다가 널뽀인따 맞고 죽더라. 인증서 내보내기(export)할 때 꼭 6자 이상 암호 걸어서 내보내자. 순서는 아래와 같다. KeyStore 객체를 PKCS12 알고리즘으로 생성하고, 준비한 인증서 파일을 읽는다. KeyManagerFactory 객체를 SunX509 알고리즘으로 생성하고, 1에서 만들어진 KeyStore로 초기화한다. TrustManagerFactory 객체를 SunX509 알고리즘으로 생성하고, 1에서 만들어진 KeyStore로 초기화한다. SSLContext를 TLS 알고리즘(또는 필요에 따라 다른 것도 가능)으로 생성하고, 2, 3에서 만들어진 KeyManagerFactory와 TrustManagerFactory를 통해 만든 KeyManager[]와 TrustManager[]로 초기화한다. S

기사 제목 센스 작렬!

"입국금지 당했다" 스티브 유, 낯뜨거운 언론플레이 푸하하하!!! 기자 센스 작렬인데? 그나저나 저 기사가 사실이면, 국가가 나서서 국가 이미지 쇄신을 위해 스티븐 유 고소 같은 것 했으면 좋겠지만 방법이 없겠지? 저 새끼도 지가 대한민국 국민이 아니란 사실을 알기 때문에, 저렇게 주둥이 나불거리는 것일지도 몰라... 미국의 보호를 받고 있잖아~ ㅋㅋㅋ 덧글: 그나저나 이 새끼도 참 멍청하다. 그냥 닥치고 있어도 시원찮을 마당에 저렇게 책잡힐 짓을 뭐하러 한데... 덧글2: 오노랑 같이 손잡고 대한민국 관광와서 돈이나 쓰고 갔으면 좋겠다. ㅡ_-)/ [#ALLBLET|2249#] 원본 위치: http://purewell.egloos.com/4682926

g++ STL error: expected unqualified-id before '(' token

/usr/lib/gcc/blarblar.../c++/4.x.x/bits/blarblar.tcc:xxx: error: expected unqualified-id before '(' token STL 프로그래밍 하면서 제일 짜증났던 오류메시지였다. 뭔가 내가 잘못한 것이라고 생각했는데, std::min/std::max 템플릿 함수와 매크로함수 min/max가 겹치면서 발생한 문제라는군. #ifdef min #   undef min #endif #ifdef max #    undef max #endif 대충 이렇게 해결. 원본 위치: http://purewell.egloos.com/4676492

설날과 발렌타인데이

올해는 설날과 발렌타인데이가 서로 겹쳤다. 게다가 설날 연휴도 짧아 정신 없을 줄 알았는데, 그와중에도 초코렛을 양껏 하사해주신 주인님, 고맙습니다~~~~~~ 덧글: 나 아직 사랑 받고 있다는~ 원본 위치: http://purewell.egloos.com/4675749

OS 종류가 중요할까

날이 갈 수록 OS가 해야할 일이 많아지고 있다. IO수행, 메모리 관리 등 전통적인 작업 말고도 보안, UI/UX 등도 해야하기 때문이다. OS가 해야할 일이 많아지면서, 여타 다른 OS의 장점을 흡수하기도 한다. 그러면서 OS는 발전하고, 서로 닮아간다. 결국 OS는 다른 OS와 비교해서 차이점을 알기 힘들어지고, 나아가 섵부른 결론을 내자면, OS 종류는 의미가 없지 않을까 싶다. 몇몇 OS 맹신론자를 제외하고서, 자신이 즐겨하는 게임/웹서핑/문서작성/개발 등 몇가지 카테고리를 어렵지 않게 수행할 수 있다면 어떤 OS가 깔려 있는지 중요하게 생각치 않을 것이다. (문제는 윈도우에서만 동작하는 게임이 절대적으로 많지만...) 이런 현상은 데스크탑에서 천천히 현실에서 일어나고 있으며, 다소 극단적(일부 카테고리를 포기하더라도)으로 구글이 만들고 있는 웹어플리케이션 기반 OS를 예로 들 수 있다. 모바일도 다르지 않을 것 같다. 시장이 스마트폰에 집중하기 시작한지 얼마 되진 않았지만, 아이폰OS, 안드로이드, 바다, 심비안, 윈도우모바일(폰) 등 다양한 OS가 기다리고 있고, 이들도 서로 장점을 흡수하면서 결국 차이점이 없는 OS로 발전하지 않을까 싶다. 덧글: 너무 크게 봤나... 원본 위치: http://purewell.egloos.com/4675744

Wireshark에서 TLS/SSL 까보기

TLS/SSL 작업을 할 때 갑갑한 것 중에 하나가 - 당연하겠지만 - 트래픽 내용을 볼 수 없다는 것이다. 기껏 볼 수 있는 정보는 인증서를 포함한 몇몇 보여도 상관 없는 인증 과정 중에 일부분이다. 물론  NULL cipher 를 서버와 클라이언트 모두 우선순위로 지원하도록 설정한다면, 인증이 끝난 뒤에도 트래픽을 볼 수 있지만, 그것도 최초 개발시기 이야기 . 배포 바로 전에 QA하기 위한 클라이언트를 수정할 수는 없지 않은가. 클라이언트 수정 없이 패킷만 덤프해서 볼 수 있으면 얼마나 좋을까... 만약 서버측 PrivateKey를 알고 있다면, 트래픽을 까서 볼 수 있다. ( 이래서 PrivateKey 관리가 중요하다. ) ssldump 라는 유틸리티도 있지만, GUI를 깔꼼하게 사용할 수 있는 Wireshark 에도 TLS/SSL을 까서 볼 수 있는 기능을 제공한다. 일단 Wireshark는 암호가 걸리지 않은 PEM규격 PrivateKey 만 읽을 수 있으니, 암호가 걸린 PrivateKey를 변환해서 보도록 하자. 변환 방법은 공식위키 사이트 를 애용해보자. (추측컨데 TLS/SSL 네고과정을 PrivateKey를 이용해서 SessionKey를 비롯한 패킷을 깔 때 필요한 정보를 얻어내어 덤프한 것을 바로 까서 보여주는 듯 하다. Proxy/MITM attack을 예상했는데, 그건 아닌 듯.) 키를 준비했다면, Edit-Preference를 들어가자. 왼쪽에 Protocol 트리가 보일 것이고, 거기에서 SSL을 선택하자. 여기서부터 중요한데, 이 부분이 Wireshark에서 불편한 부분이다. Wireshark에서 이 부분을 살짝 수정해준다면 좋으련만... 오른쪽 속성창에 RSA key list 항목이 보일 것이고, 그곳에 아래와 같은 형식으로 내용을 채워넣으면 패킷을 까볼 수 있다. <IP>,<PORT>,<PROTOCOL>,<KEY_FILE_PATH>;<반복> IP, PORT, PROTOCOL

이 블로그의 인기 게시물

Bash Array, Map 정리

Bash에서 Array, Map에 대한 정리. (매번 찾기 귀찮) 찾아보진 않았지만, Bash에서 Array든 Map이든 동일하게 Map(C++에서 Unordered Map)으로 동작하는 것 같다. 왜냐하면, Array의 Index가 연속하지 않아도 동작한다. 그저 Key가 0 이상의 정수인 Map이랑 비슷하게 동작한다. 예) 1, 2, 3, 9, 10 Array # 생성 declare -a empty_array declare -a ar=(haha hoho baba "long string haha hoho") # 접근 echo "ar[0]=${ar[0]}" echo "all as array=${ar[@]}" # 큰따옴표 안에서 각 원소를 따로따로 전달한다. echo "all as one=${ar[*]}" # 큰따옴표 안에서 각 원소를 문자열 하나로 합쳐 전달한다. echo "indexes=${!ar[@]}" echo "indexes=${!ar[*]}" echo "length=${#ar[@]}" echo "length=${#ar[*]}" echo "last=${ar[-1]}" echo "last=${ar[@]: -1}" # 콜론 뒤에 빈 칸이 꼭 필요하다. 옛 방식 # 현재 상황 declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]="long string haha hoho") ar[100]=hello # 인덱스를 건너 뛰어도 동작한다. declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]=&

설치한 패키지에서 RPM 추출하기

오래된 패키지를 관리할 저장소가 없어졌고, 기존 패키지로 다른 서버를 세팅해야할 일이 생겼다면 RPM의 리패키지 기능을 이용해보자. $ rpm -e --repackage [PACKAGE_NAME] 위와 같이 리패키지하면, /var/spool/repackage/ 에 생성한 RPM파일이 있다. :-)