통신 암호화를 위한 기초 공부2: AES, RSA

Jessie·2024년 3월 18일

암호화 방식

AES

AES란?

Advanced Encryption Standard의 약자로, 대칭현 블록 암호화 알고리즘이다. 레인델(Rijndael) 알고리즘을 사용한다. 암호화 키는 128 비트, 192 비트, 256 비트 중 하나가 될 수 있으며, 각각 AES-256, AES-192, AES-256으로 불린다. (Key가 길수록 brute force 공격에 강함)

대칭 키 블록 암호

대칭 키 암호는 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘을 말한다. 암호화 키가 노출되면 안되고 비대칭 암호보다 보안성은 떨어지지만, 시간이나 비용면에서 장점이 있다.

블록 암호는 대칭 키 암호의 종류 중 하나로, 암호화하고자 하는 정보를 정해진 블록 단위로 나눠 암호화 하는 시스템을 말한다.

AES 암호화 과정

암호화 키의 길이에 따라 SubBytes, ShiftRows, MixColumns, AddRoundKey 네 개의 과정을 10, 12, 14 라운드 실행한다. (128 → 10 라운드, 192 → 12 라운드, 256 → 14 라운드)

자세한 내용은 봐도 이해가 어려워 적지 않았다. 현재는 개념만 알아두려고 하는 것이기 때문에 나중에 추가로 공부가 필요하면 자세히 공부해보아야겠다.

RSA

RSA란?

공개키 암호화 알고리즘 중 하나이다. 암호화뿐만 아니라 전자서명도 가능하여 전자상거래 등에 활용되고 있다. 큰 숫자는 소인수분해를 하기가 어렵다는 점을 이용하여 암호화를 하며, 보안도가 매우 높다. 다만 AES 방식에 비해 계산 집약적이고 느리다는 단점이 있다. 암호화 키의 길이에 따라 RSA-896, RSA-1024, RSA-1536, RSA-2048 등이 있고, 중요도가 높은 정보일 경우 RSA-4096이나 RSA-8192를 쓰기도 한다.

공개 키 암호

암호화와 복호화에 사용하는 키가 서로 다른 암호를 말한다. 대칭 키 암호는 암호화와 복호화에 사용되는 키가 같아 암호화 키를 암호를 복호하고자 하는 사람에게 반드시 전달해주어야 한다. 이는 보안상 허점이 될 수 있다. 공개 키 암호는 그럴 필요가 없어 보안성이 훨씬 뛰어나다.

  • 공개 키 암호로 기밀 내용 전달하는 법
    1. B가 자신의 공개 키를 공개한다.
    2. A는 이 공개키로 문서를 암호화 한다.
    3. 암호화된 문서를 B에게 전달한다.
    4. B는 자신이 가진 개인키로 문서를 해독한다.

그리고 기밀 내용의 전달 뿐 아니라 발행자 증명, 부인 방지 등에도 사용할 수 있다.

RSA 암호화 과정

AES에 비해 과정을 이해하기가 쉬워 나무위키에 남겨진 글을 가져와보았다.

  1. 두 소수 p,q 를 준비한다.
  2. p−1, q−1과 각각 서로소인 정수 e를 준비한다.
  3. ed를 (p−1)(q−1)으로 나눈 나머지가 1이 되도록 하는 d를 찾는다.
  4. N=pq를 계산한 후, N과 e를 공개한다. 이들이 바로 공개키이며, 상대방이 평서문을 암호문으로 바꿀때 쓴다. 한편 d는 숨겨두는데, 이 수가 바로 개인키이며, 공개키로 상대방이 만든 암호문을 해독할 때 쓴다.
  5. 이제 p,q,(p−1)(q−1)는 필요 없거니와 있어 봐야 보안에 오히려 문제를 일으킬 수 있으니, 파기한다.

구체적 예시는 [RSA 암호화 - 5. 예시]에 아주 잘 설명되어있다.


참고자료

https://namu.wiki/w/AES

https://velog.io/@t1mmy_t1m/AES에-대하여

https://blog.naver.com/PostView.naver?blogId=wnrjsxo&logNo=221711255389

https://ko.wikipedia.org/wiki/RSA_암호

https://namu.wiki/w/RSA 암호화

profile
주니어 프론트엔드 개발자입니다 😎

0개의 댓글