포럼

클라이언트→서버로의 폼 암호화 애드온을 개발에 성공해서, 서버→클라이언트로의 암호화 전송 애드온을 만들려고 했습니다.


간단한 아이디어는 다음과 같습니다.


1. 서버에서는 addon에서 최종출력전($called_position == 'before_display_content) 에 본문 내용($output) 변수를 전부 가로채서 php상에서 자체적으로 gzip(deflate)후 AES로 encrypt합니다. 그리고 Base64로 인코딩한 뒤에 자바스크립트 변수로 클라이언트에 쏴줍니다. (php상에서 자체적으로 gzip하는 이유는 불필요하게 낭비되는 공간을 잡아주기 위함입니다. 약 70%정도의 공간을 잡아줄수 있더군요. 게다가 암호화 하는 양 자체가 줄어들어서 모바일에서 암호를 빠르게 풀기 위해서는 이 방법이 필수라고 생각합니다.)


2. 클라이언트에서는 document가 로딩되자 마자, javascript 변수로 받은 본문내용을 AES로 decrypt합니다. 그리고 다시 Gzip으로 풀어준뒤에 utf-8형태로 변환하여 복원해 줍니다. 그리고 자바스크립트로 복원한 내용을 <body>태그 또는 자체 커스텸 태그(<ENCRYPTED>) 안에 몽땅 다 집어넣습니다...


(키 교환 과정은 생략합니다. 궁금하시면 댓글달아주시면 설명해 드릴게요.)


그러나 결론적으로 보면 실패했네요. 일단 저렇게 하니 CSS가 하나도 먹히지 않더군요. 만약 저 방법을 쓰려면 CSS 도 같이 암호화 하여 전송해야 할것(이런걸 동적로딩이라고 하나요?) 같네요. 그렇게 하려면 애드온에서 이것저것 할게 많아질것 같습니다. 그리고 가장 큰 문제로는 파이어폭스하고, 사파리에서는 저렇게 하면 CSS가 깨지긴 해도 본문 내용이 나와주는데, 크롬이나 IE에서는 보안문제(내부 정책?) 때문인지, 화면이 하나도 나오지 않더군요. 소스보기를 하면 태그는 정상적으로 출력이 되는데 제가 실력이 부족한건지 브라우저 차원에서 막아둔것지 잘 모르겠더군요.


P.S

참고사항 모바일에서 충분히 자바스크립트로 encrypt/decrypt 부하가 과도하게 가지 않는지 체크를 해 보았는데, 큰 무리가 가지 않았습니다. 암호해독 성능이 우려되어서 RC4, AES, Rabbit등을 체크해 보았는데 , RC4와 AES256 둘다 쓸만하며, RC4가 AES256보다 두배 정도 빠르더군요. 그러나 AES128을 이용한다면 RC4랑 동등한 속도를 제공해 줄것으로 생각하기에, 이왕이면 보안이 강한 AES 을 이용하면 좋을것 같습니다. AES256이 2배 정도 느려도 워낙 빨라서 체감하기는 조금 힘들것 같습니다.


rabbit algorithm도 이용해 보았는데, 속도가 AES 256과 큰 차이가 없었습니다. 오차범위내로 rabbit이 조금 빨랐네요. 그냥 AES가 킹왕짱 인듯 합니다. 결론적으로는 gzip을 한다면, AES256을 이용하여도 모바일에서도 충분히 암호화를 풀어 낼 수 있었습니다.



참고한 library는


zlib 을 javascript로 구현한것

https://github.com/imaya/zlib.js


함수명 : UTF8ArrToStr

여기서 solution2 입니다. uint8, 배열(위 zlib에서 사용되더군요ㅡㅡ)을 utf8로 바꿔주는 디코더

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding

글쓴이 제목 최종 글
ForHanbi 이런 카르마님의 검색모듈이 안정화 되었나보네 [10] 2014.04.14 by JinkPark
AJKJ 서버→클라이언트 암호화 애드온 개발 실패 ㅠㅠ [6] 2014.04.14 by 기진곰
ForHanbi 전문가를 상대하기는 힘들어... [2] 2014.04.14 by ForHanbi
DynamicLaser 이미지 압축만 서비스하는 신기한 홈페이지가 있어서 소개합니다. [6] 2014.04.14 by 카르마
W.O 가끔 보면 이런 생각이 듭니다. [2] 2014.04.14 by zombiman
XE 공식사이트 관련 문의나 제안사항은 "사이트 이용 문의"로 부탁드립니다. [10] 2014.04.14 by socialskyo
별을사랑했네 XE 기본탑제 레이아웃은 무엇 때문에 만들어 둔건가요? [2] file 2014.04.13 by YJSoft
이즈야 윈도우XP 지원종료 기념 애드온 제작중인데... [21] file 2014.04.12 by 이즈야
업글 설치형 블로그 업글타일 공식 사이트 베타(?) 오픈 하였습니다. [18] file 2020.03.14 by 오락실주인
KrteamENT 개발자가 일은 하고 돈은 못받고 ㅎㅎ [20] file 2014.04.13 by Garon
CI XSS 공격 [15] file 2013.11.21 by CI
푸시아 기본 게시판 파일 서버 분리 작업 성공했네요~ [14] file 2014.02.16 by starlee3
가을풍경 지도형 게시판을 만들려고 합니다. [5] file 2012.12.31 by Gary189
*별로* 회원 확장 입력에서 다국어 추가 file  
키스미베이베 DB를 손보다가 망쳣는데 이렇게해도 될까요? [3] file 2012.09.03 by misol
도라미 초창기 개발자문서 'XE스킨제작실습' 수정해봤어요 [8] file 2012.08.22 by 도라미
Xiso executeQuery의 버그 [7] file 2012.05.07 by 난다날아
misol 게시글 중복 등록 문제를 이렇게 해결하면 어떨까요? [6] file 2012.01.27 by misol
어쿠스틱 한 확장변수의 양이 매우 많을 때 이상한 버그 같은 게 있는 것 같습니다. [4] file 2012.11.14 by trustech
Treasurej 개발팀님, 코어 404 테스트 해주세요. [6] file 2012.01.20 by 황비