OpenSSL

김병현·2022년 5월 11일
0

SSL 디지털 인증서

클라이언트와 서버간의 통신을 제 3자가 보증해주는 전자화된 인증서입니다. 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서 정보를 전달합니다. 클라이언트는 인증서 정보가 신뢰할 수 있는지 검증 후 다음 절차를 진행합니다.

SSL 사용 장점

  1. 통신 내용 노출 방지
  2. 클라이언트가 접속하고자하는 서버가 신뢰가능한지 판단 가능
  3. 통신 내용의 악의적인 변경 방지

SSL 암호화 종류

암호화할 때 사용하는 비밀번호를 Key라고 합니다. Key를 모르면 암호를 복호화할 수 없습니다.

대칭키

동일한 Key로 암호화와 복호화를 같이 할 수 있는 방식입니다. 암호화할 때 사용한 값과 복호화할 때 사용할 값이 동일해야합니다.
ex. 암호화 key값 : 1234 / 복호화 key값: 1234

  • Key를 전달하기 어렵고 Key가 유출시 타인이 복호화할 수 있기 때문에 보안 유출이라는 단점이 있습니다.
echo "Hello world" > example.txt	# Hello world 내용을 담은 example.txt 파일 생성

openssl	# openSSL 실행

openSSL> enc -e -des3 -salt -in example.txt -out encipherment.bin
# enc -e -des3 : des3 방식으로 암호화
# -in example.txt 파일을 암호화한 결과를 encipherment.bin 파일에 저장하여 생성

공개키

2개의 Key(ex. A, B key)를 생성하여 A key로 암호화하면 B key로 복호화할 수 있고 B key로 암호화하면 A key로 복호화할 수 있습니다.
이 중 한개의 key를 Private key(개인키, 비밀키)로 지정하고 나머지 한개는 Public Key(공개키)로 지정합니다.

사용 예시 #1

Private key는 자신만 소유하고 Public key를 타인에게 제공합니다. 타인은 Public key를 이용하여 암호화하고 Private key 소유자에게 암호화된 데이터를 전송합니다. Private key 소유자는 Private key를 이용하여 복호화합니다.

Public key는 암호화만 가능하고 복호화는 Private key만 가능하기 때문에 Public key가 유출되어도 안전합니다.

사용 예시 #2

Private key 소유자는 데이터를 암호화하여 암호화된 데이터와 Public key를 함께 전송합니다. 데이터와 Public key 수신자는 Public key를 이용하여 데이터를 복호화합니다.

이 과정에서 Public key가 유출된다면 데이터 유출 위험이 있지만 이는 정보 보안의 목적이 아닙니다. 이 경우에서의 암호화된 데이터는 오직 Public key와 같이 생선된 Private key로만 암호화가 가능하기 때문에 Public key와 데이터를 제공한 발신자의 신원을 보장해주는 효과를 목적으로 합니다. 이와 같은 방식을 전자 서명에서 사용합니다.

openSSL> genrsa -out private.pem 1024
# RSA 방식을 사용(genrsa)하여 private.pem 이름의 Private key 생성
# 1024 : 1024 bit 길이. 길이가 길수록 안전하지만 많은 컴퓨터 자원을 사용

openSSL> rsa -in private.pem -out public.pem -outform PEM -pubout
# private.pem 이름의 Private key에 대한 public.pem 이름의 Public key 생성

echo "Hello world" > example.txt	# Hello world 내용을 담은 example.txt 파일 생성

openSSL> rsautl -encrypt -inkey public.pem -pubin -in example.txt -out example.ssl
# example.txt 파일을 public.pem 이름의 Public key를 사용하여 RSA 방식으로 암호화하여 example.ssl 파일에 저장하여 생성

openSSL> rsautl -decrypt -inkey private.pem -in example.ssl -out example.txt
# private.pem 이름의 Private key를 사용하여 example.ssl 파일을 복호화하여 저장 후 example.txt 생성

OpenSSL 설치

Window

  1. Win64 OpenSSL 1.1(exe) 설치
  2. 설치 프로그램 실행 (Microsoft Visual C++ 필수. 없을 시 설치 안내)
  3. 환경변수 Path 값으로 "OpenSSL 설치경로\bin" 추가
    ex. C:\Program Files\OpenSSL\bin
  4. 명령 프롬프트에서 "openssl" 입력하여 실행

macOS

1. brew update	# home brew 업데이트
2. brew search openssl	# openssl 검색
3. brew install openssl@1.1	 # 검색결과에서 확인되는 openSSL 설치
4. openssl 입력하여 실행
profile
Without haste, but without rest.

0개의 댓글