프로그래밍/네트워크, 보안14 PHP 암호화 SHA-256, SHA-512, AES-256, RSA PHP 언어에서 다양한 암호화 알고리즘을 사용하는 방법을 알아 봅니다. 1. SHA-256, SHA-512 단방향 암호화 알고리즘 입니다. // SHA-256$hashed = base64_encode(hash('sha256', 'password', true));echo $hashed; // SHA-512$hashed = base64_encode(hash('sha512', 'password', true));echo $hashed; 2. AES-256 대칭키 알고리즘 입니다. openssl 함수를 사용하기 위해서 php.ini 파일에 openssl 확장을 사용하도록 설정합니다. extension=openssl 예제 입니다. $plainText = '암호화될 메세지';$password = 'password s.. 2018. 10. 26. 자바 RSA 암/복호화 사용법 자바 언어에서 비대칭키 방식의 RSA 암/복호화 방법을 알아봅니다. 키생성과 암호화 복호화를 모두 자바 언어로 수행합니다. CipherUtil.java 파일을 1024bit 키를 생성하고, 암호화, 복호화를 지원하는 유틸리티 클래스로 작성되었습니다. 키는 SecureRandom 클래스를 사용해서 임의의 키를 생성합니다. package com.tistory.offbyone.rsa; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchA.. 2018. 10. 22. 자바스크립트 RSA 암호화 라이브러리 JSEncrypt JSEncrypt는 브라우저에서 서버로 보낼 데이터를 암호화 하기 위해서 사용할 수 있는 자바스크립트 라이브러리로 RSA 방식으로 데이터를 암호화/복호화 할 수 있습니다. RSA는 비대칭형 암호화 알고리즘으로 브라우저에서 공개키로 암호화 해서 데이터를 서버로 보내면 서버에서는 개인키로 복호화 할 수 있습니다. JSEncrypt는 http://travistidwell.com/jsencrypt/ 에서 다운로드 할 수 있습니다. 이 사이트에 설명되어 있듯이 JSEncrypt는 http://www-cs-students.stanford.edu/~tjw/jsbn/ 에 있는 다양한 암호화 관련 라이브러리들의 래퍼로 하나의 파일에 필요한 라이브러리를 모두 포함하고 있고, 간편한 API를 제공합니다. 다운로드 받은 파일.. 2018. 10. 4. Windows에서 TOMCAT에 개발용으로 SSL 적용하기 사이트에 SSL을 적용하려면 인증기관으로부터 인증서를 발급받아 웹서버에 설치해야 합니다. 개발용으로 자신이 인증기관이 되어 인증서를 발급하여 Tomcat에 적용하는 방법을 알아봅니다. 1. openssl 설치하기 키와 인증서를 만들기 위해서 openssl을 설치합니다. 다음 사이트에서 자신의 PC에 맞는 파일을 다운 받습니다. 이 글에서는 윈도우에서 테스트하므로 openssl-0.9.8k_X64.zip 파일 다운로드 받았습니다. https://code.google.com/archive/p/openssl-for-windows/downloads 다운 받은 파일은 압축을 풀어서 적당한곳에 복사해두면 됩니다. 여기에서는 D:\util\openssl-0.9.8k_X64 에 설치하였습니다. D:\util\opens.. 2018. 4. 21. SSL 동작 방식을 간단히 알아보기 SSL 은 웹서버와 브라우저 간의 통신을 암호화 해서 중간에 누가 가로채더라도 내용을 알 수 없게 해줍니다. SSL이 적용되면 https:// 를 사용하여 웹서버에 접근하게 됩니다. 원래 여러가지 기술들이 작용하는 것이라 복잡하므로 기술적인 부분은 제외하고 개념적인 SSL 동작 방식을 간단히 알아보겠습니다. 그래도 미리 알아 두어야 할 것들이 많습니다. 1. SSL과 TLS SSL(Secure Sockets Layer)와 TLS(Transport Layer Security)는 같은 것이라고 할 수 있습니다. SSL은 TCP/IP 암호화 통신에 사용되는 규약으로써 넷스케이프에서 만들었습니다. SSL 3.0 버전부터는 IETF에서 표준으로 정해서 TLS 1.0이 되었습니다. 하지만 아직도 그냥 SSL이라고 .. 2018. 4. 21. Tomcat SSL 적용시 https로 자동 리다이렉트 설정하기 요즘은 대부분의 사이트들이 SSL을 사용해서 https:// 로 연결을 합니다. SSL을 사용하던 초창기에는 성능 문제로 로그인, 회원가입 등 주요한 데이터가 전달되는 곳에 부분적으로 적용을 하였는데, 요즘은 서버와 클라이언트의 성능이 좋아져서 사이트 전체에 SSL을 적용하는것이 일반적입니다. 하지만 대부분의 사람들은 http:// 주소를 사용해서 페이지 접근하므로 http 요청을 https 요청으로 리다이렉트 시켜야 합니다. Tomcat 에서 이것을 자동으로 처리하도록 설정하는 방법을 알아보겠습니다. 1. SSL설정을 먼저 합니다. 먼저 SSL 설정이 되어 있다고 가정합니다. 설정이 되고 https:// 로 접근이 된다면 Tomcat 의 server.xml 파일에 다음과 유사하게 설정되어 있을 것입니다.. 2018. 4. 20. Tomcat에 X-Frame-Options 헤더와 X-Content-Type-Options 헤더 적용하기 X-Frame-Options 헤더는 FrameSet이나 iframe 등에 의한 클릭재킹에 대한 보호를 제공하며 2009년에 IE8에서 추가되었고 얼마 후 다른 브라우저들에도 채택되었습니다. 이 헤더의 값은 DENY, SAMEORIGIN, ALLOW-FROM 중에 하나를 가지며 각각 외부 사이트에 대한 프레임 금지, 같은 사이트만 허용, 특정 사이트만 허용의 의미를 가집니다. "X-Content-Type-Options: nosniff" 응답 헤더를 보내면 브라우저는 script 및 style sheet요소의 MIME 형식이 잘못된 경우 응답을 거부합니다. 이는 MIME 형식 혼동을 기반으로 하는 공격을 차단하기 위한 보안 기능입니다. 보통 브라우저는 서버로부터 다운받은 이미지 등의 내용을 분석하여 MIME.. 2018. 4. 20. 와이파이(WiFi) 거리 연장하기(ipTime Extender-N3) 안방에서 와이파이(WiFi) 신호가 너무 약해서 신호 강도를 높일 방법을 찾아보다가 간편하게 와이파이 신호가 도달하는 거리를 연장해주는 장치가 있다는 것을 알게 되었습니다. 사용하고 있는 무선공유기가 ipTime 제품이라 ipTime Extender-N3를 구매하게 되었습니다. N3와 A3 두 가지 제품을 두고 고민을 했었습니다. A3는 5GHz, 2.4GHz 를 모두 지원하고 가격이 좀 비쌉니다. N3는 2.4GHz 만 지원하고 그 때문인지 좀 싸더군요. 집에서 사용하고 있는 공유기가 5GHz, 2.4GHz를 모두 지원하는 기기라 고민이 되었는데, 막상 인터넷 속도가 100MB인지라 싼 N3 를 구매했습니다. 크기가 작은것도 원하는 바였습니다. 설명서에는 다양한 설치방법이 나와 있지만 첫 번째 나오는 .. 2018. 4. 19. 유선 공유기에 무선 공유기 추가하기 유선 공유기를 사용하고 있는 곳에 무선 공유기를 추가하는 방법입니다. 공유기는 iptime 공유기를 사용하는 경우를 예로 알아 보겠습니다. 공유기는 대부분 기본적으로 192.168.0.1 ~ 255의 사설 IP 영역을 사용합니다. 유선 공유기에 무선 공유기를 연결하는 방법은 두 가지가 있습니다. 1. 첫 번째는 유선공유기의 일반 포트에서 무선 공유기의 WAN 포트로 연결하는 방법 이 경우 무선 공유기는 유선 공유기에서 하나의 IP를 DHCP로 받아서 인터넷에 연결하게 됩니다. 그래서 무선공유기는 사용하는 IP대를 변경해야 합니다. 유선 공유기와 같은 IP 영역을 사용하면 충돌이 발생하기 때문입니다. 무선 공유기 설정에서 IP 대를 192.168.10.1~255 정도로 다른 사설 IP대로 변경하여 사용합니.. 2018. 4. 18. Tomcat HTTP 메소드 제한하기 HTTP 규약에 따라 웹서버들은 GET, POST, HEAD, PUT, OPTIONS, DELETE, TRACE의 7개 메소드를 제공합니다. 요즘은 이러한 메소드들은 보안 취약점이 생길 수 있으므로 GET과 POST를 제외한 나머지 메소드들을 비활성화합니다. Tomcat에서 GET과 POST 를 제외한 메소드들을 비활성화 하는 방법을 알아보겠습니다. web.xml에 항목을 추가 합니다. url-pattern 이 /* 이므로 모든 요청에 대해 아래에 나열에 메소드들을 비활성화 합니다. Restricted methods /* PUT DELETE OPTIONS TRACE 실제로 이러한 메소드들이 동작을 하는지 알아보는 방법으로는 명령창에서 telnet 명령으로 직접 호출해보는 방법이 있습니다. - 명령창에서 .. 2018. 4. 17. 리스크웨어(Riskware)가 무엇인가? 알약이 실시간 검사에서 php.exe 파일을 Misc.Riskware.Phptool로 잡았습니다. 위험도는 보통인것 같습니다. 이 프로그램은 테스트용 PHP 웹 사이트를 띄우기 위해서 Microsoft Webmatrix 를 사용하는데에 필요한 파일 입니다. 설치는 Microsoft Web Platform Installer를 통해서 설치가 된 것입니다. 이걸 치료를 하면 삭제가 되고, 검역소로 이동될 것으로 예상됩니다. 일단은 취소를 하고, 리스크웨어(Riskware)가 무엇인지 찾아 보았습니다. 다음 정의는 kaspersky 사이트에 나온 내용을 요약한 것입니다. "리스크웨어는 정상적인 프로그램이지만, 만약 악의적인 사용자에 의해 데이터를 삭제, 차단, 수정, 복사하거나 컴퓨터 또는 네트워크의 성능을 저.. 2018. 4. 10. 칼리 리눅스 설치 - VirtualBox에 설치하기 및 한글 입력 Kali Liunx는 침투 테스트 및 보안 감사에 사용할 수 있는 다양한 오픈소스 프로그램들이 미리 설치되어 있는 데미안 기반의 리눅스 배포판입니다. 전문적인 침투 테스트와 보안감사를 목적으로한 배포판 이어서 다른 일반적인 리눅스 배포판들과 차이점이 있습니다. 1. 단일 root 유저로만 사용하도록 디자인 되었습니다. 2. 네트웍 서비스는 기본적으로 비활성화 되어 있습니다. 3. 무선 injection을 위한 upstream 커널을 사용합니다. 4. 신뢰할 수 있는 최소한의 저장소를 가지고 있습니다. 이 글에서는 VirtualBox 에 칼리 리눅스를 설치해 보겠습니다. VirtualBox의 설치는 "VirtualBox로 Linux 서버 만들기 1 - 설치 및 가상머신 생성" 을 참조하시기 바랍니다. 칼리.. 2018. 4. 3. Burp suite 사용하기 - Repeater 사용 및 매개변수 조작 실습 Burp Suite 의 간단한 사용법을 알아 보겠습니다. 설치는 "취약점 분석툴 Burp Suite Free Edition 설치하기" 를 참고 하세요. 버프슈트를 이용해서 현재 요청을 가로채서 매개변수를 변경하여 봅니다. 이것은 화면에서 자바스크립트등으로 입력값의 길이를 제한해 두었다던가, 숫자등으로 입력값의 타입을 제한 하는등의 노력을 무력화 시킬 수 있습니다. 실제로 코딩에서는 서버측에서도 동일한 체크를 반드시 수행해야만 합니다. "스프링 프레임웍에서 MyBatis, Oracle 사용하기" 에서 사용한 샘플에 테스트 데이터를 추가하고, 글번호를 파라미터로 넘겨서 글 내용을 보는 페이지는 추가하여 테스트 해 봅니다. 보안관련 테스트를 허가받지 않은 사이트에 하면 절대 안됩니다. 1. 샘플 데이터를 입력.. 2018. 4. 1. 취약점 분석툴 Burp Suite Free Edition 설치하기 이제 웹프로그래밍에서 Secure Coding 은 필수가 되었습니다. 설계 단계에서부터 보안설계가 들어가고, 그에 따라 코딩 시작부터 보안을 고려해서 코딩을 하게 됩니다. 하지만 늘어나는 공수에 대한 산정은 이런 추세를 아직 따라가고 있지를 못하는것 같아서 안타깝습니다. Burp suite 는 웹 프록시 입니다. 웹브라우저만으로는 통신간의 정보를 상세히 보기가 힘든데, 프록시를 사용하면 클라이언트의 요청정보, 서버의 응답정보를 상세히 확인할 수 있습니다. 또한 서버로 전송되는 정보를 변경하여 취약점 분석에 사용할 수 있습니다. Burp suite 를 설치하기 위해서는 먼저 JRE 가 설치되어 있어야 합니다. 설치되어 있지 않다면 "윈도우에 JDK 8 설치하기" 를 참고하여 설치를 합니다. Burp sui.. 2018. 4. 1. 이전 1 다음