Akashic Records

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

오래된글/Java

자바을 이용한 암호학 - 11

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

PLT 5.3 Applet 서명

자바1.0 : 애플릿은 기본적으로 SandBox 안에서만 실행된다.

자바1.1 : 서명된 애플릿인 경우 시스템 자원에 접근 가능(지나치게 많은 권한이 받게 되었다.)

자바2 : java.policy 파일에 특정 코드에 대한 엔트리를 넣음으로써 사용자는 해당하는 애플릿에 대한 매우 자세한 권한을 설정 할 수 있게 됨.


권한 적용 애플릿 작성

com.crypto.UsernameApplet.java

package com.crypto;

import java.applet.Applet;

import java.awt.Graphics;

public class UsernameApplet extends Applet {

String mUsername;

public void init() {

try {

mUsername = System.getProperty("user.name");

} catch (SecurityException e) {

e.printStackTrace();

mUsername = null;

}

}

public void paint(Graphics g) {

if (mUsername != null) {

g.drawString("Hello, " + mUsername + ".", 5, 25);

} else {

g.drawString("Couldn't get the username.", 5, 25);

}

}

}


UsernameApplet.html

<HTML>

<HEAD>

<TITLE>

Username Applet

</TITLE>

</HEAD>

<BODY>

<APPLET CODE="com.crytpo.UsernameApplet.class" WIDTH=300 HEIGHT=200>

</APPLET>

</BODY>

</HTML>


위의 애플릿 예제를 실행 시키면 애플릿이 시스템 프로퍼티 정보를 조회를 시도하는 도중 권한이 없어 조회를 하지 못하게 된다. JAVA_HOME/jre/lib/security/java.policy 파일이나 USER_HOME 디렉토리 및의 java.policy 파일에 다음 내용을 추가한다.

grant 절에 다음 추가

permission java.util.PropertyPermission "user.name", "read";


실행

“appletviewer UsernameApplet.html”

java.poicy 파일을 별도로 만들어 사용하기

“appletviewer –J-Djava.security.policy=java.policy.applet UsernameApplet.html”

여기서 java.policy.applet은 별도 작성된 policy 파일이다.

브라우저에서 실행

작성한 Html 파일을 HtmlConverter 툴을 이용하여 convert시킨다. 애플릿은 자바 플러그인을 활성화 시키는 것이 아니라 브라우저의 VM을 활성화시킨다. 이것을 바꾸기 위해 사용한다.

HtmlConverter tool 화면


변경 후 html 코드

<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 = "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"

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" WIDTH = 300 HEIGHT = 200>

</APPLET>

-->

<!--"END_CONVERTED_APPLET"-->

</BODY>

</HTML>


policy 파일을 사용자 디렉토리 밑에 .java.policy 이름으로 생성한다. policytool을 이용하여 작성하면 기본적으로 사용자 디렉토리에 생성된다. 이후 Html 파일을 브라우저로 호출하면 된다.


728x90
Comments