Cryptography
= Crypto(= secret) + Graphy(= writing)
- Attempting to write a secret. (ciphering이라고도 한다) 즉 암호화 방식이나 임호화 기법 그 자체를 의미한다.
- Security service 중에서
Confidentiality
, Integrity
, Authentication
, Non-repudiation
은 cryptography로 만든다.
Cryptanalysis
= Crypto + Analysis
- Attempting to analyze a secret (deciphering)
Basic Terms
Cryptology
= Cryptography
+ Cryptanalysis
- 암호학이다. Security Services를 제공하는 수학적 기법을 기반으로, cryptographic mechanisms를 디자인하고 분석하는 과학적인 연구를
Cryptology
라고 한다.
- Cryptographic
primitive
- cryptography에서 사용하는 basic tool로, 수학에서의 axiom과 같은 의미로 이해하면 된다. (gpt발)암호화 함수나 해시 함수 등이 여기에 해당한다고 한다.
- 이 primitive를 사용해서 Cryptographic algorithm을 정의(computation step을 결정)한다.
- Cryptographic
protocol
- 말 그대로 프로토콜이다. 둘이나 그 이상의 parties가 서로 일련의 메시지를 exchange/operation하는 규칙을 cryptographic protocol이라 한다.
- 그리고 complex security goal을 달성하기 위해서 several cryptographic primitives를 사용하는 방법이라고도 할 수 있다. primitives들의 집합체로 정의된 특정한 방법을 사용해, 메시지를 교환하고 운영하는 것이 바로 암호화 프로토콜인 것이다.
Cryptosystem
cryptographic scheme
, 즉 암호 체계인데 cryptology에 따른 이론을 실제로 구현(implementation)한 구체적 시스템이다.
- 그래서 cryptosystem은 crypto(= secret)을 위한 프레임워크이자, cryptographic primitives의 구현체라고 한다.
Historical Cryptosystems
Scytale Cipher

Cipher는 일반적으로 메시지를 암호화하는 데 사용되는 알고리즘을 의미한다. 즉 plane text를 암호화된 형태로 변환하는 알고리즘이다.
반면 Crypto는 좀 더 general하게 보안과 관련된 모든 것을 포함한다. 암호화뿐 아니라 인증, 기밀성, 무결성, 악성 코드 방지, 보안 프로토콜 등 전부가 Crypto에 들어가는 것.
결론적으로 Cipher는 Crypto의 일부분이며 암호화 기술의 한 종류라고 할 수 있다.
스키테일 암호는 저 양피지를 풀어버리면 더 이상 해독이 안 되는 형태의 암호문이다. 해독자는 반드시 certain-width scytale
을 가지고 있어야 하며, 양피지를 딱 맞는 두께의 막대에 감으면 원하는 텍스트가 보이는 형식이다.
Caesar Cipher

카이사르, 혹은 시저 암호라고 하는데 암호화하고자 하는 내용을 알파벳별로 일정한 거리만큼 밀어서 다른 알파벳으로 치환하는 방식이다. 위 그림에서는 shifting by three가 encryption algorithm이다.
매우 straightforward scheme이라 알고리즘이 알려지면 정말 쉽게 깰 수 있다.
- Cryptanalysis of the Caesar model
- Planetext/Ciphertext: 26 letters
- Encryption/decryption key: numbers that represents a secret shift
- Key space: 26 (모든 가능한 key의 집합)
- Encryption/decryption algorithm: slide the ruler to the left
- Mathematical description of the Caesar :
modular operation
- Encryption: C = (P + K) mod 26
e.g., Y(25) -> (25 + 3) mod 26 = 2(B)
- Decryption: P = (C - K) mod 26
e.g., 2(B) -> (2 - 3) mod 26 = 25(Y)
ROT13

A simpe alphabetical substitution으로, 단순하게 알파벳을 13개 밀어서 만든다. key가 13인 Caesar Cipher인 것. 그래서 각 단어가 완벽히 replace
되는 개념이고, encryption과 decryption이 same operation을 갖는다.
Simple Substitution Cipher
- 이건 Caesar cipher와 다르게, plaintext의 letter를 substitution, 즉 대응체를 만들어놓고 그것으로 바꾸는 것이다. A를 F로, B를 Q로, C를 Z로 바꾸는 것과 같은데 대응체는 무작위로 선택할 수 있다.
- 이에 따라서 permutation of all 26 letters가 매우 크고, 이것이 곧 key space가 된다.
key space
: 26! = 4 * 10^26(브루트포스로 해독이 불가능하다)
하지만 파훼법으로 Frequency Analysis
가 있다.

실제로 단어나 문장과 같이 의미 있는 string은 매우 구조적이라서, 영어에서 알파벳의 출현 빈도는 위와 같이 approximate할 수 있다. 이를 그대로 적용하면 암호문의 frequency를 기반으로 복호화가 가능한 것.
Vigenère Cipher

비즈네르 암호는 카이사르 암호와 비슷한 개념이며, 표를 보면 알 수 있듯 이 table은 row에 서로 다른 key의 카이사르 암호화가 적용된 상태라고 할 수 있다.
여기서 Row: key letter이며, column이 input letter다.
