HTTPS and SSL

ν—·κ°ˆλ¦¬λŠ” κ°œλ…λ“€μ„ μ •λ¦¬ν•΄μš”

Reference: μƒν™œμ½”λ”© κ°•μ’Œ, minix.tstory.com, Bill Buchanan κ΅μˆ˜λ‹˜ μ›Ήμ‚¬μ΄νŠΈ

HTTPS vs HTTP

HTTP λž€?

  • Hypertext Transfrer Protocol의 μ•½μžλ‘œ, Hypertext인 HTML을 μ „μ†‘ν•˜κΈ° μœ„ν•œ 톡신 κ·œμ•½μ„ 의미

HTTPS λž€?

  • HTTPS 의 λ§ˆμ§€λ§‰ S λŠ” Over Secure Socket Layer 의 μ•½μžλ‘œ SecureλΌλŠ” λ§μ—μ„œ μ•Œ 수 μžˆλ“―μ΄ λ³΄μ•ˆμ΄ κ°•ν™”λœ HTTP λΌλŠ” 것을 μ§μž‘ν•  수 μžˆλ‹€

  • HTTP λŠ” μ•”ν˜Έν™”λ˜μ§€ μ•Šμ€ λ°©λ²•μœΌλ‘œ 데이터λ₯Ό μ „μ†‘ν•˜κΈ° λ•Œλ¬Έμ— Server와 clientκ°€ μ£Όκ³  λ°›λŠ” λ©”μ‹œμ§€λ₯Ό κ°μ²­ν•˜λŠ” 것이 맀우 쉽닀

    • μ•ˆμ „ν•˜μ§€ μ•Šλ‹€!

      • ex) λ‘œκ·ΈμΈμ„ μœ„ν•΄ Server둜 λΉ„λ°€λ²ˆν˜Έλ₯Ό μ „μ†‘ν•˜κ±°λ‚˜ μ€‘μš”ν•œ κΈ°λ°€ λ¬Έμ„œλ₯Ό μ—΄λžŒν•˜λŠ” κ³Όμ •μ—μ„œ μ•…μ˜μ μΈ κ°μ²­μ΄λ‚˜ λ°μ΄ν„°μ˜ 변쑰등이 일어날 수 μžˆλ‹€λŠ” 것!

    • κ·Έλž˜μ„œ 이λ₯Ό λ³΄μ™„ν•œ 것이 HTTPS λ‹€!

HTTPS 와 SSL

  • HTTPS 와 SSL을 같은 의미둜 μ΄ν•΄ν•˜κ³  μžˆλŠ” κ²½μš°κ°€ λ§Žλ‹€ (과거의 λ‚˜...)

    • 이것은 마치 인터넷과 Web을 같은 의미둜 μ΄ν•΄ν•˜λŠ” 것과 κ°™λ‹€!

    • Why?

      • Web이 인터넷 μœ„μ—μ„œ λŒμ•„κ°€λŠ” μ„œλΉ„μŠ€ 쀑 ν•˜λ‚˜μΈ 것 처럼

      • HTTPS 도 SSL Protocol μœ„μ—μ„œ λŒμ•„κ°€λŠ” Protocol이닀!

HTTPκ°€ SSL μœ„μ—μ„œ λ™μž‘ν•˜λ©΄ HTTPSκ°€ λ˜λŠ” 것이닀!

SSL κ³Ό TLS

  • 이 λ‘˜μ€ 사싀 같은말이닀!

    • Netscapeμ—μ„œ SSL이 발λͺ…λ˜μ—ˆκ³ , 이것이 점차 ν­λ„“κ²Œ μ‚¬μš©λ˜λ‹€κ°€ ν‘œμ€€ν™” 기ꡬ인 IETF 의 κ΄€λ¦¬λ‘œ λ³€κ²½λ˜λ©΄μ„œ TLSλΌλŠ” μ΄λ¦„μœΌλ‘œ λ°”λ€Œμ—ˆλ‹€

    • TLS 1.0 은 SSL 3.0을 κ³„μŠΉν•œλ‹€

    • κ·Έλž˜μ„œ 정식 λͺ…칭은 TLS이닀

      • but, TLSλΌλŠ” 이름보닀 SSLμ΄λΌλŠ” 이름이 훨씬 많이 μ‚¬μš©λœλ‹€!

SSL 디지털 μΈμ¦μ„œ

SSL μΈμ¦μ„œλž€?

  • Client와 Server의 톡신을 제 3μžκ°€ λ³΄μ¦ν•΄μ£ΌλŠ” μ „μžν™”λœ λ¬Έμ„œ

    • Client κ°€ Server에 μ ‘μ†ν•œ 직후 ServerλŠ” Clientμ—κ²Œ SSL μΈμ¦μ„œ 정보λ₯Ό μ „λ‹¬ν•œλ‹€

    • ClientλŠ” 이 μΈμ¦μ„œ 정보가 μ‹ λ’°ν•  수 μžˆλŠ” 것인지λ₯Ό 검증 ν•œ 후에 λ‹€μŒ 절차λ₯Ό μˆ˜ν–‰ν•˜κ²Œ λœλ‹€

SSL 디지털 μΈμ¦μ„œλ₯Ό μ΄μš©ν–ˆμ„ λ•Œμ˜ 이점

  • 톡신 λ‚΄μš©μ΄ κ³΅κ²©μžμ—κ²Œ λ…ΈμΆœλ˜λŠ” 것을 막을 수 μžˆλ‹€

    • 그러기 μœ„ν•΄μ„œλŠ” μ•”ν˜Έν™”κ°€ ν•„μš”ν•˜λ‹€!

  • Clientκ°€ μ ‘μ†ν•˜λ €λŠ” server κ°€ μ‹ λ’° ν•  수 μžˆλŠ” μ„œλ²„μΈμ§€ νŒλ‹¨ν•  수 μžˆλ”°

  • 톡신 λ‚΄μš©μ˜ μ•…μ˜μ μΈ 변경을 방지할 수 μžˆλ‹€

SSLμ—μ„œ μ‚¬μš©ν•˜λŠ” μ•”ν˜Έν™”μ˜ μ’…λ₯˜

μ•”ν˜Έν™”λž€?

  • 정보λ₯Ό 원격지에 전달할 λ•Œ μ€‘κ°„μ—μ„œ λˆ„κ΅°κ°€κ°€ 정보λ₯Ό κ°€λ‘œμ±„λ©΄ λ³΄μ•ˆμ΄ μœ„ν˜‘λ°›λŠ”λ‹€

    • 이 λ•Œ λˆ„κ΅°κ°€κ°€ κ°€λ‘œμ±„λ”λΌλ„ 정보λ₯Ό 해석할 수 μ—†κ²Œ ν•˜κ³ , λͺ©μ μ§€μ— μžˆλŠ” μˆ˜μ‹ μžλŠ” 해석할 수 μžˆλ„λ‘ ν•˜λŠ” 것이 μ•”ν˜Έν™”μ΄λ‹€!

  • λˆ„κ΅°κ°€μ—κ²Œ μ „μ†‘ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 자기 ν˜Όμžμ„œ λ³΄λŠ” 정보라도 μžκΈ°κ°€ μ•„λ‹Œ λ‹€λ₯Έ μ‚¬λžŒμ΄ 그것을 이해할 수 μ—†κ³ , μžμ‹ λ§Œμ΄ 그것을 이해할 수 있게 ν•˜λŠ”κ²ƒλ„ μ•”ν˜Έν™”μ΄λ‹€!

λ³΅ν˜Έν™”λž€?

  • μ•”ν˜Έν™”λœ 정보λ₯Ό μ•”ν˜Έν™” 되기 이전 μƒνƒœλ‘œ λŒλ¦¬λŠ” 것!

Key λž€?

  • μ•”ν˜Έν™” & λ³΅ν˜Έν™”μ˜ 기쀀이 λ˜λŠ” 데이터

  • Keyλ₯Ό 가지고 μžˆμ–΄μ•Όμ§€λ§Œ 정보λ₯Ό μ•”ν˜Έν™”, λ³΅ν˜Έν™” ν•  수 μžˆλ‹€

λŒ€μΉ­ν‚€ 방식 (Symmetric-key algorithm)

  • λ™μΌν•œ ν‚€λ‘œ μ•”ν˜Έν™”μ™€ λ³΅ν˜Έν™”λ₯Ό 같이 ν•  수 μžˆλŠ” λ°©μ‹μ˜ μ•”ν˜Έν™” 기법

    • μ•”ν˜Έν™”λ₯Ό ν•˜λŠ” μͺ½κ³Ό λ³΅ν˜Έν™”λ₯Ό ν•˜λŠ” μͺ½μ΄ λ™μΌν•œ Keyλ₯Ό 가지고 μžˆλ‹€!

μ‹€μŠ΅) λŒ€μΉ­ν‚€λ‘œ μ•”ν˜Έν™” 해보기

μ‹€μŠ΅μ— μ‚¬μš©ν•  txt 파일 생성

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ echo 'this is a plain text' > plaintext.txt;

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ ls
plaintext.txt

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ cat plaintext.txt 
this is a plain text

λŒ€μΉ­ν‚€λ‘œ μ•”ν˜Έν™” ν•˜κΈ°

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ openssl enc -e -des3 -salt -in plaintext.txt -out ciphertext.bin
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
  • λͺ…λ Ήμ–΄ μ„€λͺ…

    • enc -e -des3

      • des3 λ°©μ‹μœΌλ‘œ μ•”ν˜Έν™” ν•˜κΈ°

    • -in plaintext.txt -out ciphertext.bin

      • plaintext.txt νŒŒμΌμ„ μ•”ν˜Έν™” ν•œ κ²°κ³Όλ₯Ό ciphertext.bin νŒŒμΌμ— μ €μž₯ν•˜κΈ°

μ•”ν˜Έν™” 된 파일 확인

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ cat ciphertext.bin 
7οΏ½xοΏ½w1οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½qοΏ½Λ΄.!{οΏ½Υ™οΏ½οΏ½οΏ½οΏ½e

λŒ€μΉ­ν‚€λ‘œ λ³΅ν˜Έν™” ν•˜κΈ°

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ openssl enc -d -des3 -in ciphertext.bin -out plaintext2.txt;
enter des-ede3-cbc decryption password:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
  • λͺ…렁어 μ„€λͺ…

    • enc -d

      • μœ„μ˜ μ˜΅μ…˜μœΌλ‘œ ciphertext.bin νŒŒμΌμ„ plaintext2.txt 파일둜 λ³΅ν˜Έν™” ν•˜κΈ°

λ³΅ν˜Έν™” κ²°κ³Ό 확인

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ cat plaintext2.txt 
this is a plain text
  • κ³΅κ°œν‚€λ§Œ μž…λ ₯ν•˜λ©΄ κ·ΈλŒ€λ‘œ λ³΅ν˜Έν™”κ°€ κ°€λŠ₯ν•˜λ‹€!

    • 이것이 λŒ€μΉ­ν‚€μ˜ 문제

      • κ³΅κ°œν‚€κ°€ λ…ΈμΆœλ˜λ©΄ λ³΄μ•ˆ μœ„ν˜‘μ„ λ°›λŠ”λ‹€

λŒ€μΉ­ν‚€ λ°©μ‹μ˜ 문제점

  • μ•”ν˜Έλ₯Ό μ£Όκ³  λ°›λŠ” μ‚¬λžŒλ“€ 사이에 λŒ€μΉ­ν‚€λ₯Ό μ „λ‹¬ν•˜λŠ” 것이 μ–΄λ ΅λ‹€

    • λŒ€μΉ­ν‚€κ°€ 유좜되면 ν‚€λ₯Ό νšλ“ν•œ κ³΅κ²©μžλŠ” μ•”ν˜Έμ˜ λ‚΄μš©μ„ λ³΅ν˜Έν™” ν•  수 있기 λ•Œλ¬Έμ— μ•”ν˜Έκ°€ λ¬΄μš©μ§€λ¬Όμ΄ λœλ‹€...!

    • μ΄λŸ¬ν•œ 문제λ₯Ό "key distribution problem"이라고 ν•œλ‹€.

κ³΅κ°œν‚€/λΉ„λŒ€μΉ­ν‚€ 방식 (Public-key/asymmetric cryptography)

  • λŒ€μΉ­ν‚€κ°€ 가지고 μžˆλŠ” "key distribution problem"을 κ°œμ„ ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ μ•”ν˜Έν™” 방식

  • λŒ€μΉ­ν‚€μ™€λŠ” λ‹€λ₯΄κ²Œ Keyκ°€ 두 개 μžˆλ‹€

    • A key둜 μ•”ν˜Έν™”λ₯Ό ν•˜λ©΄ B key둜 λ³΅ν˜Έν™” ν•  수 있고,

    • B key둜 μ•”ν˜Έν™”ν•˜λ©΄ A key둜 λ³΅ν˜Έν™” ν•  수 μžˆλŠ” 방식

  • 두 개의 ν‚€ 쀑 ν•˜λ‚˜λ₯Ό **λΉ„κ³΅κ°œ ν‚€ (private key, κ°œμΈν‚€, λΉ„λ°€ν‚€)**둜 ν•˜κ³ ,

    • λ‚˜λ¨Έμ§€λ₯Ό **κ³΅κ°œν‚€ (public key)**둜 μ§€μ •ν•œλ‹€!

κ³΅κ°œν‚€ 방식 μ˜ˆμ‹œ

  • λΉ„κ³΅κ°œν‚€λŠ” μžμ‹ λ§Œμ΄ 가지고 있고,

    1. κ³΅κ°œν‚€λ₯Ό νƒ€μΈμ—κ²Œ μ œκ³΅ν•œλ‹€

    2. κ³΅κ°œν‚€λ₯Ό 제곡 받은 타인은 κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄μ„œ 정보λ₯Ό μ•”ν˜Έν™”ν•œλ‹€

    3. μ•”ν˜Έν™”ν•œ 정보λ₯Ό λΉ„κ³΅κ°œν‚€λ₯Ό 가지고 μžˆλŠ” μ‚¬λžŒμ—κ²Œ μ „μ†‘ν•œλ‹€

      • λΉ„κ³΅κ°œν‚€μ˜ μ†Œμœ μžλŠ” λΉ„κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄μ„œ μ•”ν˜Έν™”λœ 정보λ₯Ό λ³΅ν˜Έν™”ν•œλ‹€

        • 이 κ³Όμ •μ—μ„œ κ³΅κ°œν‚€κ°€ μœ μΆœλœλ‹€κ³ ν•΄λ„ λΉ„κ³΅κ°œν‚€λ₯Ό λͺ¨λ₯΄λ©΄ 정보λ₯Ό λ³΅ν˜Έν™” ν•  수 μ—†κΈ° λ•Œλ¬Έμ— μ•ˆμ „ν•˜λ‹€!

          • why?

            • κ³΅κ°œν‚€λ‘œλŠ” μ•”ν˜Έν™”λŠ” ν•  수 μžˆμ§€λ§Œ λ³΅ν˜Έν™”λŠ” ν•  수 μ—†κΈ° λ•Œλ¬Έ!

κ³΅κ°œν‚€ λ°©μ‹μ˜ μ‘μš©

  1. λΉ„κ³΅κ°œν‚€μ˜ μ†Œμœ μžλŠ” λΉ„κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄μ„œ 정보λ₯Ό μ•”ν˜Έν™” ν•œ 후에 κ³΅κ°œν‚€μ™€ ν•¨κ»˜ μ•”ν˜Έν™”λœ 정보λ₯Ό μ „μ†‘ν•œλ‹€

  2. 정보 + κ³΅κ°œν‚€ λ₯Ό νšλ“ν•œ μ‚¬λžŒμ€ κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄μ„œ μ•”ν˜Έν™”λœ 정보λ₯Ό λ³΅ν˜Έν™”ν•œλ‹€

    • 이 κ³Όμ •μ—μ„œ κ³΅κ°œν‚€κ°€ μœ μΆœλœλ‹€λ©΄ κ³΅κ²©μžμ— μ˜ν•΄ 데이터가 λ³΅ν˜Έν™” 될 μœ„ν—˜μ΄ μžˆλ‹€

      • but, 이런 μœ„ν—˜μ—λ„ λΆˆκ΅¬ν•˜κ³  λΉ„κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄μ„œ μ•”ν˜Έν™”λ₯Ό ν•˜λŠ” μ΄μœ λŠ” 이것이 데이터λ₯Ό λ³΄ν˜Έν•˜λŠ” λͺ©μ μ΄ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ΄λ‹€!

        • μ•”ν˜Έν™”λœ 데이터λ₯Ό κ³΅κ°œν‚€λ₯Ό 가지고 λ³΅ν˜Έν™” ν•  수 μžˆλ‹€λŠ” 것은 κ·Έ 데이터가 κ³΅κ°œν‚€μ™€ μŒμ„ μ΄λ£¨λŠ” λΉ„κ³΅κ°œν‚€μ— μ˜ν•΄ μ•”ν˜Έν™” λ˜μ—ˆλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€!

          • 즉, κ³΅κ°œν‚€κ°€ 데이터λ₯Ό μ œκ³΅ν•œ μ‚¬λžŒμ˜ 신원을 보μž₯ν•΄μ£Όκ²Œ λ˜λŠ” 것이닀!

            • Why?

              • κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•˜μ—¬ λ³΅ν˜Έν™”μ— μ„±κ³΅ν–ˆλ‹€λŠ” 것은 λΉ„λ°€ν‚€λ₯Ό 가지고 μžˆλŠ” μ‚¬λžŒμ΄ μ „μ†‘ν•œ μ •λ³΄λΌλŠ” 것을 λ³΄μ¦ν•˜λŠ” 것이기 λ•Œλ¬Έ!

                • 이것이 λ°”λ‘œ μΈμ¦μ„œμ˜ 원리이닀!

            • μ΄λŸ¬ν•œ 것을 μ „μž μ„œλͺ…이라고 λΆ€λ₯Έλ‹€

μ‹€μŠ΅) RSA λ°©μ‹μ˜ κ³΅κ°œν‚€ μ‚¬μš©ν•΄λ³΄κΈ°

private.pem μ΄λΌλŠ” μ΄λ¦„μ˜ key 생성

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ openssl genrsa -out private.pem 1024;
Generating RSA private key, 1024 bit long modulus (2 primes)
......+++++
................................+++++
e is 65537 (0x010001)
  • λͺ…λ Ήμ–΄ μ„€λͺ…

    • openssl

      • openssl둜

    • genrsa

      • RSA λ°©μ‹μœΌλ‘œ 된 private keyλ₯Ό μƒμ„±ν•˜λΌ

    • 1024

      • μ•”ν˜Έμ˜ λ³΅μž‘λ„λ₯Ό 의미

        • μˆ«μžκ°€ 컀질수둝 μ•ˆμ „ν•΄μ§€μ§€λ§Œ 더 λ§Žμ€ μ»΄ν“¨νŒ… νŒŒμ›Œλ₯Ό ν•„μš”λ‘œ ν•œλ‹€!

μƒμ„±λœ private key 확인

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ ls -al
total 24
drwxr-xr-x  2 chloe chloe 4096  8μ›” 31 01:16 .
drwxr-xr-x 12 chloe chloe 4096  8μ›” 29 16:07 ..
-rw-r--r--  1 chloe chloe   40  8μ›” 29 16:13 ciphertext.bin
-rw-r--r--  1 chloe chloe   21  8μ›” 29 16:22 plaintext2.txt
-rw-r--r--  1 chloe chloe   21  8μ›” 29 16:08 plaintext.txt
-rw-------  1 chloe chloe  887  8μ›” 31 01:16 private.pem

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ cat private.pem 
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDCOq2X1U25ME8Pk8T5hAKTxNCHt1VOJY9oIPdPMEJM6OseJ/VX
fybsXxU8+17WXsgNBYkT0LlNhuGpEDvxoaydMeAC7aPNlyewLVxHC11vP7GS6ccJ
/ARF6DjjM6zm465/sSpE5FPz+1Mkce5jgbeXqYb4L3nVLzlfMpaK/v8/LwIDAQAB
AoGBALqnc03XogLXBxN8Oa5kC6oAWTojmGoqNF+oVqKWSRDqQZFQazlzq286jQl2
tJQkr/G7oRkW3A1CEzjKriCu81bMf07a+X8wPvOEXxT6iaZ9GnVSHAadGdHXFPq3
wvgNz8IBp7AZUbaDilZEPf1dHStGwd5L6f2ObDgkICEaqmURAkEA6tj0PH09OPfH
h4chH36qrjgSCxPhb4B8XjRvxGTydTrsC3n+ECA95o6AVBfsALFVj1Tu5ovngN15
AX2TBezXeQJBANO5KOJGf/B61riXySVOYHOBc8d7ExUk+2W5aK41T4n3YD9HfT9Q
8w8aPqzTSzsNXrCV2nO72WV+6hi5cVmuGecCQDBD6GYqIxP7MIG1DuSnJrLpiSPH
sTQ2Rtkhk7rcOExJkMuHBeUQi0hADzW5OOKnj3sGrJarOCfu3Him8zlrhJkCQEtw
AuA0zGsr6YvWEUZombcuHcmq0Y7MIYMKQAEqX4/CA5ooZ7kCp8fuyvwbQQfmaKG0
kyR/fyNJyDFNCdUxUmsCQQDSAIPLDrZr1fvykKX9CLr9HJLYSrHD36T3y26Kq+ci
bN/NFuaYjq9g6kkVqH7usaY28Ro+BQUHINyUB92S08SJ
-----END RSA PRIVATE KEY-----

μƒμ„±ν•œ λΉ„κ³΅κ°œν‚€μ— λŒ€ν•œ κ³΅κ°œν‚€ 생성

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout;
writing RSA key
  • λͺ…λ Ήμ–΄ μ„€λͺ…

    • -in private.pem

      • private.pem μ΄λΌλŠ” νŒŒμΌμ„ κ°€μ Έμ™€μ„œ

    • -out public.pem

      • public.pem μ΄λΌλŠ” νŒŒμΌμ„ λ§Œλ“€μ–΄λΌ

  • κ²°κ³Ό μ„€λͺ…

    • writing RSA key

      • RSA λ°©μ‹μ˜ Keyλ₯Ό μƒμ„±ν–ˆλ‹€λŠ” 뜻

μ•”ν˜Έν™” ν•  파일 생성

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ echo 'studying public key' > file.txt

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ cat file.txt 
studying public key

μƒμ„±ν•œ κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”ν•˜κΈ°

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl;
  • λͺ…λ Ήμ–΄ μ„€λͺ…

    • openssl

      • openssl을 μ΄μš©ν•΄μ„œ

    • -encrypt

      • μ•”ν˜Έν™” 해라

    • -inkey public.pem

      • key둜 public.pem을 μ‚¬μš©ν•˜κ² λ‹€

        • κ³΅κ°œν‚€λ₯Ό κ°€μ§€κ³ μžˆλŠ” μ‚¬λžŒμ΄ μ•”ν˜Έν™”λ₯Ό ν•œλ‹€λŠ” 뜻

          • 즉, λΉ„κ³΅κ°œν‚€λ₯Ό 가지고 μžˆλŠ” μ‚¬λžŒμ—κ²Œ μ€λ°€ν•˜κ²Œ μ–΄λ–€ 정보λ₯Ό 전솑할 λ•Œ μ‚¬μš©ν•˜λŠ” λͺ…λ Ή!

    • -in file.txt

      • file.txt νŒŒμΌμ„ μ•”ν˜Έν™” ν•˜κ² λ‹€

    • -out file.ssl

      • μ•”ν˜Έν™” 된 νŒŒμΌμ„ file.ssl둜 export ν•˜κ² λ‹€

κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™” ν•œ 파일 ν™•μΈν•˜κΈ°

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ cat file.ssl 
οΏ½
 οΏ½οΏ½b1οΏ½TοΏ½:οΏ½PοΏ½οΏ½NUοΏ½0PwU'οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½DοΏ½KοΏ½YοΏ½7οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½q5οΏ½pοΏ½οΏ½οΏ½οΏ½οΏ½FA\οΏ½οΏ½}οΏ½qΔ΄/=οΏ½οΏ½iοΏ½!οΏ½sοΏ½οΏ½οΏ½οΏ½S@έͺEοΏ½οΏ½οΏ½οΏ½lοΏ½BοΏ½οΏ½tJvοΏ½
                      ~,
οΏ½οΏ½]οΏ½VοΏ½οΏ½οΏ½οΏ½>7
  • 이λ₯Ό 톡해 κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™” 된 νŒŒμΌμ„ λΉ„κ³΅κ°œν‚€λ₯Ό 가지고 μžˆλŠ” μ‚¬λžŒμ—κ²Œ μ „μ†‘ν•˜λŠ” κ³Όμ •μ—μ„œ λˆ„κ΅°κ°€κ°€ μ•”ν˜Έν™” 된 νŒŒμΌμ„ 열어보렀고 ν–ˆμ„ λ•Œ, λ‚΄μš©μ„ 읽어볼 수 μ—†λ‹€λŠ” 것, 즉 μ•”ν˜Έν™” λ˜μ–΄μžˆλŠ” 것을 확인 ν•  수 μžˆλ‹€!

λΉ„κ³΅κ°œ ν‚€ 둜 λ³΅ν˜Έν™” ν•˜κΈ°

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
  • λͺ…λ Ήμ–΄ μ„€λͺ…

    • openssl

      • openssl을 μ‚¬μš©ν•˜μ—¬

    • -decrypt

      • μ•”ν˜Έλ₯Ό λ³΅ν˜Έν™” ν•˜κ² λ‹€

    • -inkey private.pem

      • private.pem νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ λ³΅ν˜Έν™” ν•˜κ² λ‹€

    • -in file.ssl

      • file.ssl νŒŒμΌμ„

    • -out decrypted.txt

      • λ³΅ν˜Έν™” 된 νŒŒμΌμ„ decrypted.txt둜 export ν•˜κ² λ‹€

λΉ„κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™” 된 파일 확인

chloe@chloe-XPS-15-9570 ~/SSAFY/TIL-codes/ssl
$ cat decrypted.txt 
studying public key

κ³΅κ°œν‚€/λΉ„λŒ€μΉ­ν‚€ λ°©μ‹μ˜ 단점

  • λΉ„λŒ€μΉ­ν‚€λŠ” λŒ€μΉ­ν‚€λ³΄λ‹€ 속도가 λŠλ¦¬λ‹€...

    • 속도λ₯Ό μ€‘μš”μ‹œν•˜λŠ” μƒν™©μ—μ„œλŠ” μ“°κΈ°κ°€ νž˜λ“€λ‹€...(ν™”μƒμ±„νŒ…, λ©”μ‹ μ €, λ“±λ“±)

  • 이 λ•Œλ¬Έμ— 속도λ₯Ό μ€‘μš”μ‹œν•˜λŠ” λŒ€λΆ€λΆ„μ˜ μ•”ν˜Έν™” ν”„λ‘œν† μ½œμ—μ„œλŠ” λŒ€μΉ­ν‚€μ™€ λΉ„λŒ€μΉ­ν‚€λ₯Ό μ„žμ–΄μ„œ μ“΄λ‹€.

λŒ€μΉ­ν‚€/λΉ„λŒ€μΉ­ν‚€ ν”„λ‘œν† μ½œλ“€

SSL μΈμ¦μ„œ ... λΆ€ν„° κ³΅λΆ€ν•˜λ©΄ 됨

계속 곡뢀쀑....

Last updated

Was this helpful?