암호화란 데이터를 인가되지 않은 사람이 이해할 수 없도록 변환하는 기술이다.
원본 데이터(평문)를 특정 규칙(알고리즘)을 통해 암호문(Cipher Text)으로 변환한다.
: 암호화만 가능하고 복호화가 불가능하거나 매우 어렵도록 설계된 방법
: 주로 비밀번호 저장, 무결성 검사 등에 사용된다.
: ex) 해시 함수
: 암호화와 복호화가 모두 가능한 방법
: 데이터를 암호화한 후 다시 복호화하여 원본을 얻을 수 있다.
: ex) 대칭키, 비대칭키 방식
: 순수하게 입력값에 대해 고정된 크기의 해시값을 생성한다.
: 단순히 데이터가 변조되었는지를 확인하는 데 사용된다.
: 키 없이 생성하므로 누구나 같은 해시값을 만들 수 있다.
: 해시를 만들 때 비밀키를 함께 사용한다.
: 수신자는 비밀키를 알아야 해시값을 검증할 수 있으므로 데이터의 변조 여부 뿐만 아니라 발신자의 인증도 가능하다.
: 암호화와 복호화에 같은 키를 사용한다.
: 속도가 빠르고 구현이 간단하지만 키를 안전하게 공유하는 것이 어렵다.
: 대표 알고리즘으로는 AES, DES
: 서로 다른 두 개의 키(공개키, 개인키)를 사용한다.
: 공개키로 암호화하면 개인키로만 복호화할 수 있고 개인키로 서명하면 공개키로 검증할 수 있다.
: 대표 알고리즘으로는 RSA, ECC
키 분배 문제 : 통신하는 모든 당사자가 같은 키를 가져야 하므로 키를 안전하게 전달하는 것이 어렵다.
확장성 문제 : 사용자 수가 많아지면 사용자마다 별도의 키를 관리해야 하므로 키 관리가 복잡해진다.