포럼

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


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


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

글쓴이 제목 최종 글
XE만세 (수정) 속도 문제 해결했습니다, [2] 2014.04.16 by XE만세
푸시아 저사양 서버의 XE [7] 2014.04.16 by GG
ForHanbi 폰트가 바뀐거 같네요. [5] 2014.04.16 by 뮤르시엘라고
DynamicLaser github로 pull request 두번한게 모두 다 반영되었네요. [3] 2014.04.15 by XE
이즈야 1.7.5 나오는 거 아니었나요? [6] 2014.04.15 by 애니즌
W.O 질문이 해결되었으면 해결되었다고 댓글을 달아주셨으면 좋겠어요 [3] 2014.04.15 by W.O
곰탕lol왕자 imgur api 드디어 깔았네요 [8] 2014.04.15 by 곰탕lol왕자
애니즌 xe에서는 임의 속성을 삭제하나 봅니다..ㅠㅠ [8] 2014.04.15 by 애니즌
DynamicLaser 게시판 스킨에서 꼭 필요한 기능 어느것들이 있을까요? [3] 2014.04.15 by XE힘들당휴
zero [취소] zbXE를 이용한 사이트 구축 및 활용 사례에 대해서 주제 발표해주실 분 모십니다. [3] 2014.04.14 by RPGLover
마이웹 참나 기가 막혀서 [52] 2014.04.14 by 이니셔티브
xe_마니 SSL자동설치 [9] 2014.04.14 by xe_마니
애니즌 문서 모듈에서 공지로 설정된 글이 항상 최근 글로 인식하는 문제..? file  
애니즌 휴... [34] 2014.04.14 by 애니즌
ForHanbi 포럼형이면 진짜 포럼형 구조를 여기에 한번 테스트 해 보는것도... [5] 2014.04.14 by teguh100
용초딩 아이디 로그인, 이메일 로그인 차이가 뭔가용? [5] 2014.04.14 by 용초딩
마이웹 정말 솔직히 이야기할까요? [3] 2014.04.14 by KrteamENT
ForHanbi 이런 카르마님의 검색모듈이 안정화 되었나보네 [10] 2014.04.14 by JinkPark
AJKJ 서버→클라이언트 암호화 애드온 개발 실패 ㅠㅠ [6] 2014.04.14 by 기진곰
ForHanbi 전문가를 상대하기는 힘들어... [2] 2014.04.14 by ForHanbi