[CS] AES-256 암호화 알고리즘

해니·2024년 6월 26일
0

CS

목록 보기
12/15



단방향 암호화 (One-Way Encryption)

  • 주로 비밀번호 저장과 같은 경우에 사용된다.
  • 해시(HASH)를 이용하여 평문을 암호화 하는 방법중 하나로,
    암호화된 데이터에 대한 복호화가 불가능 하다
    • 해시 함수는 값을 입력받아 고정된 길이의 해시값을 출력하는 함수로 같은 입력에 대해서는 항상 같은 출력이 나오지만 출력을 가지고 역으로 입력값을 도출할 수는 없는 특징을 가진다.
  • 대표적으로 SHA-256(Secure Hash Algorithm, 안전한 해시 알고리즘)이 있다.



양방향 암호화 (Two-Way Encryption)

  • 데이터를 암호화할 때 사용되며, 암호화된 데이터를 원래의 형태로 복원할 수 있다.
  • 가장 일반적인 예는 대칭 키 암호화이다.
    • 대칭 키 암호화에서는 동일한 키가 데이터를 암호화하고 해독하는 데 사용된다.
    • 대표적인 대칭 키 알고리즘으로는 AES(Advanced Encryption Standard)가 존재한다.



AES(Advanced Encryption Standard)

  • 암호화 및 복호화에 동일한 키를 사용하는 대칭키 알고리즘으로 높은 안전성과 빠른 속도로 인해 양방향 암호화에서 가장 많이 사용되는 방식
  • 종류는 AES-128, AES-192, AES-256이 있으며 뒤에 붙은 숫자는 키의 길이를 의미한다. (128bit = 16byte, 192bit = 24byte, 256bit = 32byte)

AES-256 암호화 방식을 이용하려면 Key의 길이는 32byte가 되어야한다.



AES-256 사용

암호화 과정 :
plain text -> pain bytes -> encrypt -> encrypted bytes -> encrypted base64 text
복호화 과정 :
encrypted base64 text -> encrypted bytes -> decrypt -> plain bytes -> plain text



Cipher Mode(암호화 모드)

  • 암호화 과정에서 사용되는 알고리즘에서 데이터를 처리하는 방법을 지정하는 방식
  • 암호화 알고리즘은 일반적으로 블록 암호화(block cipher) 방식으로 동작한다.
    • 블록 암호화 방식은 입력된 데이터를 고정된 길이의 블록(block) 단위로 나누어서 처리한다.

CBC (Cipher Block Chaining) 방식

  • Cipher Mode 중 하나
  • 각 블록의 암호화가 이전 블록의 암호화 결과에 의존한다.
  • 이전에 암호화했던 블록화 XOR 연산을 한 다음에 암호화를 수행한다.
    • 첫 블록은 이전 암호화가 없기 때문에 이를 위해 IV(초기화 벡터)를 이용한다.
    • AES128bit(16byte) 단위로 암호화하기 때문에, IV16byte의 크기가 필요하다.

💡 IV(Initialize Vector, 초기화 벡터)

  • 매번 다른 IV를 생성하면 같은 평문이라도 다른 암호문을 생성할 수 있다.
  • IV는 암호를 복호화할 사람에게 미리 제공되어야 하고, Key와 달리 공개되어도 무관하다.

Padding(패딩)

  • 블록의 암호화를 진행하기 위해 필요한 기법
  • 데이터를 특정 크기로 맞추기 위해서 사용된다.
    • 특정 크기보다 부족한 부분의 공간을 의미 없는 문자들로 채워서 비트수를 맞추는 것






출처

AES-256 암호화
[Springboot] HTTP 바디 데이터 암호화 전송하기
단방향 양방향 암호화 정리
패스워드 암호화를 어떤 방식으로 하면 좋을까?
Java AES256 암/복호화
암호화의 이해 : AES, 블록 암호 운영 모드, 패딩 모드 간단 용어 정리


profile
💻 ⚾️ 🐻

0개의 댓글