본문 바로가기
Programming

암호화

by min_gui 2024. 8. 12.

키를 생성할때 암호화 알고리즘을 사용하면서 대략적인 방법에대해서 알아보려고 합니다.

암호화에는 단방향과, 양방향이 존재합니다.

 

 

단방향(hasing)

복호화가 불가능한 암호화 방식이고 빠른속도를 제공 합니다.

문자열을 쉽게 알아보지 못하게 만드는 과정, 문자열을 소화시킨다는 의미에서 Message Digest 라고 도 불립니다.

 

해싱 과정을 거치면 복호화가 불가능 합니다.

원본 메시지를 변경했다면 해싱값도 변경되기 때문에 변조여부를 화인할 수 있습니다. 시스템 , 통신 무결성이 필요한 곳에서 사용됩니다.

 

단방향 암호화 알고리즘

  • MD5 (현재는 보안상 취약점으로 사용 권장되지 않음) - MD4, MD5, MD6.
  • SHA 계열 (SHA-256, SHA-3 등)
  • bcrypt
  • Argon2
  • RIPEMD
  • WhirlPool

 

양방향

암호화 하면 복호화가 가능한 암호화 방식이고, 암호화와 복호화에 키를 사용합니다.

대칭키 방식과 비대칭키 방식이 있습니다.

  • 대칭키
    • 동일한키로 암복호화를 진행한다.
    • 장점 : 속도가 빠르다.
    • 단점 : 키 공유의 어렵다.
    • 알고리즘 : AES, DES, 3DES
  • 비대칭키
    • 대칭키 방식을 보완한 방법 , 공개키와 개인키쌍을 사용합니다. 암호화와 복호화 하는 키가 서로 다르다.
    • 장점: 안전한 키 교환, 디지털 서명 가능
    • 단점: 대칭키에 비해 느린 처리 속도
    • 실제 사용
      • HTTPS에서 대칭키 교환
      • SSH 연결
      • 디지털 인증서 및 PKI(Public Key Infrastructure)
    • 알고리즘 : RSA, ECC, DSA
    • 예)
      1. A가 공개키, 개인키를 생성한다. B에게 공개키를 보낸다. 이때 A가 생성한 공개키, 개인키는 서로 연관이 있습니다.
      2. B가 가 공개키로 암호화한 메시지 = Encrypt(공개키, "Hello, A!") 를 B에게 보낸다.
      3. A는 자신이 가지고 있는 개인키로 암호화한 메시지를 복호화 한다.

 

참고:

https://javaplant.tistory.com/26

https://www.zkteco.com/en/documents/23