위로 아래

암호화 시스템

암호 시스템

암호화(encryption) : 평문(plaintext) 입력을 암호문(ciphertext) 출력으로 변환하는 알고리즘

복호화(decryption) : 암호문을 평문으로 변환하는 것

 

대칭 키(symmetric key) 암호 시스템

  1. 암호화, 복호화에 같은 키를 사용
  2. 키가 있어야 암호화 복호화가 가능.
  3. 네트워크를 통해 키를 전송할 때 제3자가 키를 가로채면, 보안에 위험이 있다.
  4. 작동 방식
    1. 데이터를 보내는 사람이, 키를 이용해 데이터를 암호화
    2. 네트워크를 통해 암호화된 데이터 전송
    3. 데이터를 받는 사람이, 같은 키를 사용하여 암호 데이터를 복호화

공개 키(public key) 암호 시스템

  1. 암호화, 복호화에 다른 키를 사용
  2. 공개키(public key) : 암호화에 사용하는 키.
  3. 비밀키(secret key) : 복호화에 사용하는 키
  4. 작동 방식
    1. 데이터를 보내는 사람이, 공개키를 이용해 데이터를 암호화
    2. 네트워크를 통해 암호화된 데이터와 공개키 전송

 

 


해시

해시 (hash) 용어

  1. 해시 함수 (hash function) : 임의의 길이를 갖는 임의의 데이터를 고정 길이의 데이터로 매핑하는 단방향 함수.
  2. 해싱 (hashing) : 해시함수를 적용하는 것
  3. 해시값 (hash value) : 해시 함수를 통해 출력된 값. 해시값의 길이는 항상 고정되어 있다.
  4. 해시 충돌 : 서로 다른 입력 2개가 해시 함수를 통해 같은 해시 값을 출력하게 된 경우. 해시 함수가 잘 정의되어 있으면 내부 연산이 빠르고 해시 충돌이 적다. 

 

 


해시 테이블

해시 테이블 (hash table)

  1. 특징
    1. 키와 값으로 구성된 검색 시스템.
    2. 모든 key에는 대응하는 value가 하나씩 있으며, key를 알면 연결된 value를 즉시 찾을 수 있어 검색 수행 속도 매우 빠르다.
    3. 시간 복잡도 O(1)
    4. 해시 함수를 사용해 검색을 수행한다.
    5. 체이닝(chaining) : 
    6. 컴퓨터 보안의 암호화와 체크섬은 해싱에 크게 의존한다.
  2. 작동 방식
    1. key(문자열)을 해시 함수에 입력
    2. 배열의 인덱스에 매핑된 해시값 생성.
    3. 생성된 해시값을 이용, 테이블에서 검색이나 추가하려는 요소가 저장된 배열의 인덱스를 계산.

 


체이닝

체이닝 (chaining)

  1. 해시 테이블은 해시 충돌이 일어날 우려가 있다.
  2. 체이닝은 key-value 요소를 배열에 저장하는 대신, 연결 리스트에 저장해서 해시충돌을 방지한다.
  3. 해시 함수가 같은 인덱스를 반환하더라도, 해당 인덱스에 노드들이 연결되어 충돌 없이 데이터를 검색할 수 있다.
  4. 연결이 길어진만큼 시간 복잡도가 증가한다.

 


해시 사용 범위

 

암호화와 해시의 차이점

  1. 암호화 : 양방향 과정. 정보를 암호화하고, 다시 복호화하는 과정이 필요하다. 
  2. 해싱 : 단방향 과정. 해싱값을 받은 이후에는, 원래의 데이터가 필요하지 않다.

 

디지털 서명

  1. RSA(Rivest-Shamir-Adleman) 
    1. 암호화하기 전의 데이터에 해시 함수를 사용
    2. 디지털 서명의 보안을 보장하기 위해 해시를 사용
  2. DSA(Digital Signature Algorithm)
    1. SHA(Secure Hash Algorithm) 기반의 암호화 해시 함수 사용.
    2. 디지털 서명의 보안을 보장하기 위해 해시를 사용

 

사용자 인증

  1. 단방향의 1대1 함수이므로, 비밀번호를 사용하는 보안에 적합
  2. 해시를 이용해 비밀번호를 보관하면, 비밀번호를 해시값으로 저장하기 때문에 제3자가 데이터베이스에 접근해도 비밀번호 평문을 알지 못한다. 

 

순환 중복 검사 CRC (Cyclic Redundancy Check)

  1. 사물 인터넷에 사용되는 마이크로컨트롤러에 내장된 임베디드 시스템에는 해싱을 이용하여 동작하는 순환 중복 검사 모듈이 있다.
  2. 디지털 데이터의 오류를 감지하는 방식.
  3. 해시 함수를 통해 고정된 비트 수의 체크섬을 찾아 발신할 데이터에 첨부하는 방식으로 데이터의 유효성을 검증한다.
  4. 수신자가 전송된 데이터를 가지고 다항식 나눗셈의 나머지를 계산해 데이터 오류를 확인한다
  5. 수신 데이터의 CRC가 발신 데이터의 CRC와 일치하지 않는다면 데이터가 손상된 것이다. 

 

그 외

  1. 난수 생성
  2. 메시지 인증 코드
  3. 단방향 함수
  4. 암호 기술자 전용 응용 프로그램
  5. 많은 양의 검색 연산을 수행하는 응용 프로그램 (해시의 시간 복잡도는 O(1)이기 때문)