SSL - goddes4/python-study-wiki GitHub Wiki

대칭키

  • 암호화 복호화에 사용되는 키가 같음
echo 'this is the plain text' > plaintext.txt
openssl enc -e -des3 -salt -in plaintext.txt -out ciphertext.bin
openssl enc -d -des3 -in ciphertext.bin -out plaintext2.txt

공개키

  • 키가 2개 (A 키로 암호화 B 키로 복호화 or B 키로 암호화 A 키로 복호화)
  • private key, public key
  • public key 는 누구나 다운로드 가능
  • private key 는 외부에 절대 노출되어서는 안됨
  • 인증서의 원리
openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
echo 'coding everybody' > file.txt
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt

SSL

  • 공개키 방벙으로 모든 데이터를 처리하기에는 버거움
  • 대칭키 전달용도로만 사용
  • 이후에는 대칭키로 데이터 전달

SSL 인증서 역할

  • 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버임을 보장한다.
  • 보증하는 기관 CA(Certificate authority) VeriSign
  • 각각의 브라우저 밴더의 판단에 따라 내장됨
  • 서비스의 정보, 서버측의 공개키

SSL 인증서가 서비스를 보증하는 방법

  1. 브라우저가 서버에 접속할 때 서버는 인증서를 제공한다.
  2. 브라우저는 인증서를 발급한 CA 가 자신의 내장 CA 리스트에 있는지 확인한다.
  3. CA의 공개키를 이용하여 인증서를 복호화 한다. (인증서는 인증기관의 개인키로 암호화 된 것임)
  4. 해당 서비스가 신뢰할 수 있다는 것을 의미