Upload
zeal
View
90
Download
6
Embed Size (px)
DESCRIPTION
Missing Encryption of Sensitive Data. System & Network Security Lab 석사 25 기 유창훈 2013.5.8. Table of Contents. 소개 코드예제 보안대책 Q&A. 프로그램이 개인정보 , 인증정보 , 금융정보 등의 사용자 중요정보를 평문으로 저장하거나 통신채널을 통해 송수신할 경우 노출의 가능성 . Introduction. 취약한 코드 안전한 코드. 코드예제 - 쿠키에 저장되는 비밀정보. - PowerPoint PPT Presentation
Citation preview
Missing Encryption of Sensitive Data
System & Network Security Lab석사 25 기 유창훈
2013.5.8
Table of Contents
1. 소개2. 코드예제3. 보안대책4. Q&A
Introduction
프로그램이 개인정보 , 인증정보 , 금융정보 등의 사용자 중요정보를 평문으로 저장하거나 통신채널을 통해 송수신할 경우 노출의 가능성 .
코드예제 - 쿠키에 저장되는 비밀정보
취약한 코드
안전한 코드
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);}
코드예제 – 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 “ 비밀번호가 틀립니다” ;
코드예제 – 네트워크를 통해 전송되는 암호
취약한 코드
안전한 코드
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);
보안대책 및 점검방법
평문으로 전송 / 저장 되어있다고 해서 모두 취약한 것은 아니다 .
개인정보 ( 주민등록번호 , 여권번호 등 ), 금융정보 ( 카드번호 , 계좌번호 등 ), 패스워드 등을 저장 할 때에는 암호화 하여 저장 했는가 ?
통신채널을 통해 민감한 정보를 전송할 때에도 암호화 했는가 ?
보안대책 및 점검방법
1. 데이터나 자원이 암호화하여 보호해야 할 만큼 가치가 있는 것인지 분명히 한다 .① 시스템 사용자의 개인정보 및 민감한정보 ( 중요정보 , 백업 ) 를 저장 또는
전송 .- 내부 / 외부 사용자 누구든지 내부의 민감한 정보에 접근 할 수 있다는 가정을 해야한다 .
② 중요정보를 저장하지 않는다 .
③ 인가되지 않은 사용자로부터 시스템 자체를 보호하기 위한 암호화 . ( 접근제어 )
보안대책 및 점검방법
2. 암호알고리즘 선택① 관련분야의 전문가들이 권장하는 알고리즘 선택 .
: MD4, MD5, SHA1, DES 제외 , SHA-256 권고
② 자체적으로 개발한 알고리즘 사용하지 않음 . : 방지 vs 치료
③ 구현 방식을 정확하게 구현 .Java : MessageDigest Class 이용 . C/php : mhashC++ : System.Security.Cryptography 추가후
SHA256 객체생성 .
보안대책 및 점검방법
3. SSL 과 같은 표준 보안기술 적용 .① 일반적으로 공격자는 암호화 알고리즘 자체를 직접 공격하지 않음 .② 정보가 중간에서 도청 되어도 해독이 불가능하도록 SSL 을 이용한 서비스를
제공 .③ 하지만 중간자공격 (MITM) 과 같은 정보 가로채기 공격을 수행함 .④ 꾸준히 로컬네트워크 점검을 통해 중간자 공격을 예방해야함 .
Q&A
감사합니다 .