1. 2015. 6. 29. 10:48 개발자료/W3C

서론
개인단말기가 급격한 발전을 이루면서 보안은 더욱 중요해졌다
2006년도당시 개인단말기는 전화와 문자용도 였는데 오늘날 전문적인 스펙을 갖추지 않은 휴대폰으로도 충분히 해킹을 할 수 있다
공공장소의 WiFi또한 활성화되어 많이 활용되고 있다
데이터의 암호화는 선택이 아닌 필수가 되었다


요약
RSA는 대칭키가 아닙니다
암호A로 압축하면 암호B로 풀수 있습니다
이것이 Public(공용), private(개인) 키 입니다
공용키와 개인키는 컴퓨터가 랜덤으로 정하는 방식으로 생성 합니다
512, 1024, 2048, 4096 비트가 사용되고 있으며 512는 개인키를 추적할 수 있는 문제가 있어서 보통은 사용되지 않습니다
비트수가 높아질수록 처리하는데 많은시간이 소요 됩니다

흔한 자바스크립트와 PHP로 설명을 합니다
호스팅대부분이 PHP 를 채택하고 있으니까요

라이브러리
자바스크립트] asmcrypto.js : https://github.com/vibornoff/asmcrypto.js/
PHP] phpseclib : http://phpseclib.sourceforge.net/



PHP 미리보기 

include 'Crypt/RSA.php';

$rsa = new Crypt_RSA();

$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_RAW);

var_dump( $key=$rsa->createKey() );

echo '<hr>';

echo $key['publickey']['e']->toHex();

echo '<hr>';

echo $key['publickey']['n']->toHex();

echo '<hr>';

echo $rsa->getPrivateKey();
echo '<hr>';

echo $rsa->getPublicKey();



자바스크립트 미리보기 

var pubkey = [

asmCrypto.hex_to_bytes('c13f894819c136381a94c193e619851ddfcde5eca770003ec354f3142e0f61f0676d7d4215cc7a13b06e0744aa8316c9c3766cbefa30b2346fba8f1236d7e6548cf87d9578e6904fc4291e096a2737fcd96624f72e762793505f9dfc5fa17b44611add54f5c00bf54373d720cb6f4e5cabae36c4442b39dbf49158414547f453'),

asmCrypto.hex_to_bytes('10001')

];
var ciphertext = asmCrypto.RSA_RAW.encrypt( text, pubkey );

return asmCrypto.bytes_to_hex(ciphertext);


마침
자바스크립트 쪽에서는 인코딩만 갖추면 됩니다
보안이 강력한 이유는 키를 매번 새로 생성할 수 있고, 매번 바뀌는 키를 알려면 매우빠른 컴퓨터가 필요합니다
느리기 때문에 캐싱을 하는편이 좋으며 서버쪽의 캐싱은 타임스탬프를 활용하면 쉽게 구현 가능합니다

물어보기 : http://cafe.naver.com/dehack

 

Posted by Nightly Luna
,
® © Tanny Tales
/ rss