원래 암호는 암호문이 노출되더라도 그 정보를 숨길 수 있어야 하는데, 스테가노그라피는 정보를 숨기지는 못함= 불완전한 암호
암
- 암호화 알고리즘(encryption algorithm)
: 암호화나 복호화를 수행할 때 양쪽이 알고 있어야 할 '수단' [ex. 봉]- 암호화 키(encryption key)
: 약속한 규칙 [ex. 봉에 감기]- 암호화 방식
: (1) 전치법(Transposition) (2)대체법(Substitution)
단순히 메시지에 들어있는 문자의 '위치'를 바꾸는 방법(ex. apple→palpe)
Scytale(스키테일 암호화, 봉 암호화) 등이 있다.
메시지의 글자를 다른 글자로 대체하여 암호화하는 방법
: 단일 치환 암호화(시저 암호화, 모노 알파베틱 암호화), 다중 치환 암호화(비즈네르 암호화, 플라이페어 암호화)
< 키워드를 모르더라도, 빈도분석법 등 통계학적 추측으로 쉽게 파악가능 > = 특정 알파벳의 빈도가 높으면, 모음으로 사용됐을 가능성이 높음
26 * 26 알파벳 대칭표
일반적인 문자 통계와 일치하지 않아, 17C-18C에 널리 사용되던 방식
단순한 빈도분석법으로는 복호화가 불가능하지만 찰리 베비지에 의해 복호화함
제 1차 세계대전: 영국의 아전 system
제 2차 세계대전: 연합군이 사용
암호화 시 같은 행= 오른쪽, 같은 열 = 아래쪽, 다른 행/열일 때는 둘이 만나는 좌표의 열
플라이페어 암호화는 하나의 알파벳을 다른 알파벳 여러 개로 변경할 수 있다는 점에서는 다중 치환 방식이지만, 2개의 알파벳을 묶어서 본다는 점에서는 단일 치환 방식이라고도 할 수 있다.
암호화 강도를 높이기 위해서는 혼돈(confusion)/확산(diffusion) 성질 이용
단일 대칭 암호화 방식은 혼돈의 성질이 부족하여 통계적 분석으로 쉽게 복호화 가능
64비트의 블록 암호화 알고리즘을 56비트 크기의 암호화 키로 암호화한다.
하나의 블록인 64비트를 으로 나눔.
총 16라운드(라운드: 암호화 과정 한 단계), 매 라운드마다 S-box는 바뀐다.
생성 가능한 암호화 키 = 2^56 가지
DES 알고리즘과 AES 알고리즘 사이의 과도기적 알고리즘
2개의 암호화 키 사용 : 암호화 강도 =
1997년 NIST가 암호 알고리즘을 다시 공모
→ 빈센트 레이먼, 요안 다에먼이 개발한 Rjindael 알고리즘이 2000년 10월 최종 AES알고리즘으로 선정
- 공모조건
☑️ 향후 30년 정도 사용할 수 있는 보안성
☑️ 128bit의 암호화 블록 [DES는 64비트]
☑️ 다양한 키 길이(128, 192, 256비트) [DES는 56비트 암호화 키]
1999년 한국인터넷진흥원과 국내 암호 전문가들이 순수 국내 기술로 개발한 128bit의 암호화 알고리즘
SEED 128(1999년)
SEED 256(2009년)
국가보안기술연구소(NSRI)주도로 학계, 국정원 등의 암호전문가들이 힘을 모아 개발
128bit의 암호 알고리즘
국가 표준(KS)로 지정
AES와 마찬가지로 128, 192, 256비트의 암호화 키 지원
128bit의 키, 64비트의 평문을 8라운드로 돌려 64비트 암호문 만듦
원래 이름: PES, IPES, IDEA
입출력, 키, 라운드 수가 가변임(32bit, 64bit, 128bit의 암호화 키)
속도=
전화기 등의 음성을 암호화하는 데 주로 사용
64bit의 입출력, 80bit의 키, 32라운드의 암호화 과정
성능= ~
128bit의 데이터 블록으로, 128, 192, 256의 비밀 키를 사용 O
대칭 암호화 키의 치명적인 약점= 암호화 키를 전달해야 한다.
평문을 암호화하면 복호하하는 사람도 암호화 키를 가지고 있어야 한다.
(암호문과 암호화 키를 따로 전송해야 한다.)
휫필드 디피와 마틴 헬먼이 발견, 당시 대칭 암호화 방식의 '키 전달 문제' 해결
공개된 정보가 '3'이라고 가정해보자.
(공개된 수)^(자신의 수)를 하여 상대방에게 보낸다.
그럼 각각 개인은 받은 값(=(공개된 수)^(상대방의 수))을 가지고 (상대방에게서 얻은 값)^(자신의 수)를 한다. 이때 각각 계산된 값은 비밀 키값과 같다.
R(리베스트) S(샤미르) A(애들먼)이 개발한 비대칭 암호화 알고리즘
기본적인 정수론, 즉 소수를 이용한다.
모든 사람이 고유한 값(두 소수 의 값)을 갖는다.
만약 영희가 p=17,159
q=10,247
의 곱을 자신의 N값으로 정했다면, 영희의 공개 키(public key)인 값이 모든 사람에게 공개되는 식이다.
여기서 영희의 개인 키(private key)는 두 소수 , 이다.
(즉 공개 키는 곱한 값, 개인 키는 곱하기 전 값)
RSA 알고리즘으로 사용되는 은 250자리로, 으로 두 소수 , 를 구하려면 매우 오래 걸린다.
하나의 문자열을 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 것(암호화랑은 다른 개념)
정보를 숨기기 위한 장치= 암호, 정보의 위/변조를 확인하기 위한 장치= 해시
인풋값과 상관없이 아웃풋 결과값의 길이 고정
(MD5 해시 알고리즘은 32개의 16진수로 이루어짐)
인풋값이 무한하기 떄문에, 다른 값의 데이터를 입력하더라도, 같은 해시 값이 나올 수 있는 상황
해시 테이블에서는 보통 데이터베이스를 탐색하는 데 참조값과 라벨값 중 하나로 생성되도록 하여 해시 알고리즘을 이용하면, 매우 속도가 빨라지지만,
보안에서는 보통 데이터의 무결성을 지키기 위해서 사용한다.
공개키 기반을 만들기 위해 로널드 리베스트가 RSA와 함께 만든 것
MD5은 MD4의 확장판, 속도가 빠르진 않지만 보안성은 더 뛰어남.
미국 국가안보국(NSA)가 만든 SHA는 160bit 값을 생성하는 해시함수로, MD4가 발전된 형태
입력 데이터는 512bit의 블록
SHA는 MD5와 함께, TLS, SSL, PGP, SSH, S/MIME, IPsec등 널리 사용됨
https://packinsider.com/author/rosetoys/
https://www.rentalocalfriend.com/en/friends/rosetoys
https://acomics.ru/-rosetoys