암호란?
0과 1로 이루어진 이진수 데이터를 수학적 계산을 통한 비트 변경을 수행하는 것
암호화 : 사용자가 입력한 데이터를 알아볼 수 없는 데이터로 변경하는 과정. 복호화 : 암호화된 데이터를 정상적인 데이터로 변경하는 과정.
단방향 암호(해시) : 암호화를 수행하고 나온 데이터를 다시 원래의 데이터로 돌릴 수 없는 암호화 방식. 1bit만 바뀌어도 전혀 다른 암호문으로 변함. 양방향 암호 : 데이터 통신을 보호하기 위해 사용하는 기법. 양방향 암호화에서 암호화키, 복호화키가 필요함.
단방향 암호
복호화가 불가능하도록 암호화하는 방식.
데이터의 무결성(데이터가 허락된 사용자로 인해 수정이 제대로 이루어졌는지, 무단으로 데이터를 조작했는지 여부를 확인하는 것)을 검증함.
해시 함수/ 알고리즘
임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수. ex) SHA 시리즈, MD5
- MD5
- 해시 값의 크기 : 128bit, 32Byte 어떠한 입력값을 받더라도 해시값은 일정한 크기를 유지함. 1bit 라도 다르게 되면 전혀 다른 값이 나타남
- SHA
- 해시 값의 크기 : 128, 256, 384, 512. 각 숫자에 맞는 비트 수의 해시 값이 출력된다.
양방향 암호
대칭키 암호 알고리즘
하나의 키로 암호화 복호화르 모두 수행하는 알고리즘
장점: 암/복호화에 쓰이는 키 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하다. 비대칭키에 비해 암/복호화 속도가 빠르다.
단점: 키관리의 어려움이 있다. 잦은 키 변경이 있는 경우 불편함을 초래. 디지털 서명기법에 적용이 곤란하고 안전성을 분석하기가 어렵다.
- DES
- 평문을 64bit로 나누어 56bit 키를 이용해 다시 64bit의 암호문을 만들어냄 16단계의 파이스텔 네트워크(총 bit에서 반을 암호화 하는 방식)를 겨쳐 암호화를 수행
- 3DES
- DES알고리즘을 3중으로 보완한 알고리즘. 세 개의 키를 이용하여 암호화, 복호화, 암호화 과정으로 암호화 수행 3개의 키는 키 묶음으로 참조된다. 크기(3 * 64 = 192bit)
- AES
- 128bit 암호화 블록 DES의 안정성에 대해 여러가지 공격 방법들이 발표되면서 NIST에서 고안한 암호 알고리즘 128비트 블록암호 AES-128, AES-192, AES-256는 암호화 키로 각각 128, 192, 256bit를 가지고, 10, 12, 14 라운드를 실행한다. 파이스텔 네트워크를 사용하지 않고, 대입치환방식(Substitution-Permutation Network)을 사용한다.
- 아리아(ARIA), SEED
- 1999년 한국인터넷진흥원과 한국 암호 전문가들이 개발한 128 비트 블록암호
공개키 암호 알고리즘
암호화에 쓰이는 키와 복호화에 쓰이는 키가 다르다. 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 함 다수가 통신할 때 키의 개수가 급증하게 되는 어려움을 보완하고자 함. 개인키로 암호화한 정보는 공개키로만 복호화 가능. 공개키로 암호화한 정보는 개인키로만 복호화 가능.
- RSA
- 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘. 소인수 분해의 난해함에 기반하여 공개키로 개인키를 짐작할 수 없도록 만들어졌다. 두개의 큰 소수들의 곱과, 추가 연산을 통해 하나는 공개키를 구성하고 또 하나는 개인키를 구성한다.
- ELGamal
- 이산 대수 문제의 어려움에 기반
- ECC
- 타원 곡선의 원리를 이용하여 차세대 공개키암호 방법으로 주목받고 있다.
- DSA(SEED)
- 한국 순수 기술로 개발한 128비트 블록암호