missing encryption of sensitive data

11
Missing Encryption of Sensitive Data System & Network Security Lab 석석 25 석 석석석 2013.5.8

Upload: zeal

Post on 23-Mar-2016

79 views

Category:

Documents


6 download

DESCRIPTION

Missing Encryption of Sensitive Data. System & Network Security Lab 석사 25 기 유창훈 2013.5.8. Table of Contents. 소개 코드예제 보안대책 Q&A. 프로그램이 개인정보 , 인증정보 , 금융정보 등의 사용자 중요정보를 평문으로 저장하거나 통신채널을 통해 송수신할 경우 노출의 가능성 . Introduction. 취약한 코드 안전한 코드. 코드예제 - 쿠키에 저장되는 비밀정보. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Missing Encryption of Sensitive  Data

Missing Encryption of Sensitive Data

System & Network Security Lab석사 25 기 유창훈

2013.5.8

Page 2: Missing Encryption of Sensitive  Data

Table of Contents

1. 소개2. 코드예제3. 보안대책4. Q&A

Page 3: Missing Encryption of Sensitive  Data

Introduction

프로그램이 개인정보 , 인증정보 , 금융정보 등의 사용자 중요정보를 평문으로 저장하거나 통신채널을 통해 송수신할 경우 노출의 가능성 .

Page 4: Missing Encryption of Sensitive  Data

코드예제 - 쿠키에 저장되는 비밀정보

취약한 코드

안전한 코드

Function p1($Username, $passwd){

$data = array(“Username” => $Username, “password” => $passwd);setcookie(“userdata”, $data);

}

Function p1($Username, $passwd){

$data = array(“Username” => $Username, “password” => ENC_SHA($passwd));

setcookie(“userdata”, $data);}

Page 5: Missing Encryption of Sensitive  Data

코드예제 – php 를 통한 DB 저장

취약한 코드

안전한 코드

$id = $_POST[‘id’];$passwd = $_POST[‘passwd’];mysql_query(“INSERT INTO member(id,passwd) VALUES(‘$id’,’$passwd’)”);

$id = $_POST[‘id’];$passwd = sha1($_POST[‘passwd’]);Mysql_query(“INSERT INTO member(id,passwd) VALUES(‘$id’,’$passwd’)”);

$result = mysql_query(“SELECT * FROM member WHERE id=$’id’”);$rows = mysql_fetch_array($result);

If(!$result){echo “ 해당 id 가 없습니다” ;

}else if($rows[‘passwd’] !=$passwd) { echo “ 비밀번호가 틀립니다” ;

Page 6: Missing Encryption of Sensitive  Data

코드예제 – 네트워크를 통해 전송되는 암호

취약한 코드

안전한 코드

Socket socket = new Socket(“tranis”, 4444);PrintWriter out = new PrintWriter(socket.getOutputStream(), true);String password = getPassword();out.write(password);

Socket socket = new Socket(“tranis”, 4444);PrintWriter out = new PrintWriter(socket.getOutputStream(), true);Cipher c = Cipher.getInstance(“AES/CBC/PKCS5Padding”);String password = getPassword();encryptedStr = c.update(password.getBytes());

out.write(encryptedStr,0,encryptedStr.length);

Page 7: Missing Encryption of Sensitive  Data

보안대책 및 점검방법

평문으로 전송 / 저장 되어있다고 해서 모두 취약한 것은 아니다 .

개인정보 ( 주민등록번호 , 여권번호 등 ), 금융정보 ( 카드번호 , 계좌번호 등 ), 패스워드 등을 저장 할 때에는 암호화 하여 저장 했는가 ?

통신채널을 통해 민감한 정보를 전송할 때에도 암호화 했는가 ?

Page 8: Missing Encryption of Sensitive  Data

보안대책 및 점검방법

1. 데이터나 자원이 암호화하여 보호해야 할 만큼 가치가 있는 것인지 분명히 한다 .① 시스템 사용자의 개인정보 및 민감한정보 ( 중요정보 , 백업 ) 를 저장 또는

전송 .- 내부 / 외부 사용자 누구든지 내부의 민감한 정보에 접근 할 수 있다는 가정을 해야한다 .

② 중요정보를 저장하지 않는다 .

③ 인가되지 않은 사용자로부터 시스템 자체를 보호하기 위한 암호화 . ( 접근제어 )

Page 9: Missing Encryption of Sensitive  Data

보안대책 및 점검방법

2. 암호알고리즘 선택① 관련분야의 전문가들이 권장하는 알고리즘 선택 .

: MD4, MD5, SHA1, DES 제외 , SHA-256 권고

② 자체적으로 개발한 알고리즘 사용하지 않음 . : 방지 vs 치료

③ 구현 방식을 정확하게 구현 .Java : MessageDigest Class 이용 . C/php : mhashC++ : System.Security.Cryptography 추가후

SHA256 객체생성 .

Page 10: Missing Encryption of Sensitive  Data

보안대책 및 점검방법

3. SSL 과 같은 표준 보안기술 적용 .① 일반적으로 공격자는 암호화 알고리즘 자체를 직접 공격하지 않음 .② 정보가 중간에서 도청 되어도 해독이 불가능하도록 SSL 을 이용한 서비스를

제공 .③ 하지만 중간자공격 (MITM) 과 같은 정보 가로채기 공격을 수행함 .④ 꾸준히 로컬네트워크 점검을 통해 중간자 공격을 예방해야함 .

Page 11: Missing Encryption of Sensitive  Data

Q&A

감사합니다 .