기본 콘텐츠로 건너뛰기

Vulnerability

Vulnerability 취약점 모든 어플리케이션에는 버그가 존재하며 개발자는 항상 버그와 함께 있다고 해도 과언이 아니다. 이러한 버그들 중 악용 가능한 버그들을 취약점(Vulnerability) 혹은 보안 버그라고 한다. 악용 사례 다른 사용자 개인 정보 무단 열람 웹 사이트 내용 무단 변경 악성 코드 배포 다른 사용자 권한 무단 도용 웹 사이트 서비스 불가 취약성이 있으면 안되는 이유 경제적 손실 이용자의 금전적 손실에 대한 보상 변상 및 위자료 비용 웹 사이트 서비스 불가로 인한 기회 비용 이미지 실추로 인한 매출 감소 법적인 요구 개인정보에 관한 법률 개정이 2011년 12월 29일 국회 본회의를 통과하여 2012년 2월 17일 공포 후 6개월이 경과한 8월 18일부터 시행되고 있다. 이 법안은 개인정보를 수집하고 저장하는 사업자는 개인정보를 취급하는 사업자로서 안전 조치에 대한 의무를 명시하고 있다. 이용자의 돌이킬 수없는 피해 일단 유출된 개인 정보를 막는 것은 불가능하므로 유출된 개인 정보로 인해 이용자가 피해를 입고 잇는 경우 원래 상태로 돌이키는 것은 불가능하다. 또한 금융 정보 유출로 인한 금전적 손실 발생시 보상은 가능할지라도 그에 따른 고통은 보상하기 힘드므로 돈을 통한 해결이 사실상 불가능하다고 볼 수 있다. 봇넷 구축에 가담 봇넷이란 Malware의 일종으로 외부의 명령을 받아 스팸 메일 전송 또는 DDoS 공격에 가담하는 등 좀비 PC들로 구성된 네트워크를 말한다. 공격자는 취약성이 있는 웹 사이트의 내용을 변경하여 이용자의 PC가 봇에 감염되어 공격자의 명령을 받아 자신도 모르는 사이에 공격에 가담되는 상태로 만든다. 취약성 발생의 원인 애플리케이션 버그 보안을 고려하지 않은 설정 애플리케이션 버그에는 SQL 인젝션이나 Cross Site Scripting과 같은 유명한 취약점이 포함되어 있다. 보안을 고려하지 않은 설정의 대표적인 예로는 디

Electronic certificate

Electronic certificate 전자 인증서 의의 공개 키 암호 방식이나 전자 서명에선 공개 키가 정말로 통신하고자 하는 상대인지 보안되지 않는다는 문제가 있다. 예를 들어 A가 B에게 공개 키를 보낼 때, X가 공개 키를 바꿔 전달해도 B는 눈치채지 못할 수 있다. 전자 인증서를 이용하면 공개 키 작성자가 누구인지를 보증할 수 있다. 동작 방식 A는 공개 키 PA와 비밀 키 SA 쌍을 가지고 있으며 공개 키 PA를 B에게 보내려고 한다. A는 먼저 인증 기관(CA : Certification Authority)에 공개 키 PA가 자신의 것임을 나타내는 인증서 발행을 의뢰한다. 인증 기관은 전자 서명을 관리하기 위한 조직으로 많은 인증 기관이 존재한다. 따라서 정부나 외부 기관을 통해 감사를 받은 신뢰할 수 있는 기관을 이용하는 것이 좋다. 인증 기관은 자신이 준비한 공개 키 PC와 비밀 키 SC를 보유하고 있다. A는 공개 키 PA와 메일 주소를 포함한 개인 정보를 준비해서 인증 기관에 보낸다. 인증 기관은 확인을 완료하면 인증 기관의 비밀 키 SC를 이용해서 A의 데이터로부터 전자 서명을 작성하고 전자 서명과 데이터를 하나의 파일로 만들어 A에게 보낸다. (이 파일이 A의 전자 인증서가 된다.) A는 공개 키 대신 전자 인증서를 B에게 보낸다. B는 전달 받은 인증서에 적힌 메일 주소가 A의 것인지 확인한다. B는 인증 기관의 공개 키를 취득한다. 인증서 내의 서명이 인증 기관의 것인지 검증한다. 인증서의 서명은 인증 기관의 공개 키 PC로만 검증할 수 있다. 즉, 검증 결과에 문제가 없다면 이 인증서는 인증 기관이 발행한 것이라는 것이 보장된다. 인증서가 인증 기관에서 발행된 것이고 A의 것임이 확인되었으면 인증서에서 A 공개 키 PA를 추출한다. (A의 공개 키 B에게 전달 완료) 검증 악의를 지닌 X가 A로 위장하여 B에게 공개 키 PX를 전달하려고 하지만 B는

Electronic signature

Electronic signature 전자 서명 전자 서명이란 전자 서명이란 메시지 인증 코드가 가지는 인증과 변조 검출 두가지 기능에 부인방지를 추가한 것이다. 메시지 인증 코드는 메시지에 MAC을 부여하므로 메시지 전송자가 키 소유자임을 증명하기 위한 구조이다. A가 메시지와 MAC 및 MAC 생성을 위해 사용한 키를 B에게 보낸다. B는 전달 받은 메시지와 키를 이용하여 MAC을 생성하고 A에게 전달 받은 MAC과 일치하는 지 확인한다. 이것으로 전송자가 A인 것과 메시지가 변조되지 않았음을 확인할 수 있다. 하지만 메시지 인증 코드는 공통 키를 사용하는 구조이므로 키를 가진 누구나가 메시지 전송자가 될 수 있다. 예를 들어 A가 B에게 메시지를 전송한 후에 해당 메시지는 B가 임의로 작성한 것이라 주장할 수 있다. 또한 공통 키를 사용하므로 A가 B 이외의 사람에게 메시지를 보내기 위해서는 다른 키를 준비해야하는 문제가 있다. 전자 서명 구조에서는 MAC이 아닌 전송자만 작성할 수 있는 전자 서명 이라는 데이터를 이용하여 메시지 작성자가 누구인지 식별할 수 있다. 이를 전자 서명이라 한다. 특징 부인 방지 Sig 라는 전자 서명은 A만 작성할 수 있다고 할 때, A가 전자 서명이 첨부된 메시지를 전송한 경우, 전송자가 A인 것이 보장된다. 메시지를 맏은 B는 전자 서명이 A의 것인지 확인할 수 있지만 동일한 전자 서명을 만들 수는 없다. 키 분배 문제 메시지 인증 코드와 달리 공통 키를 사용하지 않으므로 A는 동일 전자 서명을 사용해 불특정 다수와 통신할 수 있다. 전자 서명 작성 시 공개 키 암호 방식 순서를 응용한다. 동작 흐름 공개 키 암호 방식과 반대로 전자 서명은 비밀 키로 암호화하고 공개 키로 복호화하는 방식으로 비밀 키를 가진 A만 암호화할 수 있지만, 공개 키를 이용해서 누구나 복호화할 수 있는 암호문이 작성한다. 암호로서는 의미가 없지만, 이 암호문은 비밀 키를

MAC(message authentication code)

MAC(message authentication code) 메시지 인증 코드 메시지 인증 코드란 메시지 인증 코드는 인증과 변조 검출 두 가지 기능을 가지는 구조이다. 메시지 인증 코드가 필요한 상황을 생각해보자. A가 B에게서 상품을 사기 위해 상품번호 abc 를 전달하고자 한다. 이를 위해 A는 공통 키 암호 방식으로 테이터를 암호화한 후 안전한 방법으로 B에게 키를 보낸다. (키 교환은 공개 키 암호 방식 또는 디피 헬만과 같은 키 교환 프로토콜을 사용한다.) B는 전달 받은 키를 이용하여 암호문을 복호화 후 원 데이터인 abc 를 얻을 수 있다. 변조 가능성 A가 B에게 암호를 보낼 때, A가 B에게 전송하려고 한 암호문을 X가 중간에서 변조했다면 B는 변조 여부를 알아차리지 못하고 잘못된 상품 번호를 처리하게될 가능성이 있다. 메시지 인증 코드 - MAC(Message Authentication Code) 메시지 인증 코드(이하 MAC이라 칭한다.)를 사용하여 이러한 변조에 대응할 수 있다. MAC는 MAC 생성 키와 암호문을 특수한 연산을 통해서 생성한 값을 말한다. MAC 작성 방법 MAC 작성 방법에서는 HMAC, OMAC, CMAC 등이 있으며 HMAC이 주로 사용되고 있다. 동작 흐름 A는 MAC 생성을 위한 키를 만들고 안전한 방법으로 B에게 전달한다. A는 암호문과 MAC 생성 키를 이용하여 MAC을 만든다. A는 B에게 작성한 MAC과 암호문을 보낸다. B는 A와 마찬가지로 암호문과 MAC 생성 키를 사용해서 MAC을 작성한다. B는 직접 작성한 MAC과 A에게서 받은 MAC 값이 일치하는 지 비교하여 메시지 변조 여부를 확인한다. 만약 악의를 가진 X가 암호문을 변조했다면 B는 암호문으로부터 MAC을 생성 후 일치 여부를 확인하여 불일치 시 A에게서 전달 받은 암호문과 MAC을 파기하고 재전송을 요청한다. X는 MAC을 계산하기 위한 키를 가지고 있지 않아서

Diffie-Hellman

Diffie-Hellman 디피 헬만 키 교환 방법 디피 헬만 키 교환 법은 안전하게 키를 교환하기 위해 고안된 기법이다. 두 키를 합성하는 특수한 방법이 있다고 가정해보자. P 키와 S 키를 합성하여 P-S 키를 생성한다면 생성된 키는 다음 두 가지 특징을 가진다. P와 P-S 키를 이용하여 S 키 추출은 불가하다. 즉, 합성은 가능하지만 분해는 할 수 없다. 합성된 키로 또 다른 합성 키를 만들 수 있다. 동작 흐름 A가 P 키를 생성한다. (P 키는 공개되어도 무방하다.) A가 B에게 P 키를 전달한다. A와 B는 각각 비밀 키 SA와 SB를 생성한다. (이 때 SA와 SB는 제 3자에게 노출되어서는 안된다.) A는 P 키와 SA 키를 합성하여 P-SA 키를 생성한다. B는 P 키와 SB 키를 합성하여 P-SB 키를 생성한다. A가 B에게 P-SA 키를 전달한다. B가 A에게 P-SB 키를 전달한다. A는 비밀 키 SA와 B에게서 받은 P-SB 키를 합성하여 새로운 SA-P-SB를 생성한다. 동일하게 B도 비밀 키 SB와 P-SA 키를 합성하여 새로운 P-SA-SB를 생성한다. A와 B는 모두 P-SA-SB 키를 가지게 된다. 논리 인터넷으로 전송되는 P, P-SA, P-SB 키는 X가 훔쳐볼 수 있다. 하지만 X가 얻은 키로는 P-SA-SB를 합성할 수 없다. 또한 분해가 불가하므로 비밀 키 SA와 SB를 얻을 수 없다. 따라서 P-SA-SB 키를 만들 수 없으므로 이 키 교환 방식은 안전하다고 볼 수 있다.

hybrid cryptosystem

hybrid cryptosystem 하이브리드 암호 방식 하이브리드 암호 방식이란 공통 키의 키 분배 문제와 공개 키의 속도 문제를 해결하기 위해 데이터 암호화는 처리 속도가 빠른 공통 키 암호 방식으로 수행하고 키 관리는 공개 키 암호 방식을 이용하여 키 분배 문제를 해결한다. 동작 흐름 A가 B에게 데이터를 전달한다고 가정해보자. A는 처리 속도가 빠른 공통 키 암호 방식으로 데이터를 암호화한다. B는 공개 키와 비밀 키를 생성하고 A에게 공개 키를 전달한다. A는 B에게서 전달 받은 공개 키를 이용하여 키를 암호화하고 암호문을 B에게 전달한다. B는 비밀 키를 이용하여 키 암호문을 복호화한다. B는 복호화한 키를 이용하여 데이터 암호문을 복호하하여 원 데이터를 획득한다. 사용 예시 SSL 프로토콜