TODO: 암호의 필수조건 마저 정리해야함!
정보보안의 정의
- "Preservation of confidentiality, integrity and availability of information. Note: In addition, other properties, such as authenticity, accountability, non-repudiation and reliability can also be involved." (ISO/IEC 27000:2009)
- 정보에 대한 Confidentiality(기밀성), Integrity(무결성), Availability(가용성)을 제공하는 것을 정보 보안이라고 한다. 추가적으로 다른 목적에 의해서 정보에 대한 Authenticity(인증), Accountability(책임), Non-repudiation(부인봉쇄), Reliability(신뢰성)을 제공할 수도 있다.
- CIA(confidentiality, integrity, availability)를 꼭 기억하자
- "The protection of information and information systems from unauthorized access, use, disclosure, disruption, modification, or destruction in order to provide confidentiality, integrity, and availability."
(CNSS, 2010)
암호의 목적
- 여러 위협에 대처하여 그에 대한 적절한 대응을 하는 게 목적이다.
1. Confidentiality
6. Authorization (Access Control)
- Resource에 접근할 올바른 권한이 있는지 확인하는 것!
- Access Control과 Authorization은 다른 내용이다!
- Authorization을 통해 User를 인식하고 이후 해당 유저가 올바른 권한을 가지고 있고 접근하게 해주는 것까지가 Access Control의 역할이다!
7. Availability
- 가용성: 인증되지 않은 Entity가 Resource를 사용할 수 없게 만드는 걸 막는 것을 의미한다.
- 대표적으로 Denial of Service(DoS) Attack을 통해 가용성이 망가진다.
1. Cryptology
- Cryptology는 Cryptography와 Cryptanalysis를 총칭하는 말이다.
Cryptography
- 암호를 만드는 연구분야이다.
- Plaintext를 Cipher 함수를 통해 CipherText로 변환하는 것을 Encrypt라 한다.
- 단 이때의 변환은 역으로 변환이 가능해야 한다.
- CipherText를 PlainText로 변환하는 것을 Decrypt라 한다.
Cryptanalysis
- 암호를 깨는 연구분야이다.
- CipherText를 이용하여 PlainText를 유추해내는 과정을 연구함
Encryption / Decryption
- Encryption: C = E(M,K)
- Encrypt는 plain message M을 unique key K를 이용하여 cipher text C를 만들어 내는 함수 E를 의미함.
- Decryption : M = D(C,K)
- Dencrypt는 Encrypt의 역과정으로 cipher text에서 unique key K를 이용하여 plain text를 뽑아내는 함수를 의미한다.
- Kerckhoffs Principle
- Attacker는 Encryption algorithm과 Decryption algorithm, 그리고 CipherText를 알고 있을 가능성이 농후하다.
- 암호화 알고리즘은 그 수가 매우 한정적이고, cipher text는 packet capture로 충분히 얻어 낼 수 있기 때문!
- 그렇기에 Security는 Key에 대한 Confidentiality(기밀성)이다!
- Symmetric Encryption
- 암호화 Key와 복호화 Key가 동일한 암호화 방식
- Asymmetric Encryption
- 암호화 Key와 복호화 Key가 다른 암호화 방식
- key를 공개하는 특성때문에 Public-key encryption이라고 불리기도 한다.
Hashing
- plainText의 변경을 감지하는 기술이다. (Integrity를 보장해주는 기술)
- 대표적으로 Hashing, Message Authentication Code(MAC) 참고자료가 있다.
- Hash Function의 Requirements
- Easy to compute
- preimage Resistance (원상 저항)
- 여기서는 plain text가 원상이기에 plain text를 유추할 수 없게 하는 특성을 의미한다.
- Collision Resistance
- (약) 주어진 두 plain text M1과 M2의 Hash 값이 달라야만한다
- (강) 모든 palin text 중 임의의 두 원소 M1과 M2의 Hash 값이 달라야한다.
- Avalanche Effect
- plain text의 수정이 있을때 hashing 결과는 대략 50%는 달라져야한다.