위로
아래
암호화 시스템
암호 시스템
암호화(encryption) : 평문(plaintext) 입력을 암호문(ciphertext) 출력으로 변환하는 알고리즘
복호화(decryption) : 암호문을 평문으로 변환하는 것
대칭 키(symmetric key) 암호 시스템
- 암호화, 복호화에 같은 키를 사용
- 키가 있어야 암호화 복호화가 가능.
- 네트워크를 통해 키를 전송할 때 제3자가 키를 가로채면, 보안에 위험이 있다.
- 작동 방식
- 데이터를 보내는 사람이, 키를 이용해 데이터를 암호화
- 네트워크를 통해 암호화된 데이터 전송
- 데이터를 받는 사람이, 같은 키를 사용하여 암호 데이터를 복호화
공개 키(public key) 암호 시스템
- 암호화, 복호화에 다른 키를 사용
- 공개키(public key) : 암호화에 사용하는 키.
- 비밀키(secret key) : 복호화에 사용하는 키
- 작동 방식
- 데이터를 보내는 사람이, 공개키를 이용해 데이터를 암호화
- 네트워크를 통해 암호화된 데이터와 공개키 전송
해시
해시 (hash) 용어
- 해시 함수 (hash function) : 임의의 길이를 갖는 임의의 데이터를 고정 길이의 데이터로 매핑하는 단방향 함수.
- 해싱 (hashing) : 해시함수를 적용하는 것
- 해시값 (hash value) : 해시 함수를 통해 출력된 값. 해시값의 길이는 항상 고정되어 있다.
- 해시 충돌 : 서로 다른 입력 2개가 해시 함수를 통해 같은 해시 값을 출력하게 된 경우. 해시 함수가 잘 정의되어 있으면 내부 연산이 빠르고 해시 충돌이 적다.
해시 테이블
해시 테이블 (hash table)
- 특징
- 키와 값으로 구성된 검색 시스템.
- 모든 key에는 대응하는 value가 하나씩 있으며, key를 알면 연결된 value를 즉시 찾을 수 있어 검색 수행 속도 매우 빠르다.
- 시간 복잡도 O(1)
- 해시 함수를 사용해 검색을 수행한다.
- 체이닝(chaining) :
- 컴퓨터 보안의 암호화와 체크섬은 해싱에 크게 의존한다.
- 작동 방식
- key(문자열)을 해시 함수에 입력
- 배열의 인덱스에 매핑된 해시값 생성.
- 생성된 해시값을 이용, 테이블에서 검색이나 추가하려는 요소가 저장된 배열의 인덱스를 계산.
체이닝
체이닝 (chaining)
- 해시 테이블은 해시 충돌이 일어날 우려가 있다.
- 체이닝은 key-value 요소를 배열에 저장하는 대신, 연결 리스트에 저장해서 해시충돌을 방지한다.
- 해시 함수가 같은 인덱스를 반환하더라도, 해당 인덱스에 노드들이 연결되어 충돌 없이 데이터를 검색할 수 있다.
- 연결이 길어진만큼 시간 복잡도가 증가한다.
해시 사용 범위
암호화와 해시의 차이점
- 암호화 : 양방향 과정. 정보를 암호화하고, 다시 복호화하는 과정이 필요하다.
- 해싱 : 단방향 과정. 해싱값을 받은 이후에는, 원래의 데이터가 필요하지 않다.
디지털 서명
- RSA(Rivest-Shamir-Adleman)
- 암호화하기 전의 데이터에 해시 함수를 사용
- 디지털 서명의 보안을 보장하기 위해 해시를 사용
- DSA(Digital Signature Algorithm)
- SHA(Secure Hash Algorithm) 기반의 암호화 해시 함수 사용.
- 디지털 서명의 보안을 보장하기 위해 해시를 사용
사용자 인증
- 단방향의 1대1 함수이므로, 비밀번호를 사용하는 보안에 적합
- 해시를 이용해 비밀번호를 보관하면, 비밀번호를 해시값으로 저장하기 때문에 제3자가 데이터베이스에 접근해도 비밀번호 평문을 알지 못한다.
순환 중복 검사 CRC (Cyclic Redundancy Check)
- 사물 인터넷에 사용되는 마이크로컨트롤러에 내장된 임베디드 시스템에는 해싱을 이용하여 동작하는 순환 중복 검사 모듈이 있다.
- 디지털 데이터의 오류를 감지하는 방식.
- 해시 함수를 통해 고정된 비트 수의 체크섬을 찾아 발신할 데이터에 첨부하는 방식으로 데이터의 유효성을 검증한다.
- 수신자가 전송된 데이터를 가지고 다항식 나눗셈의 나머지를 계산해 데이터 오류를 확인한다
- 수신 데이터의 CRC가 발신 데이터의 CRC와 일치하지 않는다면 데이터가 손상된 것이다.
그 외
- 난수 생성
- 메시지 인증 코드
- 단방향 함수
- 암호 기술자 전용 응용 프로그램
- 많은 양의 검색 연산을 수행하는 응용 프로그램 (해시의 시간 복잡도는 O(1)이기 때문)