# 암호화란
+ 암호화 알고리즘은 수학적 과정을 통해 어떤 정보를 의미 없는 문자의 나열로 바꾸는 것을 뜻함.
+ 재화적 가치가 있는 데이터를 알아볼 수 없는 이진수 덩어리로 바꿔 공격의 목적을 파괴
# 고전 암호화
+ 제대로된 암호는 메시지 원문의 내용과 암호화 알고리즘을 알아내기 어려운 암호이다.
+ 암호는 혼돈, 확산이라는 두 가지 성질을 가진다
> 혼돈 Confusion : 메시지 원문의 내용을 짐작하기 어렵게 만듦.
> 확신 Diffusion : 암호화 알고리즘의 패턴 추론을 어렵게 만듦.
+ 좋은 암호는 혼돈과 확산이라는 두 가지 성질을 모두 갖춘 암호.
+ 고전암호는 방식에 따라 ‘치환 암호’와 ‘이동 암호’로 나눠짐.
# 고전암호 > 치환(Substitution) 암호
+ 문자열을 다른 문자열로 열 이동 교체하는 암호.
+ 메시지 원문 내용의 추론을 어렵게 하는 혼돈 성질을 만족하는 경향이 있음.
# 고전암호 > 이동(Trasposition) 암호
+ 무작위로 보이는 원칙에 따라 문자열 순서를 바꿔 이동한 암호
+ 암호화 알고리즘을 짐작하기 어렵게 하는 확산 성질을 만족하는 경향이 있음.
# 치환과 이동을 교차적으로 적용하여 혼돈, 확산 성질을 모두 만족할 수 있다.
# 암호화 키
+ 고전 암호의 한계는 암호화 알고리즘을 알아내면 암호문 해독이 가능.
+ 임의의 문자열 값인 ‘암호화 키’가 암호화 기술의 핵심!
+ 적절한 암호화 키를 사용하면 암호허화 알고리즘이 노출되더라도 키 없이는 해독할 수 없음.
+ 암호화 키의 동작은 수리 논리학의 ‘배타적 논리합’ 연산에 따라 이루어짐
+ 이진법으로 표현한 수의 각 비트에 대한 가감산 결과를 비트간 배타적 논리합이라고 함.
+ 비트간 배타적 논리합은 특정 비트의 반전이므로, 반복하면 원래의 값이 됨.
+ P라는 원문을 K라는 키값을 이용해 연산하면 P+K라는 암호문이 됨.
+ 이 암호문을 K키값을 이용해 연산하면
+ ( P +K ) + K = P, 원문 P로 복호화
+ 원문 0011, 키값 0110 연산하면 암호문 0101 이 됨
+ 0101 + 0110 = 0011, 재연산을 거쳐 원문으로 복호화 됨.
+ 현재 암호화 규격은 양자연산 등 완전히 새로운 컴퓨팅 방식의 등장 이전까지는 안전하다고 볼 수 있음.
[참고]