• Sonuç bulunamadı

Büyük İskender’in Doğu Seferi Sırasında Parōreia Bölgesi

I. BÖLÜM

3.4. Hellenistik Dönem’de Phrygia Parōreia Bölgesi

3.4.1. Büyük İskender’in Doğu Seferi Sırasında Parōreia Bölgesi

Descr ever em os nesse Capít ulo a im plem ent ação, na plat afor m a CORBA, do Ser viço de Cer t ificação Digit al pr opost o nesse t r abalho. No pr oj et o da im plem ent ação, pr im eir am ent e especificam os a int er face do ser viço, de acor do com o que foi det er m inado no Capít ulo 4. Em seguida, especificam os as int erfaces relat ivas às ent idades que com põem o serviço de cert ificação digit al. Essa segunda par t e é específica da im plem ent ação CORBA r ealizada, no ent ant o visa cum prir o obj et ivo de por t abilidade par a diver sos t ipos de ent idades cer t ificador as. Ou sej a, na im plem ent ação foi ut ilizada um a CA específica im plem ent ada com o um obj et o CORBA, por ém pr evendo que pode vir a ser ut ilizada qualquer out r a CA.

O am bient e de im plem ent ação do ser viço é com post o pela linguagem Java, pela plat aform a CORBA e pelo LDAP. A im plem ent ação CORBA ut ilizada foi a que est á incluída no J2SDK 1.4. A linguagem de program ação ut ilizada para im plem ent ação dos obj et os e dos client es foi a linguagem Java. O Ser viço de

diret ór io ut ilizado foi o LDAP, especificam ent e a im plem ent ação OpenLDAP, por ser um soft w ar e livr e.

A Seção 5.1 m ost r a o diagr am a de classes especificado par a a im plem ent ação do ser viço. A Seção 5.2 com ent a, br evem ent e, sobr e a im plem ent ação, ilust r ando t r echos de códigos de alguns dos pr incipais m ét odos. Na Seção 5.3 é apr esent ado um est udo de caso em que ilust r am os com det alhes o código de um a aplicação que ut iliza a im plem ent ação do serviço de cert ificação.

5 . 1 C l a s s e s

Na Figur a 5.1 é m ost r ado o diagr am a de classes que especifica as classes im plem ent adas.

A classe COSCer t ificat ionSer vice r epr esent a o ser viço com o um t odo, agr egando os com ponent es do ser viço.

A classe Dir ect or ySer vice é r esponsável por fazer acesso ao OpenLDAP par a ar m azenar / r ecuper ar obj et os, além de ser r esponsável por det er m inar o cam inho de cer t ificação, que ser á abor dado post er ior m ent e.

A classe Cer t ificat ionAut hor it y r epr esent a a ent idade cer t ificador a, responsável por criar cert ificados de ident idade ( I dent it yCer t ificat e) , validar os t ipos de cer t ificados, r ecuper ar st at us de um cer t ificado ( válido,r evogado) , solicit ar ao serviço de diret ór io a publicação/ localização de cert ificados e list as de r evogação.

A classe At t r ibut eAut hor it y r epr esent a a aut or idade r esponsável por criar cer t ificados de at r ibut os, solicit ar cert ificados de ident idade e validar os dem ais t ipos de cert ificados. Ela t am bém at ua com LRA, fazendo solicit ações a ent idades cert ificadoras e t em com o função solicit ar rev ogações de cert ificados e aut ent icações de inform ação de t it ulares de cert ificados.

A classe Cer t ificat e é um a gener alização dos t ipos de cer t ificados, concent r ando infor m ações com uns aos dem ais t ipos cer t ificados. As classes I dent it yCer t ificat e, At t r ibut eCer t ificat e e Pr oxyCer t ificat e r epr esent am r espect ivam ent e o cer t ificado de ident idade, o cer t ificado de at r ibut os e os prox y cer t ificat es, que for am abor dados nos Capít ulos ant er ior es.

A classe Revogat ionList represent a a list a de revogação que est á associada a um a CA, pois t oda CA possui apenas um a list a de r evogação. Essa, por sua vez, é publicada no OpenLDAP, at r avés da classe Dir ect or ySer vice.

A classe Tr ust Hier ar chy é ut ilizada para especificar a relação de confiança ( quem confia em quem ) , necessár ia par a dar supor t e a const r ução do

cam inho de validação. Assim é possível um a ent idade configur ar em quais out r as ent idades do ser viço ou do sist em a ela confia.

5 . 2 D e s c r i ç ã o

Na im plem ent ação do m ét odo par a cr iação de cer t ificados de ident idade e de pr oxy, par a ger ação de chaves foi ut ilizado o pacot e j ava.secur it y. A Figur a 5.2 r efer e- se ao código da ger ação do par de chaves, pr ivada e pública, e a ger ação da assinat ur a.

Figu r a 5 .2 : Tr e ch o de código pa r a ge r a çã o de ch a v e s.

Os obj et os usados nesse código são obj et os disponibilizados pelo pacot e j ava.secur it y. São eles: KeyPair Gener at or , Secur eRandom , KeyPair , PublicKey, Pr ivat eKey e Signat ur e. Na linha 1 o obj et o do t ipo KeyPair Gener at or é cr iado ut ilizando, par a ger ação de chaves cr ipt ogr áficas, o algor it m o DAS( Digit al Signat ur e Algor it hm ) pr ovido pela SUN. Na linha 2 é cr iada um a inst ância do obj et o Secur eRandom que é um gerador seguro de num ero aleat ór ios, ut ilizando o algor it m o especificado, no caso o “ SHA1PRNG” que segue a especificação do I EEE P1363. Na linha 3 é iniciado o processo de geração de chaves, com t am anho 1024 e ut ilizando o obj et o par a ger ação de núm er os aleat ór ios. Em seguida é ger ado o par de chaves ( pr ivada/ pública) e ent ão é iniciado o pr ocesso de assinat ur a. Ut ilizam os a r efer ência do obj et o com o dado a ser assinado, j á que no pr ocesso convencional é assinado com base nas infor m ações do usuár io.

1 KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA",

"SUN");

2 SecureRandom random = SecureRandom.getInstance("SHA1PRNG",

"SUN");

3 keyGen.initialize(1024, random);

4 KeyPair pair = keyGen.generateKeyPair(); 5 PrivateKey priv = pair.getPrivate(); 6 PublicKey pub = pair.getPublic();

7 Signature dsa = Signature.getInstance("SHA1withDSA", "SUN”); 8 dsa.initSign(privPk);//Chave privada da entidade emissora

Depois desses passos é cr iado o obj et o do t ipo I dent it yCer t ificat e, que se r efer e ao cert ificado de ident idade.

Par a publicar os cer t ificados e list a de r evogações, ut ilizam os a API do Java j avax.nam ing e j avax.nam ing.dir ect ory que ofer ece supor t e a m anipulação de dir et ór ios. O OpenLDAP ofer ece schem as par a ar m azenar t ant o obj et os CORBA com o obj et os Java, essa car act eríst ica facilit a a im plem ent ação do ser viço. O t recho de código da Figur a 5.3 descr eve a par t e do código da classe Dir ect or y Ser vice que faz a com unicação com o OpenLDAP.

Figu r a 5 .3 : Pu blica çã o de obj e t os n o se r v iço de dir e t ór io.

A linha 2 cr ia um obj et o Dir Cont ext que pr ovê m ét odos par a m anipulação de ser viços de dir et ór ios. O par âm et r o passado par a o const rut or I nit ialDirCont ext é um a Hasht able que cont ém a configur ação par a r ealizar o acesso ao ser viço de dir et ór ios. Na linha 3 o obj et o é ar m azenado no OpenLDAP. Vale r essalt ar que, par a colocar um a ent rada num ser viço de dir et ór io, é necessár io associar um DN ( Dist inguished Nam e) que deve ser único no escopo dos dir et ór ios, t al que, par a acessar esse obj et o, bast a saber o DN.

Para realizar o cam inho de cert ificação é necessário configurar a hier ar quia das ent idades, ou sej a, quem confia em quem . Os m ét odos t r adicionais ut ilizam o cam inho at r avés do cert ificados das CA. Porém , nesse t r abalho, pr evem os t am bém que o obj et o que est ej a ofer ecendo um det er m inado ser viço não sej a cer t ificado por nenhum a ent idade, o que, pelo m ét odo t radicional, seria im possível que esse serviço fosse ut ilizado, devido à falt a de cer t ificação. Par a evit ar esse pr oblem a, um obj et o deve configur ar as ent idades cer t ificador as nas quais ele confia, de t al que for m a que sej a possível validar o

1 try{

2 DirContext dir=new InitialDirContext(env); 3 dir.rebind(dn,obj);

cer t ificado. Ent ão, par a que um client e ut ilize seus serviços, ele deve apresent ar um cer t ificado, sej a de ident idade, at r ibut o ou pr oxy. Par a dar supor t e a configur ação da r elação de confiança, definim os um a int er face cham ada Tr ust Hier archy que especifica em quais ent idades ( CA,AA) um a det er m inada ent idade confia, de t al for m a que, possam os r ealizar t al pr ocesso, com o foi especificado no Capít ulo 2. Na Figura 5.4 t em os um a descr ição de um a hier ar quia exem plo ut ilizado no est udo de caso, que abordarem os na próxim a Seção.

Figu r a 5 .4 : H ie r a r qu ia de con fia n ça .

Est a Figur a m ost r a que um a det er m inada Ent idade A solicit a serviços de um a ent idade B. Par a isso, a ent idade B requisit a a apresent ação de um cert ificado, que foi em it ido pela CA denom inada Cer t Sign par a a Ent idade A. Com o a ent idade B não t em r elação dir et a de confiança com a ent idade A, é necessár io encont r ar o pont o de confiança m út uo que for nece supor t e par a essa validação, ou sej a, a CA AndSign. Na im plem ent ação, dado um det er m inado obj et o, pr ocur a- se t oda sua hier ar quia par a encont r ar o pont o com um ent r e dois

obj et os. Caso não haj a pont o em com um , o cer t ificado não é aceit o pela ent idade pr ovedor a dos ser viços. O pont o em com um diz r espeit o à CA em que am bas as ent idades confiam . De posse dessa CA, é dada cont inuidade ao pr ocesso de validação, onde se ver ifica se o cer t ificado é válido. Passos adicionais podem ser necessár ios dependendo do t ipo de cer t ificado. Por exem plo, no caso de cer t ificados de at r ibut os deve- se analisar a quest ão dos papéis que o cert ificado especifica par a o seu propr iet ár io.

Figu r a 5 .5 : Código pa r a e n con t r a r pon t o de con fia n ça m ú t u o.

No t r echo de código da Figur a 5.5 é ilust r ado o fr agm ent o de duas funções ut ilizadas par a encont r ar o pont o de confiança m út uo. Na pr im eir a par t e é r ealizada um a busca em pr ofundidade onde, dado um pont o de or igem , pr ocur am - se t odos os nós ( CA) que com põem a sub- hier ar quia a par t ir da or igem . Com o desej am os saber o pont o em com um ent r e dois pont os, bast a r ecuper ar as sub- hier ar quias de am bos os pont os par a em seguida pr ocur ar por pont os em com um dent r e essas sub- hier ar quias. Caso exist a esse pont o em com um , é ret or nada a CA cor r espondent e a t al pont o em com um . Se o r et or no for difer ent e de nulo, o obj et o que r ecebeu o cer t ificado confia na ent idade em issor a do m esm o, podendo assim ocor r er a validação do cer t ificado.

1 CertificationAuthority ca=getCA(_env,_caName); 2 for(int i=0;i<ca.trt.trustedEntities.size();i++){

3 hierarq.addElement(ca.trt.trustedEntities.elementAt(i));

4 trustedHierachy((String)ca.trt.trustedEntities.elementAt(i),hierarq,_env); 5 }

//Localiza Ponto eh comum

1 for(int i=0;i<caT1.size();i++){

2 if (caT2.indexOf(caT1.elementAt(i))!=-1){

3 return getCA(_env,(String)caT1.elementAt(i)); 4 }

Os cer t ificados de at r ibut os são ext r em am ent e im por t ant es par a at r ibuição de papéis, que definem os aspect os de segur ança em t er m os de per fis.

Figu r a 5 .6 : Adicion a r / r e cu pe r a r a t r ibu t os do ce r t ifica do de a t r ibu t os.

O t r echo de código da Figur a 5.6 ilust r a os m ét odos per t encent es ao cer t ificado de at r ibut os r esponsáveis por adicionar / r ecuper ar at r ibut os no cam po específico par a colocar a list a de par es ( nom e,valor ) .

No pr ocesso de validação de cer t ificados ver ifica- se se o m esm o est á válido ( não expir ado, não r evogado) . No t recho de código da Figur a 5.7 t em os o pr ocesso de validação da assinat ur a da ent idade em issor a. No código est ão os passos necessár ios par a validar a assinat ur a da ent idade em issor a, ut ilizando a chave publica da m esm a. I nicialm ent e é inst anciado um obj et o do t ipo Signat ur e com o algor it m o “ SHA1w it hDSA” . Em seguida, t em início o pr ocesso de ver ificação, passando a chave pública da ent idade em issor a do cert ificado. Na seqüência analisa- se se assinat ur a cont ida no cer t ificado r ealm ent e cor r esponde a assinat ura da ent idade em issor a, par a que, em seguida, o m esm o possa ser validado ou não.

Figu r a 5 .7 : V a lida çã o d a ch a v e pú b lica .

1 public void addAttribute(String attName,Object value){ 2 this.attributes.put(attName,value);

3 }

4 public Object getAttribute(String attName){ 5 return this.attributes.get(attName); 6 }

1 Signature sig = Signature.getInstance("SHA1withDSA", "SUN"); 2 sig.initVerify(pubKey);

3 sig.update(obj.toString().getBytes()); 4 if (!sig.verify(cert.assinatura())) 5 return false;

5 . 3 E s t u d o d e C a s o : S i s t e m a d e C o n t r o l e

B a n c á r i o

Nest a Seção discut ir em os um est udo de caso que dem onst r a as funcionalidades do serviço de cert ificação digit al im plem ent ado na plat aform a CORBA. Nesse est udo de caso são m ost r adas sit uações em que podem os facilm ent e dest acar o uso de r equisit os de segur ança, com r elação à cer t ificação. A aplicação sim ula o funcionam ent o sim plificado de um banco.

Os r equisit os de segur ança, ut ilizados pela aplicação bancár ia são: Cont r ole de Acesso, Aut ent icação e Delegação. O sist em a de Cont role Bancár io pr ovê funcionalidades com o: aber t ur a e encer r am ent o de cont as, oper ações de m ovim ent ação de cont a corr ent e ( saldo/ ext r at o, saque, depósit o e t r ansfer ências) .

O m ódulo AppBancar ia cont ém a im plem ent ação dos obj et os ut ilizados, sendo est es o obj et o de Cont a ( Account ) , Client e ( Client ) e Banco ( Bank) , que est ão r epr esent ados na Figur a 5.8.

A classe Client possui dois at r ibut os par a guar dar nom e e t elefone do client e. Ver em os post er ior m ent e que, ut ilizando cer t ificados de at r ibut os, podem os colocar m ais dados par a o m esm o. A classe Account provê m ét odos par a m anipulação de cont as, r ecuper ação de saldos, r ealização de depósit os e saques, além de r ecuperação de infor m ações sobr e o propr iet ár io da m esm a. A classe Bank ofer ece oper ações par a cr iar novas cont as, ar m azenar as cont as cr iadas, encer r ar cont as e r ealizar t r ansfer ências ent r e as cont as, além de fazer aut ent icação de senha. Essas classes r epr esent am os obj et os CORBA im plem ent ados. Not e que pode haver difer enças ent r e a especificação I DL e o diagr am a de classes. Essas difer enças r efer em - se aos t ipos ut ilizados, pois no diagr am a de classe foi ut ilizado com o base a linguagem j ava, e na int er face, especificam os apenas os ser viços ofer ecidos pelo obj et o. Por t ant o, alguns m ét odos e at r ibut os, específicos da linguagem Java, não est ar ão present es na descr ição I DL. As Figur as 5.9, 5.10 e 5.11 ilust r am as int er faces dos obj et os

pr incipais do sist em a, em confor m idade com a Figur a 5.8.

Figu r a 5 .9 : I n t e r fa ce Clie n t . 1 interface Client{

2 string getName();

3 void setName(in string name); 4 string getTelephone();

5 void setTelephone(in string telephone);

6 Client newClient(in string name,in string telephone); 7 };

Figu r a 5 .1 0 : I n t e r fa ce Ba n k

Figu r a 5 .1 1 : I n t e r fa ce Accou n t

Par a im plem ent ação desse est udo de caso, assim com o par a a im plem ent ação do ser viço de cer t ificação digit al, foi ut ilizada a linguagem Java. A aplicação é com post a por t r ês par t es principais que int er agem com o ser viço de cer t ificação:

x A classe Ser ver , responsável pela inst alação das im plem ent ações dos obj et os que ofer ecem os ser viços descr it os ant er ior m ent e e dão supor t e a r equisição das oper ações;

x A classe Manager , responsável pela cr iação de cer t ificados de ident idade e de at r ibut os, definição de papéis ( nesse est udo de caso o cer t ificado de at r ibut os cont ém infor m ações sobr e o t ipo de client e – especial ou r egular ) , út eis par a confer ir pr ivilégios específicos e ger enciar t ipos de m ovim ent os;

1 interface Bank{

2 Account createAccount(in string password,in Client owner); 3 Account getAccount(in long accNumber,in string password); 4 short transfer(in long id_Source,in string password,in double amount,in long id_Dest); 5 void close(in long accNumber);

6 long getSize(); 7 };

1 interface Account{

2 void deposit(in double amount); 3 void withdraw(in double amount); 4 double balance();

5 string getPassword();

6 void changePassword(in string password); 7 Client getOwner();

8 void setOwner(in Client Owner); 9 void setAccNumber(in long number); 10 long getAccNumber();

x A classe Client que, com base nas configurações especificadas na classe Manager, ut iliza os pr ocessos de validação, aut ent icação e delegação - funcionalidades essas ofer ecidas pelo serviços.

Figu r a 5 .1 2 : I n st a la çã o do se r v iço de ce r t ifica çã o n o se r v idor .

Na classe Server é feit a a inst alação das im plem ent ações no servidor e associação do obj et o no serviço de nom e para facilit ar a localização dos m esm os. Para carregar o serviço, devem os inst alar a sua im plem ent ação. Um a vez inst alada, é possível invocar as funcionalidades do serviço. O t recho de código da Figur a 5.12 ilust r a a inst alação da im plem ent ação do ser viço de cer t ificação. O t r echo de código da Figur a 5.13 ilust r a os passos necessár ios par a inst alar a im plem ent ação do obj et o Account .

Figu r a 5 .1 3 : I n st a la çã o da im ple m e n t a çã o do obj e t o Accou n t

O t r echo de código ilust r ado na Figur a 5.14 m ost r a a im plem ent ação do m ét odo cr eat eAccount da classe Bank, que r ecebe com o par âm et r os a senha e a r efer ência ao obj et o do t ipo Client .

1 COSCertificationServiceImpl certService=new COSCertificationServiceImpl(); 2 certService.setORB(orb);

3 objRef=rootPOA.servant_to_reference(certService); 4 COSCertificationService certServiceRef =

COSCertificationServiceHelper.narrow(objRef); 5 ncRef.rebind(ncRef.to_name(“COSService”),certServiceRef);

1 AccountImpl accImpl=new AccountImpl(); 2 accImpl.setORB(orb);

3 objRef=rootPOA.servant_to_reference(accImpl); 4 Account accountRef=AccountHelper.narrow(objRef); 5 ncRef.rebind(ncRef.to_name("Account"),accountRef);

Figu r a 5 .1 4 : Cr ia çã o de u m a n ov a con t a .

Par a im plem ent ar obj et os CORBA usando o Java, é necessár io const r uir um a classe Ser vant que represent a a im plem ent ação a ser regist rada no ser vidor . Ut ilizando o pr ogr am a idlj , que r ealiza o binding ent r e as linguagens idl e j ava, é ger ado um conj unt o de classes que ser vem de supor t e par a im plem ent ação do obj et o. O obj et o acc, na linha 4, é um ser vant par a o obj et o Account . Par a que sej a possível dist inguir as cont as r egist r adas no ser vidor , cada nova cont a t em um a r efer ência nova que per m it e ut ilizar m os a im plem ent ação cr iada, dist inguindo as cont as. As cont as são arm azenadas em um vet or . A classe abst r at a Account Helper possui um m ét odo nar r ow r esponsável por t r ansfor m ar obj et os da classe or g.om g.CORBA.Obj ect em um a inst ância da classe Account . Essa classe Account Helper foi gerada pelo com pilador idlj .

1 public Account createAccount(String password,Client cliente){ 2 try{

3 POA rootPOA=POAHelper.narrow(orb.resolve_initial_references("RootPOA"));