Akashic Records

자바을 이용한 암호학 - 12 본문

오래된글/Java

자바을 이용한 암호학 - 12

Andrew's Akashic Records 2018. 4. 7. 23:32
728x90

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>



728x90
Comments