김지수
(CIST (Center for Information Security Technologies), Korea Univ. Anam Campus)
,
문종섭
(CIST (Center for Information Security Technologies), Korea Univ. Anam Campus)
HTML5의 로컬스토리지는 HTML5에서 지원하는 웹 스토리지로, 디바이스에 파일 형태로 저장되어 온 오프라인 모두에서 호환 가능하고 영구 보관이 가능하다는 특징을 가진다. 그러나 로컬스토리지는 데이터를 평문상태로 저장하기 때문에, 파일에 대한 접근 및 수정이 가능하다. 또한 각 도메인에 대한 로컬스토리지를 파일명을 통해 분류하기 때문에, 파일명이 변조되거나 다른 디바이스로 유출되면 로컬스토리지 파일의 재사용이 가능하다는 문제점이 존재한다. 본 논문에서는 로컬스토리지 파일이 생성된 도메인 및 디바이스에 대한 무결성, 기밀성 보장을 위한 방법을 제안한다. 로컬스토리지에 저장되는 데이터를 암 복호화하여 보관하는 방법으로, 암호키는 서버에 보관되며 암호키를 요청하는 단계에서 로컬스토리지를 생성한 디바이스 및 도메인에 대한 인증이 이루어진다. 이를 통해 로컬스토리지의 도메인 및 디바이스간의 기밀성과 무결성을 보장한다. 최종적으로, 제안 방법에 따른 실험을 진행하여 본 논문에서 설명하는 로컬스토리지에 대한 비정상적인 접근에 대해 탐지하는 것을 보였다.
HTML5의 로컬스토리지는 HTML5에서 지원하는 웹 스토리지로, 디바이스에 파일 형태로 저장되어 온 오프라인 모두에서 호환 가능하고 영구 보관이 가능하다는 특징을 가진다. 그러나 로컬스토리지는 데이터를 평문상태로 저장하기 때문에, 파일에 대한 접근 및 수정이 가능하다. 또한 각 도메인에 대한 로컬스토리지를 파일명을 통해 분류하기 때문에, 파일명이 변조되거나 다른 디바이스로 유출되면 로컬스토리지 파일의 재사용이 가능하다는 문제점이 존재한다. 본 논문에서는 로컬스토리지 파일이 생성된 도메인 및 디바이스에 대한 무결성, 기밀성 보장을 위한 방법을 제안한다. 로컬스토리지에 저장되는 데이터를 암 복호화하여 보관하는 방법으로, 암호키는 서버에 보관되며 암호키를 요청하는 단계에서 로컬스토리지를 생성한 디바이스 및 도메인에 대한 인증이 이루어진다. 이를 통해 로컬스토리지의 도메인 및 디바이스간의 기밀성과 무결성을 보장한다. 최종적으로, 제안 방법에 따른 실험을 진행하여 본 논문에서 설명하는 로컬스토리지에 대한 비정상적인 접근에 대해 탐지하는 것을 보였다.
A local storage of HTML5 is a Web Storage, which is stored permanently on a local computer in the form of files. The contents of the storage can be easily accessed and modified because it is stored as plaintext. Moreover, because the internet browser classifies the local storages of each domain usin...
A local storage of HTML5 is a Web Storage, which is stored permanently on a local computer in the form of files. The contents of the storage can be easily accessed and modified because it is stored as plaintext. Moreover, because the internet browser classifies the local storages of each domain using file names, the malicious attacker can abuse victim's local storage files by changing file names. In the paper, we propose a scheme to maintain the integrity and the confidentiality of the local storage's source domain and source device. The key idea is that the client encrypts the data stored in the local storage with cipher key, which is managed by the web server. On the step of requesting the cipher key, the web server authenticates whether the client is legal source of local storage or not. Finally, we showed that our method can detect an abnormal access to the local storage through experiments according to the proposed method.
A local storage of HTML5 is a Web Storage, which is stored permanently on a local computer in the form of files. The contents of the storage can be easily accessed and modified because it is stored as plaintext. Moreover, because the internet browser classifies the local storages of each domain using file names, the malicious attacker can abuse victim's local storage files by changing file names. In the paper, we propose a scheme to maintain the integrity and the confidentiality of the local storage's source domain and source device. The key idea is that the client encrypts the data stored in the local storage with cipher key, which is managed by the web server. On the step of requesting the cipher key, the web server authenticates whether the client is legal source of local storage or not. Finally, we showed that our method can detect an abnormal access to the local storage through experiments according to the proposed method.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 로컬스토리지 파일이 외부 공격자에 의해 탈취되었을 때, 외부 도메인에서 획득한 로컬스토리지 값의 확인 및 재사용이 불가능하게 하기 위한 방법을 제시한다. 값에 대한 확인 및 재사용이 불가능하게 함으로써 로컬스토리지의 생성원에 대한 무결성 및 데이터의 기밀성에 대해 보장한다.
본 논문에서 설명하는 로컬스토리지 생성원에 대한 기밀성 및 무결성 검증을 위해, 실제 환경을 적용하여 외부 디바이스에서 로컬스토리지의 사용가능 여부를 검증해 보았다.
본 논문에서는 디바이스 고유 값이 제안사항의 안정성에 가장 큰 영향을 미친다. 현재 PC에서는 본 논문에서 제안하는 요구사항에 만족하는 단일 값이 존재하지 않으므로, 검증 단계에서는 여러 디바이스 정보를 조합하여 사용하였다.
본 논문에서는 로컬스토리지 파일이 외부 공격자에 의해 탈취되었을 때, 외부 도메인에서 획득한 로컬스토리지 값의 확인 및 재사용이 불가능하게 하기 위한 방법을 제시한다. 값에 대한 확인 및 재사용이 불가능하게 함으로써 로컬스토리지의 생성원에 대한 무결성 및 데이터의 기밀성에 대해 보장한다.
본 논문에서는 로컬스토리지의 보안상 취약점을 보완하기 위해 데이터를 암호화하여 로컬스토리지에 보관하는 방식을 제안한다. 이 때 암·복호화 과정은 모두 브라우저 내부에서 이루어지며, 키의 입력 또한 사용자에 의한 입력이 아닌 브라우저 내부에서 서버에 요구하여 키를 받아온다.
본 논문에서는 암·복호화 및 키 입력 등 모든 과정을 자동화하여 여러 공격자 모델에 대해 안전한 로컬스토리지 설계 기법을 제안한다.
제안 방법
com : 정상적인 도메인. 로컬스토리지에 인증서 및 사용자 식별에 사용되는 값을 저장해두고, 사용자 접속 시 인증서 값을 사용자에게 확인시켜준다. 사용자가 인증서 내용을 확인 한 후 계정 정보를 입력하여 인증서의 내용 확인 혹은 로그인에 필요한 이차 인증을 진행한다.
본 논문에서 공격자 모델을 그림 2와 같이 설정한다. 본 공격 환경 및 시나리오는 위 기술한 내용 중 Redirection attack을 이용한 피싱 공격에 근거하여 설계되었다.
본 논문에서 제안하는 기법은 총 4개의 알고리즘(Initialize, Request Key, Save, Load)으로 구성되어 있으며, 각 알고리즘에 대한 상세 설명은 아래와 같다.
로컬스토리지에 인증서 및 사용자 식별에 사용되는 값을 저장해두고, 사용자 접속 시 인증서 값을 사용자에게 확인시켜준다. 사용자가 인증서 내용을 확인 한 후 계정 정보를 입력하여 인증서의 내용 확인 혹은 로그인에 필요한 이차 인증을 진행한다.
통신 초기에 서버와 클라이언트가 공개키를 교환한다. 이후 서버에서 시간 정보를 이용해 쿠키를 생성하고, 타임스탬프와 서명 정보를 클라이언트의 공개키로 암호화하여 전송한다. 클라이언트는 이를 복호화하고 서명과 타임스탬프를 검증한다.
키 보관을 위해 사용한 데이터베이스로 데이터베이스 관리도구 MySQL[19]을 사용하였다. 키생성을 위해 math[20] 자바스크립트 라이브러리를 사용 하여 구현했다. 최초 키 생성 요청 시 해시값 암·복호화를 위해 JSencrypt[21] 자바스트립트 라이브러리의 RSA[22] 암호화 방식을 사용했다.
대상 데이터
5 GHz intel core i3 CPU, DDR3 8GByte RAM, 윈도우 운영체제7를 사용했다. 사용한 브라우저는 Internet Explorer 11을 사용했다.
암호화 및 해시 값 생성을 위해 CryptoJS[16] 자바스크립트 라이브러리를 사용했다. 암호화에는 대칭키 암호화 방식인 AES[17]를 사용했고, 운영모드는 CBC를 사용했다.
이론/모형
암호화 및 해시 값 생성을 위해 CryptoJS[16] 자바스크립트 라이브러리를 사용했다. 암호화에는 대칭키 암호화 방식인 AES[17]를 사용했고, 운영모드는 CBC를 사용했다. 해시방식은 SHA3[18] 해싱 방식을 사용했다.
최초 키 생성 요청 시 해시값 암·복호화를 위해 JSencrypt[21] 자바스트립트 라이브러리의 RSA[22] 암호화 방식을 사용했다.
디바이스 고유 식별 값으로 사용되는 Dv 는 현재 PC에 128 비트를 만족하는 디바이스 고유 값이 존재하지 않기 때문에, 여러 디바이스 정보 중 MAC address 와 BIOS 버전 정보 그리고 OS 설치시간을 패딩하여 128비트의 길이의 값을 생성해 주었다. 키 보관을 위해 사용한 데이터베이스로 데이터베이스 관리도구 MySQL[19]을 사용하였다. 키생성을 위해 math[20] 자바스크립트 라이브러리를 사용 하여 구현했다.
암호화에는 대칭키 암호화 방식인 AES[17]를 사용했고, 운영모드는 CBC를 사용했다. 해시방식은 SHA3[18] 해싱 방식을 사용했다. 디바이스 고유 식별 값으로 사용되는 Dv 는 현재 PC에 128 비트를 만족하는 디바이스 고유 값이 존재하지 않기 때문에, 여러 디바이스 정보 중 MAC address 와 BIOS 버전 정보 그리고 OS 설치시간을 패딩하여 128비트의 길이의 값을 생성해 주었다.
성능/효과
(2) 디바이스 고유 식별 정보의 길이와 암호화에 사용 되는 키의 길이는 대칭키 암호 알고리즘의 보안 강도 권고사항인 128비트 혹은 그 이상의 값을 사용 한다.
(3) 암호 키는 서버에서 생성 및 관리된다.
(5) 인증 프로토콜에서 사용되는 값은 재사용이 불가능하도록 신선성(freshness)이 보장되어야 한다.
- 본 논문에서 설명한 보안 취약점 중 ‘다른 디바이스 에서 재사용 가능한 문제’ 와 ‘생성된 도메인이 아닌 다른 도메인에서 사용 가능한 문제’ 를 이용하여 로컬스토리지의 직접적인 재사용이 가능하고, 또한 리다이렉션(Redirection attack)[15]을 이용한 피싱 공격등 2차적인 공격이 가능하다.
여러 브라우저 간의 호환을 위해 새로운 웹 표준인 HTML5[1] 가 등장했다. 기존의 HTML 언어에서 ActiveX를 통해서만 구현 가능했던 기능들의 상당수가 HTML5 API로 구현 되었고, 자바스크립트와의 연동 또한 용이하여 외부 플러그인 없이도 고수준의 웹 어플리케이션의 구현이 가능해졌다.
하지만 이 방식은 암호키인 SMP의 입력이 사용자에 의해 이루어지기 때문에 키로거(Key logger) 공격에 취약 하다. 또한 이 논문에서 제안하는 보안 영역인 SecLDS은 브라우저가 가질 수 있는 시스템 제어 권한이 브라우저에 따라 상이하기 때문에 HTML5의 장점인 호환성을 보장하기 힘들다.
본 논문에서 제안 하는 방법은 값을 암호화하고 해시 값을 생성하는 모든 과정에서 사용자에 의해 어떠한 입력 없이 스크립트를 통해 자동으로 처리되기 때문에 키로거 공격 및 리다이렉션 공격 등 여러 공격자 모델에 대해서 안전하다. 암·복호화에 사용되는 키 관리 또한 서버에서 관리되기 때문에 비교적 안전하다.
이 논문에서 제안하는 방식에서 Mac주소와 같은 디바이스의 고유 값을 식별자로 사용하여 보관정보를 암호화하여 보관한다는 점은 쿠키와 동일하게 로컬 디스크에 보관되고, 특정 서버와 연결되어야 사용 가능한 로컬스토리지 특성에 적용하기에 적당하다.
후속연구
로컬스토리지는 데이터의 직접적인 저장이 가능하기 때문에 도메인에서 사용자 식별에 사용되는 UUID(Universally unique identifier) 값 등을 저장하는데 주로 사용되고 있다. 최근 국내 은행에서 공인인증서를 저장하는데 로컬스토리지가 사용되면서, 추후 로컬스토리 지의 이용 범위가 더욱 넓어질 것으로 기대된다.
향후 인터넷 브라우저가 설계될 때 디바이스에 설치된 브라우저 각각에 대해 고유의 serial 혹은 설치 번호 등이 부여된다면, 본 논문에서 언급한 기법을 좀 더 쉽게 활용될 수 있을 것이라 기대한다.
질의응답
핵심어
질문
논문에서 추출한 답변
로컬 스토리지 설계시 특히 데이터 보안에 신경을 써야하는 이유는 무엇인가?
로컬스토리지는 저장되는 단계에서 입력된 데이터를 평문 그대로 로컬 디스크에 저장하며, 파일의 형태로 디스크에 저장되기 때문에, Cross-site Scripting(XSS)[4] 공격부터 물리적인 공격까지 다양한 악의적인 공격을 통해 파일의 내용을 열람하거나, 파일 자체를 네트워크를 통해 외부로 전송하는 것이 가능하다. 획득한 로컬스토리지 파일은 쉽게 수정이 가능하고, 값을 획득하였을 경우, 획득한 값을 이용하여 동일한 로컬스토리지를 생성하는 것 또한 가능하다. 또한 획득한 로컬스토리지 파일을 생성한 도메인이 아닌 다른 도메인에서 재사용이 가능하다. 따라서 로컬스토리지 설계 시 저장되는 데이터 보안에 대한 고려가 필요하다.
웹 스토리지는 무엇을 위해 고안되었는가?
웹 스토리지[2] 는 HTML5와 함께 등장하였다. 웹 스토리지는 기존의 쿠키[3]가 가진 적은 용량의 한계를 극복하고, 데이터의 직접적인 저장 및 참조를 위해 고안된 기법으로, 로컬스토리지와 세션 스토리지 두 종류가 존재 한다. 로컬스토리지는 데이터가 사용자의 로컬 디스크에 저장되어 유효기간 없이 보관되고, 세션스토리지는 세션이 종료되면서 사라지는 차이점을 제외하면 동일한 성질을 가진다.
HTML5의 로컬스토리지 특징은 무엇인가?
HTML5의 로컬스토리지는 HTML5에서 지원하는 웹 스토리지로, 디바이스에 파일 형태로 저장되어 온 오프라인 모두에서 호환 가능하고 영구 보관이 가능하다는 특징을 가진다. 그러나 로컬스토리지는 데이터를 평문상태로 저장하기 때문에, 파일에 대한 접근 및 수정이 가능하다. 또한 각 도메인에 대한 로컬스토리지를 파일명을 통해 분류하기 때문에, 파일명이 변조되거나 다른 디바이스로 유출되면 로컬스토리지 파일의 재사용이 가능하다는 문제점이 존재한다. 본 논문에서는 로컬스토리지 파일이 생성된 도메인 및 디바이스에 대한 무결성, 기밀성 보장을 위한 방법을 제안한다.
참고문헌 (22)
W3C, "HTML 5.1" September 2015. http://www.w3.org/TR/html51/
W3C, "Web Storage (Second Edition)" June 2015, http://www.w3.org/TR/webstorage/
W3C, "HTTP Specifications and Drafts" March 2002, http://www.w3.org/Protocols/Specs.html
OWASP, "Cross-site Scripting(XSS)" April 2014, https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
J.S. Park, R. Sandhu, "Secure cookies on the Web." IEEE internet computing 4.4 (2000): 36. http://dx.doi.org/10.1109/4236.865085
M. Ter Louw, K.T. Ganesh, V. N. Venkatakrishnan, "AdJail: Practical Enforcement of Confidentiality and Integrity Policies on Web Advertisements." USENIX Security Symposium. 2010. http://static.usenix.org/event/sec10/tech/full_papers/TerLouw.pdf
J.P. Yang, K.H. Rhee, "The design and implementation of improved secure cookies based on certificate." Progress in Cryptology-INDOCRYPT 2002. Springer Berlin Heidelberg, 2002. 314-325. http://dx.doi.org/10.1007/3-540-36231-2_25
H. Wu, W. Chen, Z. Ren, "Securing cookies with a MAC address encrypted key ring." Networks Security Wireless Communications and Trusted Computing (NSWCTC), 2010 Second International Conference on. Vol. 2. IEEE, 2010. http://dx.doi.org/10.1109/nswctc.2010.151
M. Jemel, Mayssa, A. Serhrouchni, "Security assurance of local data stored by HTML5 web application." Information Assurance and Security (IAS), 2014 10th International Conference on. IEEE, 2014. http://dx.doi.org/10.1109/isias.2014.7064619
R. Zhao, C. Yue, "All your browser-saved passwords could belong to us: A security analysis and a cloud-based new design." in Proceedings of the Third ACM Conference on Data and Application Security and Privacy, ser. CODASPY,13. ACM, 2013, pp. 333-340. http://dx.doi.org/10.1145/2435349.2435397
H.W. Myeong, J.H. Paik, D.H. Lee, "Study on implementation of Secure HTML5 Local Storage" Journal of Korean Socieity for Internet Information, 2012, 4: 83-93. http://dx.doi.org/10.7472/jksii.2012.13.4.83
J Ruderman, "The Same Origin Policy" August 2001. http://www-archive.mozilla.org/projects/security/components/same-origin.html
W3C, "Same Origin Policy" January 2010. http://www.w3.org/Security/wiki/Same_Origin_Policy
MDN, "Same-origin policy" July 2015. https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
OWASP, "Top 10 2013-A10-Unvalidated Redirects and Forwards" June 2013. https://www.owasp.org/index.php/Top_10_2013-A10-Unvalidated_Redirects_and_Forwards
J. Mott, "crypto-js" https://code.google.com/p/crypto-js/
J. Daemen, V. Rijmen,"The design of Rijndael: AES-the advanced encryption standard" Springer Science & Business Media, 2013.
P. Gauravaram, et al. "Grostl-a SHA-3 candidate." Submission to NIST, 2008. http://drops.dagstuhl.de/opus/volltexte/2009/1955/
A.B. MySQL, "MySQL." (2001).
J. Jong, "math.js" http://mathjs.org/index.html/
T. Wu, "JSEncrypt" http://travistidwell.com/jsencrypt/
M. Bellare, P. Rogaway, "The exact security of digital signatures-How to sign with RSA and Rabin." Advances in Cryptology-Eurocrypt'96. Springer Berlin Heidelberg, 1996. http://dx.doi.org/10.1007/3-540-68339-9_34
※ AI-Helper는 부적절한 답변을 할 수 있습니다.