감추어진 정보가 조작되지 않고 허가된 사람에게만 공개되도록 하는 방법을 암호학 cryptograph라고 한다.
암호는 다음의 3가지 원칙을 지켜야 한다.
- 기밀성 Confidentiality : 암호화된 내용이 무엇인지 알 수 없어야 한다.
- 무결성 Integrity : 암호화된 내용이 원본과 동일함을 보장하여야 한다.
- 인증 authentication : 권한이 있는 자만 암호화된 내용에 접근할 수 있어야 한다.
보호되고 있지 않은 데이터를 평문 plain text라고 한다.
암호화된 내용을 암호문 cipher text라고 한다.
평문을 암호화하여 암호문으로 만들기 위하여 암호 알고리즘 cryptography algorithm을 사용한다.
평문을 암호문으로 만드는 과정을 암호화 encryption이라고 한다.
암호문을 평문으로 만드는 과정을 복호화 decryption이라고 한다.
예전에는 암호 알고리즘 자체를 비밀로 하여 기밀성을 지켰지만, 요즘에는 트렌드가 바뀌어 암호 알고리즘을 공개하여 성능을 검증받는다. 대신 암호 알고리즘이 비밀 정보를 사용하도록 하고, 이 비밀 정보가 없으면 복호화 할 수 없도록 한다. 이 비밀 정보를 키 key라고 한다.
암호화에는 양방향 암호화 방식과 단방향 암호화 방식이 있다.
양방향 암호화 방식은 암호화와 복호화를 모두 지원한다.
양방향 암호화 방식은 대칭키 방식과 비대칭키 방식으로 나뉜다.
대칭키 방식은 암호화와 복호화에 모두 같은 키를 사용한다. 대표적으로 AES, Twofish 같은 알고리즘이 있다.
비대칭키 방식은 암호화와 복호화에 각자 다른 키를 사용한다. 대표적으로 RSA 같은 것들이 있다.
반면에 단방향 암호화 방식은 암호화만 지원한다.
대표적으로 md5, sha 같은 것들이 있다.
참고자료