글쓴이 글 목록: opener

[암호화] 1. 기본지식 2015-03-20

* 사전적 의미
암호화(encryption)는 정보를 노출시키지 않기 위해 특정 알고리즘을 이용하여 암호화된 형태로 변형하는 것을 말하며 이에 역행하는 과정을 복호화(decryption)라고 하며 이로써 암호화된 정보를 다시 읽을 수 있다. 군사와 정부의 은밀한 대화를 위하여 오랫동안 이용되어 왔고 근래에는 기업에서의 데이터 전달 및 개인의 정보를 저장하는데에도 자주 이용되고 있다.

 

* 개발에 있어 암호화란?
보안이 필요한 정보를 특정 알고리즘을 통해 의미없는 문자열(이진수 덩어리)로 바꾸는 것을 의미하며 이로써 악의적인 목적으로 암호를 해독해 공격하는 것을 방지하는 것을 의미한다. 보안을 위해 시스템적인 보호 방법 보다 근본적인 해결방법이라 할 수 있다.

 

* 암호화 기본요소
가장 좋은 암호화는 알고리즘을 알아내기 어려운 것이라 할 수 있다. (항상 암호화 하려는 자와 복호화 하려는자의 노력이 있을뿐 100% 해독 불가능한 암호화란 있을 수 없다.) 이를 위해 암호화에는 혼돈(Confusion)과 확산(Diffusion)이라는 조건이 필요하다.
– Confusion : 원문의 내용을 짐작하기 어렵게 만들어야 한다.
– Diffusion : 알고리즘의 패턴을 추론하기 어렵게 만들어야 한다.

 

* 고전적인 암호화 : 암호화의 기본요소를 만족하기 위해 다음 두가지 암호화를 교차적으로 적용해 암호화 한다.
치환(Substitution) 암호화와 이동(Transposition) 암호화가 주로 사용되었다.
encrypt
– Substitution : 단순히 문자를 다른문자로 치환하는 방법으로 혼돈의 조건이 만족된다.
>> ex) DCA =>HGE
– Transposition : 무작위로(실제로는 특정규칙이 존재) 문자를 다른문자로 치환하는 방법으로 확산의 조건이 만족된다.
>> ex) DCA =>CBD

 

* 암호화의 발전
컴퓨터의 등장으로 우리는 계산능력이 월등해졌고(과거 기계식 계산에 비해) 이 앞에서 고전적인 암호화는 무용지물이 되었다. 따라서 안전성 보완을 위해 임의의 문자열값인 ‘암호화키’를 활용하게 되었다. 원리는 암호화키와 원문을 바이너리 형태로 변형한 후 배타적 논리합(XOR) 연산에 따라 암호화 & 복호화 를 하게된다.

encrypt1 위와 같은 원리로 암호화 키의 길이, 키의 사용횟수등의 제약이 없다면 복잡도를 무한히 증가시켜 거의 완벽한 암호화를 할 수 있으나 복호화 하는데 비용(시간소모)이 계속 커진다면 사용할 수가 없을 것이기 때문에 일정한 규격에 의한 암호화를 고려해야 한다.

이러한 암호화방식은 양자연산이 가능한 컴퓨팅 방식으로 인해 연산속도가 월등히 빨라진다면 위험하지 않느냐는 의문이 제기 되고는 있지만 양자연산을 통한 해독 알고리즘이 발전되기 전까지는 안전하다고 한다.

즉, 현재까지 주로 사용되는 방식의 암호화는 엄밀히 말하여 완벽한 안전을 보장하는 것이 아니라 현실적으로 풀기 어렵다는 조건부 안전에 의존하고 있다.

[Linux – CentOS] 디스크 마운트 2015-03-12

클라우드 서비스 이용중 디스크가 90%가 넘었다.

console> df -h

disk_mount1

분명 100G로 알고 있었는데…?

클라우드 설정에서 분명히 20G + 80G의 디스크가 사용중이다.

정상적으로 마운트 되지 않은것으로 보인다.

디스크가 정상인식되었는지 확인하자.

console> fdisk -l

disk_mount2

디스크는 인식되었으나 마운트 되지 않아 사용할 수 없는 상황이었다.

디스크 사용을 위해 다음과 같이 마운트 하자

 

# 디스크 형식에 맞춰 포맷
console> mkfs.ext4 /dev/xvdb

disk_mount3

# 디스크 마운트 : 폴더를 생성한 이후 마운트
console> mount /dev/xvdb /data

disk_mount4

# 디스크 마운트 확인

console> df -h

disk_mount5

console> mount

disk_mount6

# 이상태로 사용할 수 있으나 재부팅시 다시 마운트 해줘야 한다. 자동 마운트 되도록 설정한다
console> vi /etc/fstab

disk_mount7

# 설정이 완료되었다.

[JAVA 개발환경설정] 5. Spring프로젝트 셋팅 2015-02-26

1. STS 다운로드 : Eclipse에 플러그인을 추가하여 구성할 수도 있지만 Spring에서 제공하는 Spring Tool Suite을 활용하면 빠르고 안정적으로 개발환경을 설정 할 수 있다.

>>> 다운로드

sts_download

- http://spring.io/tools/sts/all 접속
- OS환경에 맞는 zip파일 다운로드
>>> 설치 & 설정
- D:\_Development\tools에 압축해제
- D:\_Development\tools\sts-bundle\sts-3.6.3.SR1\sts.exe 의 바로가기 생성
※ 프로젝트별로 사용하고자 하는 sts 바로가기를 생성해 별도의 Workspace를 구성한다.
   ex) D:\_Development\tools\sts-bundle\sts-3.6.3.SR1\STS.exe  -data D:\_Development\source\{프로젝트명}

2. 프로젝트 생성 및 톰캣 연동 – Hello World!

>>> 프로젝트 생성

sts_new_project

- New > Select Wizard > Spring > Spring Project
- 프로젝트명 입력 & Spring MVC Project 선택
>>> 패키지명 입력

sts_package_name

- 보통 com.{회사명}.{어플리캐이션명}의 유형으로 입력
>>> 톰캣 다운로드 : 다른 프로젝트와 별도로 구성한다.
- http://tomcat.apache.org/download-70.cgi
- D:\_Development\tools\sts-bundle\tomcat 폴더에 원하는 버전의 zip파일 다운로드
- 버전별 압축해제 D:\_Development\tools\sts-bundle\tomcat\{버전}
>>> STS에서 서버 생성

sts_create_server

- Apache > Tomcat v7.0 Server [Next]
- Tomcat Installation directory > Browser > 설치한 톰캣 경로 입력 [Next]
- 생성한 서버로 실행하기 원하는 프로젝트 Add [Finish] 또는 프로젝트별 properties에서 개별 추가한다.
>>> Hello World 페이지 실행

sts_hello_world

- Run As > Run On Server
- Hello World가 보이면 서버연동이 정상완료된것이다.