표준화된 암호와 기기를 사용한다면 그 암호 알고리즘을 감추기는 어렵다. 하지만 감춘다고만 해서 보안성이 높아지는 것도 아니다. 공개된 암호 알고리즘이 장기간 분석에도 잘 견뎌낸다면 그 알고리즘은 비로소 안전하다고 인정된다. 암호 개념과 알고리즘에 대해 살펴보자.
즉 암호체계는 '무죄가 증명될 때까지는 유죄'다
- 암호화 알고리즘(encryption algorithm)
: 암호화나 복호화를 수행할 때 양쪽이 알고 있어야 할 '수단' [ex. 자물쇠]- 암호화 키(encryption key)
: 약속한 규칙 [ex. 열쇠]
- 암호문(CiperText): 비밀을 유지하기 위해 당사자만 알 수 있도록 꾸민 약속 기호
- 평문(PlainText): 누구나 알 수 있게 쓴 일반적인 글
- 암호화(encryption) : 평문을 암호문으로 바꾸는 것
- 복호화(decryption) : 암호문을 평문으로 바꾸는 것
평문을 암호화하면 역으로 복호화가 불가능해서 단방향 암호라고 칭한다.
단방향암호는 흔히 Hash를 이용해 암호화를 하며 패스워드등에 사용된다.
- 해시함수(Hash Function) : 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수. 결과값으로 입력값을 도출 불가능.
EX) 웹사이트에 비밀번호를 입력하면, 입력값의 hash값만 서버에서 저장해서 서로 비조대교(무결성 확인) 후 사용자 접근 권한을 부여한다. 데이터의 진위여부는 확인하고싶으나, 본 데이터의 기밀성을 지키고 싶은 경우에 사용한다.
- 대칭키 알고리즘(Symmetric-Key Algorithm) : 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘.
대칭키 암호화는 평문을 특정 대칭키로 암호화하고, 결과로 나온 암호문도 동일한 대칭키로 복호화 할 수 있는 방식을 의미한다.
동일한 키로 암호화/복호화를 수행하기에 키를 비밀스럽고 안전하게 전달해야된다는 숙제가 있다.(그래서 비밀키 알고리즘이라고도 부른다). 이 키 전달문제를 해결하기 위해 고안된 것이 비대칭키(공개키) 알고리즘이다.
공개 키 암호 방식(Public-Key Cryptography) : 암호 방식의 한 종류로 비밀 키 암호 방식과 달리 암호화와 복호화에 이용하는 키가 다른 방식.
하나의 키를 사용하는 대칭키 알고리즘과 달리 한 쌍의 키를 사용하기에 비대칭키 알고리즘이라고도 부른다.
공개키 알고리즘은 따라서 개인키/공개키 이렇게 한 쌍으로 동작한다.
명칭 그대로 개인키(Private key)는 꼭 숨겨서 보관해야할 키이고, 공개키(Public Key)는 상대방한테 공개해도 문제가 없다.
동작방식은 두 가지로 분류할 수 있다.
1. 평문 -> 공개키로 암호화 -> 암호문 -> 개인키로 복호화 -> 평문
2. 평문 -> 개인키로 암호화 -> 암호문 -> 공개키로 복호화 -> 평문
1의 경우, 공개키로 암호화된 암호문은 개인키로만 복호화가 가능하다. 즉, 원하는 수신인을 특정하고 싶을때 해당 수신인의 공개키로 암호화를 해서 메시지를 보내면 된다. 해당 메세지는 그 수신인의 개인키로만 복호화가 가능하기 때문이다.
2의 경우, 개인키로 암호화된 암호문은 공개키로만 복호화가 가능하다. 다른사람은 나의 공개키를 알고 있기에 해당 메세지가 내 공개키로 복호화가 된다면, 메세지의 발신인이 '나'라고 증명할 수 있다.
즉, 2의 경우 본인이 해당 메세지의 발신임임을 증명하기 위한 암호화로 쓰인다.
따라서 용도별 암호알고리즘의 사용을 정리하자면 다음과 같다.
전자 서명, 전송 부인 방지 : 비대칭 키 암호화
(수신자를 특정하거나 발송인이 본인임을 증명할 수 있어서)
파일 자체 암호화, privacy 유지 : 대칭 키 암호화
(키의 개수가 적은만큼 비대칭 키 암호화 보다 빠르다는 이점이 있다)
데이터 원본 확인 : hash
( 입력값이 조금만 달라져도 결과값이 확 바귀고 해시함수는 무결성을 검증해주기 때문에)