개요

암호 기술은 송신자가 데이터를 변형시켜서 침입자가 가로챈 데이터로부터 아무런 정보를 얻지 못하도록 하는 것이다.

기본 용어/원칙

  1. 평문: 암호화 하기 전 문서
  2. 암호화: 평문을 암호문으로 만드는 과정
  3. 기밀성 (Confidentiality): 부적절한 노출 방지. 허가받은 사용자가 아니면 내용에 접근할 수 없어야 함.
  4. 무결성 (Integrity): 부적절한 변경 방지. 허가받은 사용자가 아니면 내용을 변경할 수 없어야 함.
  5. 가용성 (Operational security): 부적절한 서비스 거부 방지.
  6. 부인봉쇠 (End-point authentication): 메시지를 전달하거나 전달받은 사람이 메시지를 전달하거나 전달받았다는 사실을 부인할 수 없어야 함.

대칭키 암호

암호문을 생성(암호화)할 때 사용하는 키와 암호문으로부터 평문을 복원(복호화)할 때 사용하는 키가 동일한 암호 시스템이다. 암호 시스템의 안전성은 키의 길이, 키의 안전한 관리에 상대적으로 의존성이 높다. 암호문의 작성자와 이의 수신자가 동일한 키를 비밀리에 관리해야 하므로 폐쇄적인 특성을 갖는 사용자 그룹에 적합한 암호 시스템이다.

단점

  1. 암호키의 관리가 어렵다. (암호를 사용하는 사람들이 많을 수록 노출의 위험이 커진다.)
  2. 안정성을 높이기 위해선 키의 길이가 무한히 길어져야 한다. (다른 암호 알고리즘도 공통적인 문제를 가지고 있다. 세상에 완벽한 암호는 없다. 무차별 공격 참고)
  3. 공유된 키를 나누기 위해서는 안전한 통신이 필요하다. 즉 이 키를 나누는 방식이 문제가 된다.

종류

스트림 암호

스트림 암호는 하나의 키로 연속된 비트의 정보를 암호화 시킨다. 즉 암호화 시킬수 있는 크기의 범주가 존재 하지 않는다.
카이사르 암호

블록 암호

BlockCipher.png

블록 암호는 메시지가 k비트 단위로 암호화 된다. 예를 들어 k = 64이면 64비트의 블록들로 쪼개어 각 블록을 독립적으로 암호화 한다. 비밀번호의 길이가 k비트라고 할경우 만들수 있는 사상의 개수는 [math]2^k![/math]가 된다. 즉 k 가 조금만 커져도 만들어 낼 수 있는 사상의 개수는 천문학적인 수가 되기 때문에 블록 암호화는 매우 안전한 대칭키 암호화 방법이다. 이때 사상을 나타내는 테이블을 만드는것은 불가능 하기 때문에, 임출력 블록의 순열 테이블을 임의로 모방 생성하는 함수를 사용한다.

기본 원리

입출력 테이블을 모방 생성하는 방식을 사용한다. 먼저 x 비트의 블록을 일정한 간격으로 r 개로 나눈다. 각 x / r 비트의 청크는 관리가능한 크기로 x / r 의 사상을 같는 테이블에 의해 처리된다. 이렇게 처리된 결과물은 알려진 방식으로 스크램블 한후 (랜덤으로 서로의 위치를 변경) 다시 x 비트로 합쳐지고 다시 라운드를 반복하게 된다. 라운드를 여러번 반복하는 이유는 각 입력 비트가 대부분의 최종 출력 비트들에 영향을 미치도록 하는 것이다.

종류

DES - 안전하지 않은 암호화 방식 (대략 수초내에 풀어낼 수 있다)
3DES - DES의 강화판인데 이거 쓰느니 AES 를 쓰기 때문에 ...
AES - 최신의 암호화 방식 (DES를 1초내에 푸는 컴퓨터는 AES-128을 146조년 걸려서 풀게 된다.)

암호 블록 체이닝

본문 암호 블록 체이닝 참고

공개키 암호

Public Key Encryption.png

수신자와 송신자가 서로 안전한 통신을 위해서 하나의 비밀키를 공유 하기 보다는 세상의 모든 사람에게 공개된 공개키와 자기 자신만이 아는 비밀키로 통신하는 방식이다. 한 메시지를 암호화 하기 위해서는 비밀키나 공개키로 암호화 할 수 있다. 그러나 비밀키와 공개키가 동시에 있어야 암호문은 해독된다.

쉬운 설명

자물쇠를 잠글 수 있는 키와 열수 있는 키가 있다. 잠글 수 있는 키의 번호는 세상사람들에게 공개 되어 있다. 하지만 열수 있는 키의 번호는 나만 알기 때문에 상대방은 나에게 보내고 싶은 메시지를 잠글 수 있는 키로 잠그고 나에게 보내면 열수 있는 키로 열어서 확인하게 된다.

단점

  1. 대칭키 암호화는 키를 안다는 것이 암묵적으로 무결성과 종단간 인증을 보장했다. (내 키로 안 열리면? 다른 사람이 보낸 것이다.) 그러나 공개키 암호화는 암호문을 만드는 방식이 공개되어 있기 때문에, 종단간 인증과 무결성이 보장되지 않는다.

종류

Diffie-Hellman
RSA