2022. 3. 3. 18:49ㆍMajor`/정보보호개론
보안의 기본 3원칙 : C I A
Confidentially (기밀성)
"To prevent unauthorized reading of information"
- 인가되지 않은 user(Attacker)가 정보를 읽는 것을 막는다
- Attacker에 의해서 정보가 읽혀서 노출되는 것을 막는 보안원칙
◆ 공격예시
- 스니핑
- 스푸핑
◆ 대처방안
1. 접근 통제(Access Control)을 실시
2. 정보에 대한 암호화
Integrity (무결성)
"To prevent unauthorized writing of information(Modifying)"
- 인가되지 않은 user(Attacker)가 정보에 접근해서 정보를 변경하는 것을 막음으로써 정보의 원본을 보호
- Attacker에 의해서 정보의 변조/파괴를 막는 보안원칙
◆ 공격예시
- 트로이목마
- 바이러스
◆ 대처방안
1. 접근 통제(Access Control)을 실시
2. 만약에 이미 정보가 변경되었거나 변경될 위험이 있을 때 해당 사실을 즉시 파악해서 복구할 수 있는 메커니즘이 필요하다
>> 해시 함수를 통한 무결성 확인
Availability (가용성)
"To provide access to information whenever consumers want"
- 인가된 user라면 언제든지 정보에 접근할 수 있는 원칙
- Attacker의 공격에 대해서 잘 대응해서 인가된 user에게 정보를 안정적으로 제공해주는 원칙
◆ 공격예시
- DOS
- DDOS
◆ 대처방안
1. Attacker의 자료 파괴/장애 유발에 대한 복구대책 + 예방대책
2. 인가된 user에 대해서는 정보의 접근이 절차에 따라 완전하게 허락되어야 한다
인증 (Authentication)
Example) "Alice" & "Bob"
- "Bob"이 "Alice"에게 접근
- "Alice"는 접근한 사람이 누군지 파악해야 한다 :: 신원확인
≫ Alice : "너는 누구니?"
≫ ?? : "나는 Bob이야"
- Alice는 ??가 "Bob"이라는 말만 듣고 진짜 ??가 "Bob"인지 믿을 수 없다
≫ Alice : "너가 정말 Bob인지 증명해봐"
- Bob은 Alice에게 자신을 증명한다
≫ Bob : "이제 내가 Bob이라는 것을 믿을 수 있겠니"
≫ Alice : "너가 Bob이라는 것을 확인했어"
>> 이러한 과정들을 "인증"이라고 한다
- 사이트 로그인 / 휴대폰 잠금 해제 / ....
▶ 대면 인증
- 비교적 간단히 서로 인증할 수 있다
- 암호화를 기반으로 인증
▶ 네트워크 인증
- 비교적 인증이 복잡하다
- 네트워크를 인증하던 과정에서 Attacker에 의해서 Data가 노출될 위험이 존재
- 암호화 + 보안 프로토콜을 기반으로 인증
- SSL / TSL / ...
인가 (Authorization)
- 인증된 user라고 해도 모든 Data에 대한 접근을 허용하면 안된다
- Alice에게 Bob은 인증된 user이다
- 만약, Bob이 Alice에게 개인정보를 요구하면 Alice는 줄 필요가 없다
>> 인증된 user라고 해도 접근 가능 정보/접근 불가능 정보가 구분되어야 한다
- "인가"는 "인증된 user"에 대한 접근 제어 강화
- 접근 제어(Access Control)을 기반으로 한다
Cryptography (암호화)
"Making Secret Codes"
- Secret Code를 만들어내는 것
※ 암호화 기술
1. Encryption (암호화)
- 양방향 암호화 기술
- encrypt : plain text → cipher text
- decrypt : cipher text → plain text
- 인가되지 않은 user에게 정보 노출을 막는것이 목표 :: 기밀성
2. Hashing (해싱)
- 단방향 암호화 기술
- encrypt : plain text → hashed text
- 해시값을 검사해서 정보 변조가 없었는지 확인하는 것이 목표 :: 무결성
Cryptanalysis (암호 해독)
"Breaking Secret Codes"
- Secret Code를 해독하는 것
※ 대표적인 방법 : Brute-Force
- key로 가능한 모든 경우의 수를 대입해서 암호를 해독하는 방식
Cryptology (암호학)
"The art and science of making and breaking 'secret codes'"
- Secret Codes를 만들거나 해독하는 학문
Crypto (암호)
- 위의 모든 용어를 포함한 포괄적 용어
Crypto System
데이터를 암호화할 때 사용되는 암호 체계
모든 암호체계의 목적은 "키 없이 복호화 할 수 있는 방법은 존재하지 않도록 해라"이다
Encryption & Decryption
Encryption (암호화)
- 특정 key를 통해서 plain text를 cipher text로 변환
- "key 1"이라고 가정
Decryption (복호화)
- 특정 key를 통해서 cipher text를 plain text로 변환
- "key 2"라고 가정
Symmetric Key Cryptosystem
대칭키 암호 시스템
- (Client & Server)가 동일한 key를 사용하는 시스템 >> key 1 == key 2
- key는 private key를 사용한다
1. 계산속도가 빠르다
2. key 하나만 알아내면 복호화를 할 수 있기 때문에 Attacker의 공격으로부터 안전하지 않다
>> 대칭키 암호 알고리즘 방식으로 DES / 3-DES / AES / SEED / ARIA / MASK 등이 존재한다
Public Key Cryptosystem
공개키 암호 시스템
- (Client & Server)가 다른 key를 사용하는 시스템 >> key 1 != key 2
- 암호화 : public key / 복호화 : private key
1. 대칭키 암호 알고리즘에 비해 속도가 느리다
2. 공개키는 누구나 알 수 있지만, 공개키에 대응되는 비밀키는 키의 소유자만 알 수 있어서 Attacker의 공격으로부터 꽤 안전하다
>> 공개키 암호 알고리즘 방식으로 RSA / Elgamal 등이 존재한다
"Kerckhoffs Principle"
'The Attacker completely knows the system'
'Only key is secret'
- 암호체계는 해당 시스템이 Attacker에 의해 파악됨을 가정하고 설계해야 한다
- Key를 제외한 시스템의 모든 내용이 알려져도 암호체계는 안전해야 한다
Example)
A : 모든 것이 비밀인 Crypto Algorithm
B : Key만 비밀인 Crypto Algorithm
>> B가 더 좋은 Crypto Algorithm이다
why?
어차피 암호 알고리즘은 언젠가는 Attacker에 의해 알려진다
- "세상에 비밀은 없다"
- A는 안전성을 암호 알고리즘을 숨김으로써 보장한다. 근데 암호 알고리즘은 언젠가는 알려지기 때문에 암호 알고리즘을 통해서 안전성을 확보하는 것은 안전하지 못한 방법이다
- B는 안전성을 키의 보안을 통해서 보장하기 때문에 키만 잘 관리한다면 안전한 방법이다