이 글은 암호학에 대한 지식이 없는 사람도 쉽게 AES 암호에 대해 이해할 수 있도록 작성되었습니다.
보통 AES에 대해 설명을 하려면 보기만 해도 잠이 밀려오는 수면제 같은 전문용어들이 많이 들어가야 하는데 그런 전문용어들은 다 빼고 아주 쉽게 설명하도록 하겠습니다. 이 글의 구성은 AES에 대한 간단한 설명과 실습, 암호키 관리로 구성됩니다.
AES(Advanced Encryption Standard)에 대한 간단한 설명
AES는 세계적으로 기관이나 군대, 기업등에서 기밀자료 암호화로 믿고 쓸 만큼 강력한 암호 기술입니다. AES의 암호화 방식은 암호키를 생성하여 암호화하는 방식입니다. 예를 들어 "나는 어제 게임을 2시간 했다"라는 텍스트를 AES로 암호화하면 아래 그림과 같은 방식으로 이루어집니다.
↑ 위 그림처럼 "나는 어제 게임을 2시간 했다"라는 텍스트에 AES 암호키가 더해지면 암호문이 탄생하는 방식입니다. 여기서 생성된 암호문은 AES 암호키가 없으면 절대로 해독할 수 없습니다. 암호문이 여러 사람들에게 공개되어도 당신이 어제 게임을 2시간 했는지 아무도 알지 못합니다. 당신이 어제 게임을 2시간 했다는 것을 암호문을 가진 사람들한테 그냥 알려주고 싶으면 그들한테 암호키를 건네주기만 하면 됩니다. 그럼 그들은 당신한테 건네받은 암호키로 암호문을 해독해 당신이 어제 게임을 2 시간 했는지 알아낼 수 있습니다. 여기서 중요한 점은 당신이 암호화할 때 생성한 암호키와 암호문을 해독하기(복호화) 위해 쓰인 암호키는 완전히 동일하다는 것입니다. 암호화할 때의 암호키와 복호화할 때의 암호키가 동일한 암호화 방식을 대칭키 암호화라고 부릅니다.
따라서 AES는 대칭키 암호화 방식입니다. 그럼 텍스트를 AES로 암호화하는 실습을 해보겠습니다.
AES 암호화 실습 도구
실습 도구에 적힌 숫자의 순서대로 암호화를 하시면 됩니다. 가장 처음에 해야 할 일은 1. 암호키를 생성하는 것입니다. 암호키는 직접 만들어도 되고 생성 버튼을 눌러서 자동으로 생성해도 됩니다. 암호키 유형은 AES-128, 192, 256 등 3가지가 있는데 이것은 암호키의 길이를 나타냅니다.
암호키가 길수록 보안성이 높아지고 편의성 및 속도등이 저하됩니다.(AES-256)
암호키가 짧으면 편리하고 속도는 빠르나 256에 비해 상대적으로 보안성은 낮아집니다.(AES-128)
AES 128이라고 해서 허술한 암호가 아닙니다. 충분히 강력한 암호입니다. 암호키는 마음에 드는 것이 나올 때까지 여러 번 생성해도 됩니다. 암호키 생성 후 2. 암호화할 텍스트를 입력하고 3. 암호화 하기 버튼을 누르면 됩니다. 복호화하려면 4. 복호화 하기 버튼을 누릅니다.
암호키 타입AES 128 AES 192 AES 256
주의 사항: 이 암호화 실습 도구는 추가적인 보안 장치가 없는 오로지 학습용이므로 중요한 금융 정보 같은 것을 암호화하는 데 사용하지 마세요. 단, 메모장에 그냥 저장되어 있는 평문을 암호화해서 저장하고 싶은 텍스트가 있다면 이 실습 도구를 활용해도 괜찮습니다. 메모장에 그냥 저장하는 것보다 암호화하여 저장하는 것이 훨씬 보안에 좋습니다.
암호키 관리
AES는 텍스트뿐만 아니라 모든 종류의 파일을 전부 암호화할 수 있습니다. AES로 하드에 있는 파일들을 암호화하고 그것을 복호화할 수 있는 유일한 암호키를 빼돌려 금전을 요구하는 것이 바로 랜섬웨어입니다.
금전을 지급하면 파일을 복호화할 수 있는 암호키를 돌려받는 식이죠.
또한 AES는 어떤 사이트에 가입할 때 입력하는 회원 비밀번호 같은 것을 암호화하기도 합니다. 사이트가 해킹을 당해 회원정보가 유출되어도 비밀번호 같은 것이 AES로 암호화가 되어 있다면 비밀번호가 뭔지 알아낼 수 없습니다.
암호화된 것을 읽으려면 무조건 암호키가 있어야 됩니다. 그러나 암호키도 같이 유출되면 그때는 유출된 회원 정보를 읽을 수 있습니다.
그래서 AES는 암호키 관리가 중요합니다.
암호키와 암호문은 가까울수록 보안이 허술하고 멀어질수록 보안에 좋습니다.
그러나 편리성은 보안과 반비례합니다.
암호키와 암호문이 가장 가까운 경우(보안 최악, 편리성 최상)
메모장에 암호키와 암호문을 같이 저장
↑ 이렇게 암호키와 암호문을 같이 저장하면 매우 편리는 하겠지만 AES 도구만 있으면 누구나 암호문을 풀 수 있습니다.
따라서 암호화하는 의미가 크게 없습니다.
암호키와 암호문이 가까운 경우(보안 하, 편리성 상)
같은 폴더에 암호키와 암호문을 같이 저장
↑암호키와 암호문이 각각 따로 저장된 파일을 같은 폴더에 넣은 경우로 메모장에 같이 저장한 위의 사례보단 암호키와 암호문이 서로 거리가 멀어지긴 했지만 여전히 같은 폴더에 있으므로 보안에 취약합니다. AES 도구를 활용할 줄 아는 사람이 이 폴더를 열게 되면 암호문을 해독할 수 있습니다.
암호키와 암호문이 약간 멀어진 경우(보안 중, 편리성 중)
암호키와 암호문을 각각 다른 폴더에 저장
↑ 암호키와 암호문을 각각 다른 폴더에 저장하면 같은 폴더에 저장하는 것보다는 보안에 좋습니다.
암호문을 발견해도 암호키를 찾으려면 다른 폴더를 탐색해야 하기 때문입니다.
그러나 암호를 한 본인도 암호키가 어느 폴더에 저장되어 있는지 기억하고 있어야 하기 때문에 편리성은 조금 낮아집니다.
암호키와 암호문이 멀어진 경우(보안 상, 편리성 하)
암호키를 USB 같은 외부 저장 장치로 보내 컴퓨터 바깥에 저장
↑ 암호키를 USB 같은 외부 저장 장치에 저장하면 암호문과 격리되어 보안에 좋습니다.
그러나 암호를 풀기 위해서 USB를 연결해야 하고 USB 보관에 신경 써야 하기 때문에 편리성은 낮아집니다.
암호키와 암호문이 완전 멀어진 경우(보안 최상, 편리성 최하)
암호키를 머리로 기억하여 저장
↑ 보안에 미친 사람으로 암호키를 물리적 장치에 저장하는 것이 아닌 본인 머리에 저장하는 행위
이 경우 무조건 암호키를 기억하고 있어야 하며 암호키를 잊어버리는 순간 암호문을 풀 수 없게 됩니다.
암호키와 암호문 둘 다 머리에 저장
↑ 사이코패스적 성향이 있으므로 가까이하지 않는 것이 좋습니다.
마무리
AES는 암호키 관리가 중요하며 보안과 편리성은 양립할 수 없으므로 둘 중 하나는 포기하거나 원만한 지점에서 합의를 봐야 합니다. 또한 AES를 포함해서 여러 기술들은 어떻게 쓰냐에 따라 유용하게 활용되기도 하지만 좋지 않게 악용되기도 하기 때문에 사용에 있어서 주의가 필요한 기술이라 할 수 있습니다.
댓글