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