암호화와 복호화에 사용하는 암호키가 같은지 다른지에 따라 암호화 기법이 대칭키 기법과 비대칭키(공개키) 기법으로 나뉘어 진다.
암호화
- 평문(plain text)을 암호문(Crypto text)으로 변환하는 과정이다.
- 사용자가 입력한 데이터를 알아볼 수 없는 데이터로 변경하는 과정이다.
- 암호문의 형태로 정보를 기억 장치에 저장하거나 통신 회선을 통해 전송함으로써 정보를 보호할 수 있다.
- 암호화의 분류로는 단방향 암호화와 양방향 암호화가 있다.
복호화
- 암호문(Crypto text)을 평문(plain text)으로 변환하는 과정이다.
- 암호화된 데이터를 정상적인 데이터로 변경하는 과정이다.
대칭키 암호
- 하나의 키로 암호화와 복호화를 모두 수행한다.
- 암호문을 작성할 때 사용하는 암호키와 암호문을 해독할 때 사용하는 해독 키가 같기 때문에
이 키는 절대로 외부에 유출되지 않도록 관리해야 하여 비밀키(Secret Key)라고 부른다.- 대칭키 기법을 사용하는 암호 알고리즘 방식으로 DES, 3DES, AES, SEED, ARIA, MASK 등이 있다.
대칭키 장점과 단점
- 장점
- 암호화와 복호화에 쓰이는 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하여, 시스템 개발 환경에 용이하다.
- 비대칭키에 비해 암호화와 복호화 속도가 빠르다.
- 단점
- 키를 교환해야한다는 문제 (키 배송 문제)가 발생한다.
- 키를 교환하는 중 키가 탈취될 수 있는 문제도 있고
- 사람이 증가할수록 전부 따로따로 키교환을 해야하기 때문에
- 관리해야 할 키가 방대하게 많아진다.
대칭키 암호 알고리즘
- DES 알고리즘(Data Encryption Standard)
- 1975년에 IBM에서 개발하고 1979년에 미국 NBS(National Bureau of Standards, 현 NIST)가 국가 표준 암호 알고리즘으로 지정한 대칭키 암호 알고리즘이다.
- 평문을 64비트로 나눠 56비트의 키를 이용해 다시 64비트의 암호문을 만들어 내는 알고리즘이다.
- 블록 암호 기법을 사용하고 16단계의 파이스텔 네트워크(Feistel Network)를 거쳐 암호화를 수행한다.
(블록 암호 : 평문을 고정된 크기의 블록단위로 암ㆍ복호화를 수행하며, 각 블록마다 동일한 키가 사용된다.)
- 3DES 알고리즘
- DES 알고리즘을 3중으로 만들어 DES 암호를 보완한 암호 알고리즘이다.
- 암호화-암호화-암호화 방법이 아닌, 암호화-복호화-암호화 방법으로 암호화를 한다.
공개키 암호(비대칭키 암호)
- 암호화와 복호화에 사용하는 키가 서로 다르다
- 비밀키 하나 만 가지는 대칭키 암호 방법과 달리, 공개키와 비밀키 두 개가 존재한다.
- 공개키 암호를 구성하는 알고리즘을 대칭키 암호 방식과 비교하여 비대칭 암호라고 불린다.
- 대칭키의 키 교환 문제를 해결하기 위해 등장한 방식이다.
- 암호화할 때의 키는 공개키(public key), 복호화할 때의 키는 개인키(private key)를 사용한다.
- 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있어서
특정한 비밀키를 가지는 사용자만이 내용을 열어볼 수 있도록 하는 방식이다.- 공개키 기법을 사용하는 암호 알고리즘 방식으로 Diffie Hellman, RSA, DSA, ECC 등이 있다.
공개키 장점과 단점
- 장점
- 키 분배를 할 필요가 없다.
- 기밀성/인증/부인방지 기능을 제공한다.
- 단점
- 속도가 느리다.
공개키 암호 알고리즘
- RSA 알고리즘
- RSA는 창시자들의 이름 앞글자를 따서 지었다 (Ron Rivest, Adi Shamir, Leonard Adleman)
- 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘이다.
- RSA는 큰 정수의 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있다.
- 1993년 피터 쇼어는 쇼어 알고리즘을 발표하여, 양자 컴퓨터를 이용하여 임의의 정수를 다항 시간 안에 소인수 분해하는 방법을 발표했다. 따라서 양자 컴퓨터가 본격적으로 실용화되면 RSA 알고리즘은 무용지물이 될 것이다.
대칭키 | 공개키 | |
---|---|---|
키 개수 | 1개의 키 | 2개의 키 |
키 보관 형태 | 비밀리에 보관 | 개인키는 비밀리에 보관 공개키는 어디든지 배포 |
키 교환 | 키를 교환하는 것이 어려우며 위험함 | 쉬움 |
키 길이 | 주로 64비트, 128비트 | 주로 512비트,1024비트,2048비트 |
암호화 속도 | 빠름 | 느림 |
암호화할 수 있는 평문의 길이 | 제한없음 | 제한있음 |
기밀성 | 가능 | 가능 |
인증 | 부분적 가능 | 가능 |
무결성 | 부분적 가능 | 가능 |
부인 방지 | 불가능 | 가능 |
🙇 참고 사이트 🙇
https://gaeko-security-hack.tistory.com/123 https://velog.io/@gs0351/%EB%8C%80%EC%B9%AD%ED%82%A4-vs-%EA%B3%B5%EA%B0%9C%ED%82%A4%EB%B9%84%EB%8C%80%EC%B9%AD%ED%82%A4 https://www.uname.in/129 https://veneas.tistory.com/entry/%EB%B3%B4%EC%95%88-%EC%95%94%ED%98%B8%ED%99%94%EC%99%80-%EB%B3%B5%ED%98%B8%ED%99%94-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%95%94%ED%98%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%A2%85%EB%A5%98