[Network] 암호화 (대칭 키, 비대칭 키, 해시)
암호화
전송, 수신, 저장하는 데이터를 아무나 알 수 없도록 알고리즘을 이용하여 변환하는 프로세스
암호화 할 때 키 없이 알고리즘으로만 암호화를 한다면 쉽게 복호화 할 수 있지만 암호화 할 때 키를 사용하여 암호화를 하면 이를 방지 할 수 있다.
키를 사용하여 암호화를 할 경우 알고리즘을 알고 있어도 키를 가지고 있지 않으면 복호화가 불가능하다.
암호화 종류
- 대칭 키 암호화
- 비대칭 키 암호화
- 해시 암호화
대칭 키 암호화
데이터를 암호화 / 복호화 할 때 같은 키를 사용하는 방식
장점
- 암호화에 필요한 키의 길이가 비교적 짧다
- 암호화 / 복호화에 필요한 계산이 비교적 간단하다
단점
- 키 교환의 문제
-> client와 server가 대칭키 방식으로 통신하려면 같은 키를 가지고 있어야하기 때문에 client 또는 server가 키를 전송해야 한다. 하지만 전송과정에서 암호화가 되어있지 않으면 키가 노출되어 제3자가 데이터를 열어볼 수 있다.
종류
비대칭 키 암호화
대칭키 암호화 방식과 달리 암호화 / 복호화에 사용하는 키가 각각 다른 방식
공개키(Public Key), 개인키(Private Key) 두개의 키가 필요
공개키로 암호화하면 개인키로 복호화, 개인키로 암호화하면 공개키로 복호화
장점
- 대칭키 암호화보다 키 분배 및 관리가 쉽다
- 대칭키 암호화보다 확장 가능성이 높다
단점
- 암호화에 필요한 키의 길이가 길다
- 암호화 / 복호화에 필요한 계산이 복잡하다
-> 다수의 client로부터 전송된 암호화 데이터를 처리해야 하는 server의 입장에서는 계산이 복잡해지는 것은 서버의 성능을 저하시키는 원인이 될 수 있다
종류
- 인수분해(ex: RSA,Robin)
- 이산대수(ex: DH,DSA)
- 타원곡선방정식(ex: ECC)
해시(Hash) 암호화
복호화를 위한 암호화 방식이 아님
해시 방식을 사용하면 원본 데이터의 길이와 상관없이 고정 길이의 해시 값을 얻게 됨
원본 데이터의 변경을 확인하는 무결성 검증에 사용
원본 데이터가 일부만 변경되어도 해시 값이 대폭 변경 됨
리눅스에서 사용자 암호 저장할 때 사용
사용자의 입력으로 해시 값을 생성하여 암호의 해시 값과 비교하여 일치 여부 확인