본인확인 전자서명(signing)하는 방법
전자서명이라는 말을 들어봤을 것이다.
특히 전산 관련일을 하다 보면 자주 듣게 되는데, 전자서명과 암호화에 대한 얘기가 종종 나온다.
처음 용어를 접하는 사람들이 전자서명을 암호화라고 생각하는 경우가 종종있다.
전자서명은 암호화와는 다르다. 암호화란 데이터 내용을 볼 수 없도록 다른 내용으로 변경하는 것이나 전자서명은 내용은 수정하지 않고, 서명값을 생성해서 첨부하는 것이다.
전자서명의 목적
전자서명은 본인확인 및 컨텐츠의 위변조 방지를 위해 사용한다.
전자서명의 원리
송신자는 컨텐츠를 해쉬하고, 해쉬한 결과를 자신의 개인키로 암호화한다. 그리고 그 결과를 컨텐츠에 첨부한다. 그리고 그 파일을 수신자에게 전달한다. 수신자는 해당파일의 컨텐츠를 해쉬하고, 이 해쉬값과 첨부되어 있는 송신자가 자신의 개인키로 암호화한 해쉬결과를 송신자의 공개키로 암호화한다.
이 두개의 해쉬값을 비교하여 위변조 여부를 확인할 수 있다.
'개인정보 보호법' 카테고리의 다른 글
암호 알고리즘 종류 및 정책 수립기준 정리 (0) | 2017.08.16 |
---|---|
ISMS 인증 의무 대상 강화 (0) | 2016.11.19 |
개인정보보호 교육 자료 (0) | 2016.09.14 |
뽐뿌 개인정보 유출 (0) | 2016.06.05 |
2015 개인정보보호페어 (0) | 2016.06.05 |
크로스 사이트 요청 위조 예제
크로스 사이트 요청 위조를 하는 방법에 대해 알아보자.
자신이 운영하는 사이트가 크로스 사이트 요청 위조가 가능한지 여부를 판단하기 위해서 알아야 할 때 아래 내용을 참고하면 된다.
얼마전에 사이트 웹취약점 검사를 해봤더니 크로스 사이트 요청 위조가 가능하다는 진단을 받았다. Referer 위조가 가능하다고 나와서 어떻게 위조가 가능하다는 것인지에 대해 알아야 했다.
몇 시간을 검색을 하다가 결국 비슷한 내용을 찾아 크로스 사이트 요청 위조를 하는 내용을 만들어 봤다.
아래에 보면 알겠지만, 소스가 길지 않으므로 이해하기 어렵지 않을 것이다.
.크로스 사이트 요청 위조 예제
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class Test { public static void main(String[] args) throws ClientProtocolException, IOException { Test test = new Test(); test.action(); } private static final String USER_AGENT = "Mozila/5.0"; private static final String GET_URL = "http://aaa.com/CheckTest.jsp"; public static void action() throws ClientProtocolException, IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(GET_URL); httpGet.addHeader("User-Agent", USER_AGENT); httpGet.addHeader("REFERER", "http://naver.com"); CloseableHttpResponse httpResponse = httpClient.execute(httpGet); System.out.println(httpResponse.getStatusLine().getStatusCode()); BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = reader.readLine()) != null) { response.append(inputLine); } reader.close(); System.out.println("결과: " +response.toString()); httpClient.close(); } }
위의 코드는 aaa.com을 호출하면서 referer를 naver.com으로 하는 예제이다. CheckTest.jsp 화면에서는 입력을 받아 referer를 로깅하는 역할을 하는데, 위의 코드를 실행하게 되면 해당 페이지를 호출한 화면에서 referer가 naver.com으로 되어 있는 것을 알 수 있다.
.이 방법으로 웨취약점을 확인할 수 있었고, 이 내용을 참고해서 보안을 강화할 수 있었다.
'Web' 카테고리의 다른 글
APM 버전 확인 방법 (0) | 2019.04.28 |
---|---|
크롬 ajax loading image(Ajax loader image is not showing up in chrome) (0) | 2018.02.04 |
크로스 사이트 요청 위조 (0) | 2017.09.23 |
html select box 값 가져오기 (0) | 2017.08.11 |
checkbox 속성 추가(다건의 attribute) (0) | 2017.05.05 |
안드로이드 스튜디오와 이클립스 플러그인의 비교(어플 개발시 방법)
기존에는 안드로이드 어플을 개발할 때 이클립스에서 플러그인을 추가하여 개발을 했었다.
2012년도까지도 이런 방식으로 개발을 했었었다.
그러다가 최근에 기존에 만들었던 어플을 수정하려고 하다 보니 문제가 발생을 했다.
네이버 맵을 사용해야 하는데, 기존에 jar로 제공했던 라이브러리가 이제는 aar로 제공이 되는 것이었다.
aar은 이클립스 플러그인에서 사용할 수 있는 방법이 없었다.
이런 문제로 인해 안드로이드 스튜디오를 설치해 사용할 수 밖에 없었다.
.이클립스에서는 굳이 빌드 시스템을 사용할 필요가 없었는데, 안드로이드 스튜디오에서는 gradle을 사용해야한다. 그리고 안드로이드 스튜디오에서는 GUI 레이아웃 편집기 기능이 강화되었고, 구글 클라우드 플랫폼도 지원한다. 다만 이클립스에 비해 무거운 단점이 있다.
최근 출시되는 스마트폰을 지원하기 위해서는 이클립스 플러그인을 통해 개발할 수가 없다. 안드로이드 스튜디오를 통해 개발해야 하므로, 안드로이드 스튜디오에 대한 학습을 할 수 밖에 없다.
.'Android > lecture' 카테고리의 다른 글
구글 맵과 네이버 맵 가격 비교(구글 지도 VS 네이버 지도) (1) | 2016.10.21 |
---|---|
안드로이드 스튜디오 속도 개선(메모리 설정) (0) | 2016.10.10 |
aar 파일 jar 변환(안드로이드 프로젝트 라이브러리 활용) (1) | 2016.10.08 |
안드로이드 두 번째 프로그래밍(2-4) (3) | 2016.06.05 |
안드로이드 프로젝트 폴더 구조(2-3) (3) | 2016.06.05 |