[Security-01] Security Concepts

유영석·2022년 9월 5일
1

Security

목록 보기
1/12
post-thumbnail

정보 보안의 첫 번째 글에서는 보안에 필요한 개념들에 대해서 알아보도록 하겠습니다.

CIAAA

보안의 핵심이란 무엇일까요? 과거로 돌아가 전쟁 중인 상황을 고려해 볼까요? 승패에 직결된 중요한 문서를 전달한다고 생각해 봅시다. 적에게 들키지 않고 아군에게 정확히 전달하는 것이 목표일 것입니다. 이처럼 보안에서 가장 핵심이 되는 요소는 피아식별이라고 할 수 있습니다. 그러나, 우리 사회에 인터넷이 들어서면서 송신자와 수신자를 잇는 사전적이며 개인적인 채널의 운영이 어려워지게 되었습니다. 보안이 필요한 정보들이 인터넷이라는 거대한 공유성을 갖는 망속에 떠다니고 있기 때문이지요.

대표적으로, 인터넷에서 자신을 증명하기 위해 인증서를 사용하고는 합니다. 그러나, 이는 곧 A의 인증서를 B가 소유할 경우 B는 A로 간주된다는 뜻이기도 합니다. 요즘은 K은행에서 W은행의 정보 또한 볼 수 있습니다. 그래서, 정말 편리하게 자금을 이동시킬 수 있게 됬지요. 그러나, 이는 K은행의 보안이 공격당할 시 W은행에서의 자금 또한 안전할 수 없는 것을 의미하기도 합니다. 이처럼, 인터넷 상에서의 보안에는 절대적인 해결책이 존재하지 않습니다. 편리성을 대가로 보안성을 포기하는 경우들이 많지요.

네트워크 영역에서 Security Model을 그림으로 나타내면 아래와 같습니다.

Sender에서 어떤 메시지, 즉 정보를 보낼 때는 먼저 정보 그 자체를 암호화(encryption)해야 합니다. Receiver는 그 암호화된 메시지를 받아 복호화(decryption)하여 원본을 읽을 수 있는 것이지요. 그렇기에 Sender와 Receiver는 사전에 약속한 암호화 KEY를 가지고 있어야 합니다. 이와 같은 속성을 Confidentiality(기밀성) 라고 합니다. 또 중요한 것을 생각해 보자면 메시지가 이동하는 채널에 적이 개입하여 메시지에 변조를 가해서는 안됩니다. 이와 같은 속성을 Integrity(무결성)라고 합니다. 마지막으로 지켜져야 하는 것을 하나 더 생각해보자면, Receiver는 이 받은 메시지를 언제 어디서나 원할 때 열람할 수 있어야 할 것입니다. 이와 같은 속성을 Availability(가용성)이라고 합니다.

지금까지 설명한 Confidentiality, Integrity, Availability 이 세 속성을 정보보안의 기본 3원칙이라 하여 CIA Triad 라고 표현합니다. 조금 더 알아볼까요?

Confidentiality는 정보가 기밀로 유지되어야 함을 의미합니다. 인증되지 않은 어떤 개인에게도 정보의 열람은 엄격하게 규제되어야 합니다. 이 Confientiality를 보장하기 위해 가장 흔하게는 Data Encryption, 즉 암호화가 사용됩니다.

Integrity는 정보가 인증되지 않은 어떤 개인에게도 정보의 변조가 일어나지 않아야 함을 의미합니다. 쉽게 말해, 데이터가 원본 그대로 지켜져야 한다는 뜻이지요. 어떤 방법들이 있을까요? 어떤 데이터를 보낼 때, 해당 데이터의 미니어처 버전을 같이 보냅니다. 그래서 Receiver의 영역에서 두 데이터를 비교함으로써 변조를 발견할 수 있을 겁니다. 물론 미니어처의 수정이 Sender에서만 일어나게 하기 위해 추가적인 기술력이 요구되는 것은 사실입니다.

또 다른 방법으로는 Checksum, Backup, Hash를 이용하는 방법이 있습니다. 가장 많이 사용되는 것은 Hash입니다. 이는 해쉬 함수 H가 있다면 H(A) = B라고 해봅시다. 해쉬 함수를 통해 A를 B로 만드는 것은 간단한 계산이지만, B를 통해서 A를 구하려고 하는 것은 거의 불가능에 가까울 정도로 매우 어려운 과정입니다. 이와 같은 해쉬의 특성을 비가역성이라고 합니다. 이를 데이터 전송에 적용하면, 적이 전송되는 데이터를 통해 원본 데이터를 확인하기가 참 어려워진다는 것을 의미합니다. 이를 통해 Integrity를 보장할 수 있게 되는 것입니다.

Availability인증된 사용자가 정보를 확인하고 싶을 때, 언제나 정보가 접근가능해야 한다는 것입니다. Availability의 반대가 되는 개념이 흔히들 들어본 Denial of services(DOS)입니다. 즉 사용자가 정보에 접근하지 못하는 상태를 만들어 벌이는 것이지요. 내가 갖지 못한다면 너도 갖지말라는 심보일까요? 이 DOS 공격이 까다로운 점은 막을 방법이 아직 제대로 없다는 것입니다...😢

이 세가지 CIA와 더불어, 더 넓게 본다면 Authenticity, Accountability를 추가하여 CIAAA라고 부르기도 합니다.

Authenticity는 어느 개인이나 그룹이 자신을 인증하는 것에 대한 증명을 의미합니다. 쉽게 말해 조선시대 암행어사의 마패와 같은 느낌이지요. 아무래도 우리가 일상 중에 가장 자주 이용하는 것은 쿠키일 것입니다. 사실 우리가 로그인이 필요한 웹사이트를 이용할 때에는, 로그인을 했더라도 페이지를 이동하면 해당 페이지에서도 로그인을 해야함이 원칙입니다. 그런데, 그러면 우리는 모니터를 부숴 버리겠죠?😂 그래서 서버는 웹 브라우저에서 로그인을 하면 쿠키라는 것을 만들어 보내줍니다. 브라우저는 이것을 이용해 페이지를 이동하더라도 로그인을 면제받을 수 있는 것입니다.

Accountability는 적이 공격을 하고 난 이후라도 잡겠다는 Traceability(추적성)을 의미합니다. 보안의 예방에는 한계가 있기 때문에, 사후라도 범인을 잡아서 책임을 묻겠다는 뜻입니다. 실제로, 이 방법은 다른 예방을 목표로 한 방법보다도 효과적으로 사용되고 있습니다.

Attacks

그렇다면, 공격에는 어떤 방법들이 있는지 알아볼까요?

Masquerade는 다른 사용자로 위장하는 것입니다. 적이 나인 척을 하고 이상한 짓을 한다면 그에 대한 피해와 책임은 나한테 오겠지요? 정말 억울하고 열받는 방법이 아닐 수 없습니다😡

Replay는 전송중인 데이터를 낚아채서 복제한 똑같은 데이터를 계속해서 재전송하는 것입니다. 만약 이 데이터가 결제를 하는 데이터라면 정말 끔찍한 일이겠죠? 돈이 탈탈 털리는 겁니다. 이를 막기 위해서는 timestamp를 이용하거나, 데이터에 순서를 표시하는 번호를 붙이는 방법 등이 있습니다. 이 Replay는 큰 범위에서는 또한 Integrity라 할 수 있습니다.

Modification of messages는 메시지 일부를 변경하거나, 딜레이를 시키거나, 재배치하는 등 중간에 데이터를 갖고 장난치는 것을 의미합니다.

Denial of Service(DOS)는 어떤 서비스의 사용이나 관리를 하지 못하도록 악의적으로 막는 것을 의미합니다. 어떤 네트워크 트래픽을 미친 듯이 쏘아서 서버를 터뜨려 버리는 것들이 해당됩니다.

Man in the Middle(MITM)은 말 그대로 두 개체 사이에 껴서 A에겐 B인 척을, B에게는 A인 척을 하는 것입니다. A와 B가 서로를 제대로 모른다면, 이와 같은 무서운 일이 가능하게 되는 것입니다. 그래서 인증이 더더욱 중요한 것이지요.

DOSMITM은 보안에 있어서 가장 까다롭고 그로 인해 가장 취약한 분야이기도 합니다.

Attack Prevention

마지막으로, 이와 같은 공격들을 막기 위한 Security Services를 알아보도록 합시다.

Authentication은 특정 사용자를 식별하기 위한 방법을 제공하는 것을 의미합니다. 어떤 개체라는 것을 인증함으로서 Masquerade 를 막을 수 있습니다. 우리에게 친숙한 것으로는 여권이 있습니다. 나라에서 발급 받은 여권을 통해 우리는 세계 어디서든 지금 내 존재가 정말 XX가 맞다는 것을 보증받을 수 있습니다. 인터넷에서는 흔히 아이디와 비밀번호를 통해 인증을 받습니다.

Access Control은 명칭 그대로 host system이나 application에 대한 접근을 조정함으로서 Denial of Services(DOS)를 막고자 하는 것입니다. 따라서 각각의 개체는 기본적으로 Aunthentication이 선행되야 하지요. 그러나, 말했듯이 굉장히 어렵고 까다로운 일이라 막지 못하는 경우들이 더 많습니다.

Data Integrity는 데이터가 인증되지 않은 그룹들로부터 변경되는 것을 막음을 의미합니다. 메시지가 원본으로부터 그 어떤 복제, 삽입, 변경, 재배치, 재전송 없이 그대로 전송되게끔 함으로써 ModificationReplay를 막는 것입니다.

Nonrepudiation은 Sender가 전송한 메시지에 대해 부인을 하지 못하도록 하는 것입니다. 어떤 사실에 대한 증명을 만듬으로써 Man in the Middle(MITM)을 막고자 하는 방식이지요. 우리가 알 수 있는 부동산매매계약서 같은 것이 이에 해당됩니다. 매매자는 계약서가 있는 한 매매한 적이 없다고 시치미 떼는 것이 불가능해지는 것입니다.

AttestationNotarization(공증)을 의미합니다. Nonrepudiation에서의 증명이 두 개체끼리 만든 것이라면, Attestation은 제 3자가 이를 증명하는 것입니다. 이렇게 해서 ModificationReplay를 막을 수 있습니다.

profile
백엔드 개발자

0개의 댓글