2011년 6월 13일 월요일

자바을 이용한 암호학(자바보안 개정판:애플릿 RSA 서명) - 12

RSA-Signed Applet
전 애플릿 UsernameApplet을 RSA 서명 애플릿으로 작성해보도록 한다.
애플시 서명은 JDK에 포함되어 있는 jarsigner 툴을 이용하여 작성한다.

동작 순서
자바 플러그인 태그(OBJECT…)가 포함된 HTML 웹 페이지를 브라우저가 로드할 때, 자바 플로그인을 실행 시키고 애플릿의 로딩과 실행을 맡긴다. 플러그인은 애플릿을 다운로드하고 전자 서명을 체크한다. 만약 RSA 서명이 발견되면 플러그인은 java.policy 파일에 정의 된 보안 정책을 검사한다. 만약 코드 출처가(코드베이스와 서명자)가 해당 되는 엔트리에 있으면 java.lang.RuntimePermission usePolicy 권한이 설정 되어있는지 체크한다. 만약 설정 되어 있다면 정책에 정의된 권한을 사용한다. 그렇지 않다면 애플릿 서명자의 인증서를 체크한다. 만약 서명이 신뢰받는 CA의 것으로 판면되면 현재 실행되는 애플릿에게 AllPermission을 주어도 되는지 사용자에게 물어본다.
서명하기

1. RSA 키생성
D:java1.4bin>keytool -genkey -alias appletSigned -keyalg RSA
keystore 암호를 입력하십시오: hurukku
이름과 성을 입력하십시오.
[Unknown]: Hurukku
조직 단위 이름을 입력하십시오.
[Unknown]: Dev
조직 이름을 입력하십시오.
[Unknown]: ITDev
// 이름을 입력하십시오?
[Unknown]: SEOUL
/ 이름을 입력하십시오.
[Unknown]: SEOUL
조직의 자리 국가 코드를 입력하십시오.
[Unknown]: KO
CN=Hurukku, OU=Dev, O=ITDev, L=SEOUL, ST=SEOUL, C=KO() 맞습니까?
[아니오]: Y
<appletSigned> 대한 암호를 입력하십시오
(keystore 암호와 같은 경우 RETURN 누르십시오):


2. 인증서 설치(CA인증서가 없을 때)
D:java1.4bin>keytool -export -alias appletSigned -file appletSigned.cer
keystore 암호를 입력하십시오: hurukku
인증서가 <appletSigned.cer> 파일에 저장되었습니다.


생성된 인증서를 클릭한다.


위의 Install Certificate 버튼을 클릭하여 인증서를 설치한다.
3. 기존 CA인증서가 있는 경우
Keytool –import –alias appletSigned –file [CA 인증서]


4. JAR 파일 서명하기
c:developmentCryptographyAppletSigningclasses>jar cvf UsernameApplet.jar com
추가된 manifest
추가 중: com/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: com/crypto/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: com/crypto/MS/(내부 = 0) (외부= 0)(0%가 저장되었습니다.)
추가 중: com/crypto/UsernameApplet.class(내부 = 1145) (외부= 635)(44%가 감소되었습니다.)
c:developmentCryptographyAppletSigningclasses>jarsigner UsernameApplet.jar appletSigned
Enter Passphrase for keystore: hurukku
c:developmentCryptographyAppletSigningclasses>


실행
Html 파일(htmlconverter을 이용)
<HTML>
<HEAD>
<TITLE>
Username Applet
</TITLE>
</HEAD>
<BODY>
<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<OBJECT
classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase = "http://java.sun.com/update/1.4.2/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"
WIDTH = 300 HEIGHT = 200 >
<PARAM NAME = CODE VALUE = "com.crypto.UsernameApplet.class" >
<PARAM NAME = ARCHIVE VALUE = "UsernameApplet.jar" >
<PARAM NAME = "type" VALUE = "application/x-java-applet;version=1.4">
<PARAM NAME = "scriptable" VALUE = "false">
<COMMENT>
<EMBED
type = "application/x-java-applet;version=1.4"
CODE = "com.crypto.UsernameApplet.class"
ARCHIVE = "UsernameApplet.jar"
WIDTH = 300
HEIGHT = 200
scriptable = false
pluginspage = "http://java.sun.com/products/plugin/index.html#download">
<NOEMBED>
</NOEMBED>
</EMBED>
</COMMENT>
</OBJECT>
<!--
<APPLET CODE = "com.crypto.UsernameApplet.class" ARCHIVE = "UsernameApplet.jar" WIDTH = 300 HEIGHT = 200>
</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->
</BODY>
</HTML>

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...