PT565314E - Metodo para assinar programas itinerantes - Google Patents

Metodo para assinar programas itinerantes Download PDF

Info

Publication number
PT565314E
PT565314E PT93302613T PT93302613T PT565314E PT 565314 E PT565314 E PT 565314E PT 93302613 T PT93302613 T PT 93302613T PT 93302613 T PT93302613 T PT 93302613T PT 565314 E PT565314 E PT 565314E
Authority
PT
Portugal
Prior art keywords
program
digital
data
user
file
Prior art date
Application number
PT93302613T
Other languages
English (en)
Inventor
Addison M Fischer
Original Assignee
Addison M Fischer
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Addison M Fischer filed Critical Addison M Fischer
Publication of PT565314E publication Critical patent/PT565314E/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)
  • Plural Heterocyclic Compounds (AREA)
  • Spinning Or Twisting Of Yarns (AREA)

Description

5653 Γ
DESCRIÇÃO "MÉTODO PARA ASSINAR PROGRAMAS ITINERANTES"
CAMPO DA INVENÇÃO A invenção refere-se a um método e a um aparelho para criar um programa «itinerante», que tem a capacidade de ele próprio se mover em conjunto com dados associados necessários de um utilizador de computador para outro, para desta forma criar uma potente ferramenta para processamento, autenticação e escolha de dados em vários nodos de computador.
ANTECEDENTES E SUMÁRIO DA INVENÇÃO
Numa organização, os documentos são muitas vezes movimentados manualmente. Um serviço postal ou de entrega é muitas vezes empregado quando é necessário que os documentos sejam transmitidos entre organizações. São bem conhecidas técnicas para a transmissão electrónica de documentos dentro de uma organização e entre organizações. 0 rápido crescimento de sistemas de correio electrónico, sistemas de transferência electrónica e outros semelhantes têm servido para automatizar certas transacções comerciais e eliminar algumas transferências manuais de documentos, que são em muitos dos casos desnecessárias.
Uma metodologia da tecnologia anterior para transferir automaticamente informação entre utilizadores (por exemplo dentro de uma organização) utiliza a chamada metodologia «formas electrónicas» (formulários electrónicos). Esta metodologia «formas electrónicas» apresenta dados a um utilizador, solicita a uma entrada de informação do utilizador por meio dum display convencional, verifica que os - 1 - 1 1
L·, dados de entrada foram correctamente introduzidos, e em seguida transmite estes dados a outro utilizador. A metodologia de formas electrónicas é muito limitada em muitos aspectos. Por exemplo, se os dados representam qualquer valor, então haverá sempre o perigo potencial dos dados poderem ser manipulados e alterados ou simplesmente ficticiamente criados. As tentativas para lidar com este perigo envolveram a marcação de certos campos críticos que têm de ser especialmente manuseados. Contudo, não permite que estruturas de dados complexas sejam reunidas e por isso digitalmente assinadas. A publicação «Automatização de Escritórios», conceito e ferramentas, de 1985, Springer Verlag, Berlim, pag. 113-133, num artigo «Sistemas de Mensagens Inteligentes», por J. Hogg, descreve, como exemplo de uma mensagem inteligente como objecto activo, a impressão de perguntas no terminal de um utilizador, reunindo as respostas e processando-as no sentido de pedir informação adicional dos receptores na dependência de um resultado de processamento pré-determinado, de maneira que o referido resultado de processamento determina a forma da mensagem para receptores adicionais.
Este sistema conhecido não proporciona quaisquer medidas de aprovação, verificação da aprovação ou verificação da autorização do lado do terminal do utilizador e do lado do receptor, respectivamente. A patente US 5.040.142 apresenta um sistema de comunicação para fazer circular um documento electrónico entre vários terminais, proporcionando padrões de certificação sequencialmente acrescentados de aprovações de pessoas que revêem individualmente o documento electrónico. Os padrões de certificação são adicionados ao documento transmitido e são mantidos separados do documento, de maneira que podem ser retirados e substituídos por outro padrão de 2 \
t certificação da pessoa revisora seguinte respectiva numa sequência de receptores do documento electrónico transmitido.
Constitui um objecto da invenção um método para criar programas itinerantes de suporte e processamento com uma notável redução do perigo potencial de manipulação ou alteração, ou mesmo inadvertida falsificação no seu caminho, de um utilizador para o outro utilizador ou para outros diferentes utilizadores ou receptores no sistema.
Este objecto de acordo com a invenção é atingido pelas características da reivindicação 1.
Formas de realização vantajosas e novos desenvolvimentos são assunto das reivindicações dependentes da reivindicação 1. A invenção permite que o programa itinerante seja processado de acordo com qualquer algoritmo, qualquer que seja o material digital que deve ser assinado e também conforme a necessidade do material digital ser verificado.
Assim, por exemplo, a invenção permite que os dados reais que são assinados sejam diferentes de qualquer campo de dados. De facto, é possível que o material assinado não contenha qualquer dos dados reais apresentados pelo utilizador.
Um exemplo de um caso especialmente útil é quando o programa itinerante da invenção cria uma transacção TDE (troca de dados electrónicos) baseada em aspectos dos dados introduzidos. O programa tem a capacidade de assinar a transacção TDE. Esta transacção TDE pode bem ser composta de informação digital complexa que tenha sido procurada, baseada nas tabelas internas do programa de outros ficheiros ou do supervisor ou interpretador que conduz o programa itinerante. Assim, em campos de entrada que possam simplesmente ter sido introduzidos como «X»s que escolhidos formam uma tabela, o 3 i t - u verdadeiro material digital que é assinado é inteiramente diferente.
Parte-se do principio que o tipo de assinatura digital acima descrito pode ser aplicado à construção de dados que terão uma vida longa - e talvez ser verificado por diferentes entidades durante um certo período de tempo. No caso de TDE, por exemplo, as assinaturas podem ser ligadas à própria transacção TDE e podem ser verificadas por quaisquer dos futuros receptores da transacção, mesmo fora do contexto do programa itinerante. Este tipo de assinatura digital é análogo a uma assinatura manuscrita que aparece no fundo de uma nota de ordem de compra ou contrato.
Além de ser capaz de assinar dados arbitrários, a invenção também leva o programa a decidir condicionalmente baseado em qualquer critério conhecido quais utilizadores deverão participar no processo de assinatura.
Por exemplo, com a invenção, o programa itinerante pode fazer determinações lógicas dentro do programa, como por exemplo quais as exigências de co-assinatura podem existir para dados específicos, utilizadores ou algumas combinações. Isto pode incluir informação contida num certificado X.500 de um utilizador ou salientar o certificado digital (por exemplo, como vem descrito nas patentes N°s 4.868.877 ou 5.005.200 do inventor). Em virtude de existir uma total flexibilidade programática, esta informação extraída pode mesmo ser usada para regular o futuro caminho de transmissão do programa itinerante.
Além de utilizar assinaturas digitais para simples autenticação, a invenção também que sejam incluídas e verificadas exigências e procedimentos de autoridade. Isto também conduz, por exemplo, às conclusões de 4.868.877 e 5.005.200 para controlar a prova e delegação de autoridade. 4
t
Por outro lado, a invenção também permite o uso de assinaturas digitais para levar o programa itinerante a proporcionar outros tipos de autenticação válida. Por exemplo, por motivos de segurança, a invenção permite a autenticação por assinatura digital de toda a transmissão de um utilizador* para outro. Isto inclui o próprio programa itinerante, as suas variáveis e quaisquer dados ou ficheiros auxiliares.
Este segundo tipo de autenticação digital difere da autenticação orientada para dados, acima descrita, em parte por possuir significado de longo prazo - uma vez que as variáveis e os outros dados que são transmitidos podem ser alterados, desde que o utilizador receptor não tenha realizado qualquer acçâo. Este segundo tipo de autenticação é portanto primariamente visto como uma protecção contra a falsificação e pode também ser usado em actividades forenses como suporte de auditoria para detectar intervenções não autorizadas, mesmo por um dos verdadeiros utilizadores da forma.
Além disso, a invenção também proporciona um terceiro tipo de autenticação, pelo que o próprio programa itinerante pode ser assinado, autenticado e autorizado por qualquer autoridade emissora acreditada (por exemplo, talvez, o autor), para assegurar que não foram introduzidos, nem bugs (defeitos), nem «vírus». (Isto protege mesmo contra a infecção por um utilizador que tenha posse válida do programa ao longo do seu caminho). A invenção proporciona um mecanismo único para recolha automática de dados entre um grupo de utilizadores. 0 programa itinerante pode ser enviado a um utilizador, anexar (ou desanexar) ficheiros de dados relevantes e deslocar-se para o utilizador seguinte. Dados ou ficheiros recolhidos de um ou mais utilizadores podem ser depositados noutro utilizador ou acumulados para processamento em lotes, se se 5 L· desejar. Esta metodologia elimina a necessidade de utilizadores individuais serem considerados na transmissão de todos os dados exigidos no formato desejado. Ά invenção também efectua com eficiência a troca de documentos electrónicos (TDE) no contexto de um programa itinerante que é enviado, ele próprio, de um utilizador para o seguinte dentro de uma organização, recolhendo, editando e aprovando dados. No ponto apropriado, como determinado pela lógica do programa, fica em condições de programaticamente gerar uma transacção normalizada TDE (por exemplo, o conjunto da transacção Ordem de Compra X12 850) para transmissão para outra organização. O programa itinerante está em condições de assinar digitalmente o conjunto de transacção concluído. De acordo com isto, qualquer organização receptora, que possa processar a TDE normalizada e a assinatura normalizada, estará em condições de autenticar e processar o material recebido, mesmo que a organização receptora não possua as poderosas técnicas disponíveis, que são apresentadas pela invenção.
Inversamente, a invenção permite a um programa itinerante receber transacções TDE vulgares, possivelmente assinadas, e permite que sejam analisadas e introduzidas nas suas variáveis. O programa itinerante tem então a capacidade de validar a entrada e introduzi-la nos dispositivos de apresentação e deslocá-la entre os vários receptores, se for necessário.
De acordo com um primeiro aspecto da invenção, é proporcionado num sistema de comunicações com vários computadores acoplados a um canal, por meio do qual os computadores podem trocar mensagens, um método de processamento de informação entre os referidos computadores, que compreende os passos de: a utilização de um primeiro computador com uma sequência de instruções de programação, que são executadas por um primeiro computador, incluindo 6 instruções que determinam pelo menos um destino seguinte, que poderá receber o conjunto de instruções, incluindo o referido conjunto de instruções instruções para transmitir as referidas instruções em conjunto com os dados anexos ao referido destino seguinte; o processamento por computador de um valor digital, cujo conteúdo é baseado em decisões e manipulações lógicas executadas pelo referido programa; e concretização de uma assinatura digital no referido valor digital em pelo menos um destino.
De acordo com um segundo aspecto da invenção, é proporcionado num sistema de comunicações tendo uma série de computadores acoplados a um canal, através do qual os computadores podem trocar mensagens, um método de processamento de informação entre os referidos computadores, que compreende os passos de: a provisão de um primeiro computador com uma sequência de instruções, que são executadas pelo primeiro computador, incluindo instruções que determinam pelo menos um destino seguinte, que pode receber o conjunto de instruções, incluindo o referido conjunto de instruções para transmitir as referidas instruções em conjunto com dados anexos ao referido destino seguinte; a obtenção de dados dos utilizadores de pelo menos um dos referidos computadores através da execução das referidas instruções; a transferência dos referidos dados através da execução das referidas instruções para uma estrutura de dados especializada, que se conforme, pelo menos em parte, com uma norma reconhecida, pelo que a referida estrutura de dados é útil, independentemente das referidas instruções; e assinando digitalmente a referida estrutura de dados através da execução das referidas instruções.
De acordo com um terceiro aspecto da invenção, é proporcionado num sistema de comunicações com vários computadores acoplados a um canal, por meio do qual os computadores podem trocar mensagens, um método para processamento de informação entre os referidos computadores,
compreendendo os passos de: a provisão de um computador com um primeiro programa itinerante, compreendendo uma sequência de instruções, que determinam pelo menos um destino seguinte, que poderá receber o conjunto de instruções, incluindo o referido conjunto de instruções para transmitir as referidas instruções em conjunto com os dados anexos para o referido destino seguinte; a provisão de pelo menos um dos referidos computadores com um segundo programa itinerante; a execução do segundo programa itinerante sob direcção do primeiro programa itinerante.
De acordo com um quarto aspecto da invenção, é proporcionado num sistema de comunicações, tendo vários computadores acoplados a um canal, por meio do qual os computadores podem trocar mensagens, um método para processamento de informação entre os referidos computadores, que compreende os passos de: a provisão de um computador com um primeiro caso de programa itinerante, que compreende uma sequência de instruções que são executadas pelo computador, incluindo instruções que determinam pelo menos um destino seguinte que poderá receber o conjunto de instruções, incluindo o referido conjunto de instruções para transmitir as referidas instruções em conjunto com dados anexos para o referido destino seguinte; a provisão de pelo menos um dos referidos computadores com um segundo caso de programa itinerante; execução do processamento do segundo programa itinerante sob a direcção das instruções do primeiro programa itinerante.
De acordo com um quinto aspecto da invenção, é proporcionado num sistema de comunicações tendo vários computadores acoplados a um canal, por meio do qual os computadores podem trocar mensagens, um método para processamento de informação entre os referidos computadores, que compreende os passos de: a provisão de um primeiro computador com uma sequência de instruções, que são executadas pelo primeiro computador e que inclui instruções 8 Γ que determinam pelo menos um destino seguinte, que poderá receber o conjunto de instruções, incluindo o referido conjunto de instruções para transmitir as referidas instruções em conjunto com dados anexos ao referido destino seguinte; e a escolha de um ficheiro em resposta à execução da referida sequência de instruções; a transmissão, pelo menos em parte, do conteúdo do referido ficheiro de dados escolhido para o referido destino seguinte em resposta à execução da referida sequência de instruções.
De acordo com um sexto aspecto da invenção, é proporcionado num sistema de comunicações com vários computadores acoplados a um canal, por meio do qual podem trocar mensagens, um método para fazer seguir a informação no referido sistema de comunicações, compreendendo os passos de: a provisão de um primeiro computador com um conjunto de instruções que são executadas pelo primeiro computador, incluído instruções que geram vários casos do referido conjunto de instruções e que inicia a transmissão para pelo menos um primeiro e segundo destinos que, respectívamente, recebem um dos referidos casos em conjunto com dados anexos; e a inclusão nestes casos transmitidos para os referidos primeiro e segundo destinos da capacidade de subsequentemente reunir dados que foram sucessivamente acumulados durante os seus diferentes percursos de transmissão.
De acordo com um sétimo aspecto da invenção, é proporcionado num sistema de comunicações com vários computadores acoplados a um canal, por meio do qual podem trocar mensagens, um método para processamento de informação entre os referidos computadores, que compreende os passos de: a provisão de um primeiro computador com uma sequência de instruções de programação que são executadas pelo primeiro computador, incluindo instruções que determinam pelo menos um destino seguinte, que deverá receber o conjunto de instruções, incluindo o referido conjunto de instruções para transmitir as referidas instruções em conjunto com os dados 9 L u anexos para o referido destino seguinte; e a qualificação do conjunto de operações, que à referida sequência de instruções é permitido realizar.
De acordo com um oitavo aspecto da invenção, é proporcionado num sistema de comunicações com vários computadores acoplados a um canal, por meio do qual os computadores podem trocar mensagens, um método para processamento de informação entre os referidos computadores, compreendendo os passos de: a provisão de um primeiro computador com uma sequência de instruções de programa, os quais são executados pelo primeiro computador, incluindo instruções que determinam pelo menos um destino seguinte, que deverá receber o conjunto de instruções, incluindo o referido conjunto de instruções as instruções para transmitir as referidas instruções em conjunto com dados anexos ao referido destino seguinte; e a execução de uma assinatura digital, usando uma chave privada armazenada num dispositivo indicador do utilizador.
De acordo com um nono aspecto da invenção, é proporcionado num sistema de comunicações tendo vários computadores acoplados a um canal, através do qual os computadores podem trocar mensagens, um método para processamento de informação entre os referidos computadores, que compreende os passos de: a provisão de um primeiro computador com uma sequência de instruções de programa que são executadas pelo primeiro computador, incluindo instruções que determinam pelo menos um destino seguinte, que deverá receber o conjunto de instruções, incluindo o referido conjunto de instruções as instruções para a transmissão das referidas instruções em conjunto com dados anexos ao referido destino seguinte; e a concretização de uma autenticação data/hora.
De acordo com um décimo aspecto da invenção, é proporcionado num sistema de comunicações com vários 10
computadores acoplados a um canal, através do qual os computadores podem trocar mensagens, um método de processamento de informação entre os referidos computadores, compreendendo os passos de: a provisão de um primeiro computador com uma sequência de instruções de programa que são executadas pelo primeiro computador, incluindo instruções que determinam pelo menos um destino seguinte, que deverá receber o conjunto de instruções, incluindo o referido conjunto de instruções para transmissão das referidas instruções em conjunto com os dados anexos ao referido destino seguinte; e a execução de uma função tempo de espera (retardamento).
BREVE DESCRIÇÃO DOS DESENHOS
Estas, bem como outras caracteristicas da invenção serão melhor apreciadas pela leitura da descrição que se segue de uma forma de realização preferida da invenção, dada a titulo de exemplo, quando em conjunto com os desenhos anexos, dos quais: A figura 1 é um diagrama de blocos de um sistema de comunicações de acordo com uma forma de realização da invenção, apresentada a titulo de exemplo; A figura 2 mostra uma estrutura de um programa itinerante, dado a titulo de exemplo, em conjunto com os seus componentes associados; A figura 3 mostra a execução de uma área de controlo de uma estrutura de dados, dada a titulo de exemplo; A figura 4 mostra a estrutura de dados de um bloco de controlo de um ficheiro (BCF), que é usada quando um programa itinerante anexa ou desanexa de si próprio ficheiros; A figura 5 mostra um bloco de controlo de um processo, que é utilizado na execução de um programa itinerante; 11
u A figura 6 apresenta um bloco de controlo de variável de uma estrutura de dados (BCV) , que é usado para controlo de variáveis; A figura 7 mostra um dispositivo para carregar um programa itinerante, dado a título de exemplo; A figura 8 mostra como o cabeçalho é carregado; A figura 9 mostra como o segmento «programa» do programa itinerante é carregado; A figura 10 mostra como o segmento «variáveis» do programa itinerante é carregado; A figura 11 mostra como o segmento «certificar» do programa itinerante é carregado; A figura 12 mostra como o segmento «ficheiro» do programa itinerante é carregado; A figura 13 faz o delineamento de como o segmento «fecho» do programa itinerante é carregado; A figura 14 representa as operações levadas a cabo no processamento de código-P; A figura 15 mostra o processamento que se realiza após a operação de código-P ser concretizada;
As figuras 16A e 16B mostram o processamento para lidar com funções ou chamadas definidas no programa; A figura 17 mostra a sequência de operações para lidar com funções integradas (built-in);
As figuras 18 e 19 traçam a sequência das operações realizadas para a execução de funções ou chamadas exteriores; 12 Γ
As figuras 20 e 21 traçam as operações que são realizadas quando o programa itinerante é enviado ele próprio a um pré-determinado receptor; A figura 22 traça a sequência de operações para anexação (attaching) um ficheiro ao programa itinerante; A figura 23 mostra como um ficheiro pode ser apagado de um sistema de um utilizador; A figura 24 mostra a sequência de operações realizada na desanexaçâo (detaching) de um ficheiro de um programa itinerante; A figura 25 traça a sequência de operações realizada quando um ficheiro tiver sido transformado num ficheiro do utilizador; A figura 26 traça a sequência de operações executadas quando o material deve ser digitalmente assinado; A figura 27 traça a sequência de operações executada por uma função «INTER-ROLLOUT» (conducente à assinatura); A figura 28 mostra a sequência de operações realizada quando da apresentação da informação ao utilizador; A figura 29 traça a sequência de operações realizada pela rotina «tempo de espera»; A figura 30 mostra a sequência de operações para uma função «escolher de uma lista» (select from directory); A figura 31 é uma rotina que demonstra como o programa interpretador permite a um utilizador efectivar assinaturas digitais; A figura 32 exemplifica como um utilizador verifica a informação recebida; 13 A fiqura 33 mostra como um programa itinerante escolhe um ficheiro para ser transferido; A figura 34 mostra as operações do programa itinerante realizadas na leitura de dados a partir de um determinado ficheiro; A figura 35 mostra como o programa itinerante pode actualizar ou criar um ficheiro a partir de variáveis de programa; A figura 36 mostra como um programa itinerante pode ser desenhado para ser dividido e enviar programas a vários receptores diferentes; A figura 37 demonstra como programas previamente divididos podem ser de novo reunidos; A figura 38 mostra uma proposta alternativa à reunião de informação de programas itinerantes anteriormente divididos; A figura 39 é um fluxograma indicando como foi desenhado o programa itinerante para receber as funções de geração de trocas de documentos electrónicas; e A figura 40 refere-se ao uso do programa itinerante para receber uma transacção de troca de dados electrónica.
DESCRIÇÃO PORMENORIZADA DA FORMA DE REALIZAÇÃO PREFERIDA A figura 1 mostra um diagrama de blocos que apresenta um sistema de comunicações, dado a titulo de exemplo, que pode ser usado em conjunto com a invenção. Este sistema inclui um canal de comunicação 12, através do qual as comunicações entre terminais A, B, ... N podem ter lugar, o canal de comunicação 12 pode, por exemplo, ser um canal de comunicações não seguro, por exemplo, uma linha telefónica.
Os terminais A, B, ... N podem e apenas a titulo de exemplo ser computadores IBM PC compatíveis, tendo um - 14 - processador (com uma memória principal), que é acoplado a um visor de um teclado/monitor CRT 4 convencional. 0 processador com a memória principal 2 é também acoplado a uma memória não volátil, que pode ser uma memória de disco. Cada terminal A, B, ... N também inclui uma placa de comunicações convencional IBM PC (não representada), a qual quando acoplada a um modem convencional 6, 8, 10, respectivamente, permite a um terminal transmitir e receber mensagens, incluindo programas itinerantes.
Como aqui é usada, a designação «programa itinerante» (travelling program) é uma estrutura de dados digitais que inclui uma sequência de instruções e de dados associados e que tem a capacidade de determinar pelo menos um destino ou receptor seguinte para receber o programa itinerante e para se transmitir a si mesmo em conjunto com todos os dados relevantes determinados pelo programa, ao receptor ou destino seguinte.
Cada terminal é capaz de gerar uma mensagem e concretizar quaisquer operações de assinatura digital que podem ser exigidas para carregar e executar a lógica, os dados e as funções inerentes no programa itinerante (como aqui é descrito em mais pormenor), e transmitir a mensagem a outros terminais ligados ao canal de comunicações 12 (ou a uma rede de comunicações (não representada) que pode ser ligada ao canal de comunicações 12). A metodologia da assinatura e da certificação digitais, descrita nas patentes US N°s 4.868.877 e 5.005.200 e também 5.001.752, do inventor, pode aqui ser usada, patentes que são aqui expressamente incluídas como referência. Em alternativa, pode ser utilizada uma metodologia de assinatura digital mais convencional.
Antes de descrever os pormenores da estrutura e metodologia do «programa itinerante» de acordo com uma forma de realização da invenção, será descrito resumidamente um - 15 - exemplo de operação qeral no contexto de transacções comerciais reais. Inicialmente, presume-se que o utilizador da figura 1 no terminal A é um técnico de nivel relativamente baixo que faz parte da equipa de projecto numa companhia, procurando obter partes componentes para completar um projecto do desenho de circuito. 0 técnico que usar o teclado 4 deverá ter acesso à requisição de partes do «programa itinerante» do tipo da que vai ser descrita em pormenor a seguir. A requisição de «programa itinerante» requer ao técnico a descrição das partes componentes necessárias. 0 programa itinerante inclui uma sequência de instruções que transmitirão automaticamente o próprio programa a um destino seguinte, isto é, a um supervisor que tem acesso ao terminal B e que está mais elevado na estrutura organizacional e possui a autoridade para aprovar a requisição necessária e a assina digitalmente. 0 programa itinerante pode também transmitir informação auxiliar, por exemplo ficheiros, que podem ser necessários ou úteis nos destinos seguintes. 0 supervisor será requisitado para assinar digitalmente de maneira apropriada o pedido. É possível que a assinatura digital reflicta não só valores específicos de variáveis, mas também os nomes das variáveis. Em alternativa, a assinatura poderá também reflectir alguma estrutura agregada, que é derivada de variáveis processadas no programa, em que os valores podem ser baseados em uma de várias fontes, incluindo dados obtidos do ficheiro, entradas do utilizador, dados integrados no próprio programa, vários certificados de signatários, ou dados que são extraídos do ambiente do utilizador (por exemplo IDs do utilizador), etc.
Se o pedido é aprovado, o formulário de requisição seguirá um percurso diferente na organização do que se não for aprovado. 0 programa itinerante pode ter inteligência para determinar, baseado na entrada do supervisor no terminal de operação B, para onde se transmitir a si mesmo dentro da organização. O programa itinerante poderá também, se for 16 necessário, carregar a memória associada ao terminal B com dados apropriados relativos à requisição e anexar, se for caso disso, quaisquer ficheiros do terminal B que necessitem de ser enviados para qualquer ponto na organização.
Uma vez feita a assinatura, o programa itinerante tem a capacidade, em qualquer altura posterior e para qualquer utilizador posterior, por qualquer razão, de voltar a processar qualquer material a ser verificado e de levar a cabo uma verificação da assinatura digital.
Os resultados desta verificação podem ser anunciados a qualquer receptor, ou mais provavelmente, o programa itinerante pode apenas executar a verificação e anunciar um problema se houver uma falha (o que sugere uma tentativa de falsificação de dados).
Em virtude do monitor do programa itinerante poder incluir as recomendações de 4.868.877 e de 5.005.200, é possível também verificar a autorização, de maneira que qualquer receptor possa ter a certeza que foram concedidas as necessárias autorizações.
Após ter sido construída uma estrutura de dados específica e assinada sob o controlo do programa itinerante, é possível reconstruir subsequentemente a estrutura de dados e proporcionar a sua assinatura a qualquer outra entidade. Estes dados não podem ser subsequentemente falsificados por qualquer entidade.
Contudo, a invenção também inclui a capacidade de todos os dados transmitidos serem digitalmente assinados quando são enviados de um utilizador para o seguinte. O processador do programa itinerante no computador receptor pode automaticamente verificar esta assinatura, quando o programa itinerante está a ser carregado. Isto assegura que nenhum componente, qualquer que ele seja, possa ser alterado ou falsificado ao longo do percurso. Enquanto esta assinatura 17
geral apenas reflecte o estado dos dados durante esta transmissão particular e não tem significado para utilizadores posteriores, ela assegura uma transmissão perfeita e não falsificada por terceiras pessoas e também proporciona um mecanismo de auditoria forense, se for necessário seguir o rasto de falsificações encobertas peloo utilizadores participantes, embora estes utilizadores sejam possuidores do formulário. Esta assinatura geral difere das capacidades correntes pelas quais o correio electrónico é assinado, por a assinatura poder ser condicionalmente induzida pelo próprio programa itinerante, como parte do processo de transmissão.
Finalmente, após terem sido obtidas todas as aprovações dentro da estrutura organizacional, o programa itinerante criará uma real Ordem de Compra.
Isto pode ser feito de várias maneiras. Pode também ser possível ao programa itinerante incluir vários métodos, escolhendo o mais apropriado para uma determinada circunstância. Descrevemos aqui quatro possibilidades: 1. 0 programa itinerante pode simplesmente imprimir a ordem de compra final em papel — possivelmente mesmo imprimindo o logotipo da companhia, o cabeçalho, etc. — que poderá ser fisicamente enviada pelo correio. 2. 0 programa itinerante, se estiver acoplado a uma saída de computador para fax, poderá automaticamente gerar uma imagem da ordem de compra que poderá aparecer no fax do vendedor. 0 comprador não terá de utilizar papel. 3. Se se souber que o vendedor também suporta a metodologia do programa itinerante da invenção, então é possível que o programa itinerante apenas designe o vendedor como um destino seguinte. 18 i L-C/ t 4. É também muito possível que o vendedor não utilize a invenção ou que o programa itinerante do comprador não possa determinar com segurança que o vendedor está em condições de lidar com a metodologia do programa itinerante.
Portanto, o programa itinerante manipula os seus dados internos para construir uma transacção normalizada TDE (Troca de Dados Electrónica - Electronic Data Interchange), a qual pode ser largamente reconhecida e processada. 0 programa itinerante poderá também fazer com que a assinatura digital seja concretizada na transacção TDE do computador, e a assinatura e a transacção podem ambas ser transmitidas. 0 programa itinerante poderá então transmitir a transacção TDE, bem como qualquer assinatura possível ao receptor. (Esta transmissão é independente de e não deverá ser confundida com a transmissão do programa itinerante e do seu conjunto de utilizador para utilizador, como parte dos seus percursos dirigidos).
Qualquer receptor que possa lidar com transacções normalizadas TDE está portanto em condições de receber as entradas TDE. Qualquer receptor que possa lidar com assinaturas digitais é também capaz de autenticar a transacção. Além disso, desde que o receptor tenha capacidade de software suficiente para as reconhecer, o receptor pode também validar automaticamente qualquer autorização que possa ser incluída como parte da assinatura. Depende da lógica do programa itinerante a extensão em que os certificados devem ser transmitidos em conjunto com uma transacção assinada.
Em qualquer dos casos atrás referidos, o programa itinerante pode movimentar a informação da ordem de compra (O.C.), para o vendedor, usando qualquer dos níveis possíveis de automatização. A seguir a isto, o programa itinerante deverá transmitir uma sua versão, ou possivelmente, apenas uma carta, de volta para quem lhe deu origem, para o informar que a O.C. foi enviada. Pode ser enviada outra informação 19 L— para um arquivo ou para uma fila de espera para esperar processamento posterior. Esta informação poderá ser uma simples mensagem, um registo acrescentado a um ficheiro ou talvez o programa itinerante organize uma travessia completa («correio automático» ou transmissão). A figura 2 representa a estrutura de um programa itinerante com os seus componentes associados de acordo com uma forma de realização da invenção, dada a titulo de exemplo. 0 programa itinerante da figura 2 inclui pelo menos os seguintes segmentos multi-campos. Um primeiro segmento de cabeçalho 20 identifica de preferência a dimensão de cada um dos segmentos componentes, o nome do programa associado (e possivelmente outros segmentos a seguir descritos), a data, o tipo de cada componente (por exemplo, o programa é a origem de programa de linguagem, ou o programa é um código-P que tenha já sido compilado), a identidade da forma, a versão do intérprete necessária para o executar, a data necessária para retomar a execução no ponto apropriado do recomeço do programa (tal como, a formação de conjuntos, BCPs, etc.), datas associadas com a última travessia e informação de autorização de programa (IAP). Cada segmento da estrutura do programa itinerante pode incluir a sua própria descrição, de tal maneira que o campo «S» do «tipo de cada componente e dimensão» não seja incluído no segmento 20 do cabeçalho.
Para os fins deste pedido de patente, a informação de autorização de programa (IAP) pode ser olhada como informação de segurança que define o grupo de operações que são permitidas ao programa associado (por exemplo, definição do acesso aos ficheiros, a capacidade para chamar programas, a capacidade para produzir correio electrónico, a capacidade para transmitir dados a outros utilizadores, a capacidade para libertar documentos, a capacidade para executar programas em linguagem de máquinas, a capacidade para ter acesso a áreas especiais de memória, a capacidade para apresentar a informação aos utilizadores, a capacidade para 20
v i . ί ί ' l! solicitar assinaturas digitais, a capacidade para ter acesso a dispositivos públicos notariais digitais, etc.). Outros pormenores referentes à natureza e uso da informação sobre autorização de programas podem ser encontrados no documento US 5.412.717, intitulado «Método e Aparelho para Sistema de Computadores, que Usa a Informação dc Autorização de Programas (Atty Dkt. 264-29). 0 segmento do cabeçalho 20 pode também incluir um número da versão do programa itinerante associado. 0 código 22 do segmento do programa itinerante segue o cabeçalho na forma de realização, dada a titulo de exemplo, e de preferência está escrito na linguagem de programação da execução exterior reestruturada (por exemplo, a linguagem REXX) ou qualquer programa idêntico a PASCAL ou COBOL. O próprio programa pode, por exemplo, referir-se a uma aplicação relacionada com ordem de compra. 0 programa itinerante deverá possuir as características acima descritas, incluindo a capacidade de se transmitir aos receptores seguintes. Assim, o programa 22 incluirá instruções para ele próprio ser transmitido por meio de qualquer meio que esteja disponível para um ou mais receptores, sendo isto reconhecido aqui como uma «transversal». Uma instrução sobre uma fonte de códigos ou várias instruções de código-P podem ser pedidas para ter como resultado uma «transversal» do programa itinerante para um ou mais receptores identificados. A estrutura do programa itinerante apresentada na figura 2 é concebida para ser independente de qualquer arquitectura de computador particular e é estruturada de acordo com normas internacionais (por exemplo, formato X.209). O programa itinerante inclui também um «segmento variáveis» 24. Antes de ser executado por um primeiro utilizador, o segmento 24 pode estar virtualmente vazio. Uma vez enviado o programa a um receptor, tornar-se-ão definidas 21 f i_____ ....._.C\ \l ' outras variáveis, quando são pedidas pelo programa para daí resultar um número de variáveis aumentado à medida que o programa é executado. A titulo de exemplo apenas, a secção variável 24 pode identificar uma variável, tal como «total.dólares.recebidos» em conjunto com um valor de dados real desta variável.
Cada variável pode ter com ela associada a informação transmitida em cada um dos campos 32-42, apresentados na figura 2. 0 campo 32 identifica a dimensão do nome variável. 0 próprio nome variável é armazenado no campo 34. A dimensão do valor da variável é apresentado no campo 36. O valor da variável está no campo 38. O campo 40 identifica o nível de execução conjunta, ao qual a variável pertence. 0 nível de execução conjunta é identificado desde que o mesmo número variável possa existir a níveis diferentes dentro do programa (ou seja, um nome variável pode existir numa primeira sub-rotina, enquanto o mesmo nome variável pode existir numa sub-rotina separada ou incluída e ainda ter uma definição diferente). 0 nível de execução conjunta é útil na reconstrução do programa itinerante num computador do receptor para aceitar a mesma estrutura lógica que teve no computador do emissor. 0 campo 42 é um campo opcional, que pode identificar um tipo de variável, por exemplo, fiadas, octetos, totais, etc. A secção «variáveis» 24 pode também incluir uma assinatura digital das variáveis e informação relativa respectivas. Assim, é também possível, por meio de uma ou mais variáveis, considerar assinaturas digitais que tenham sido tomadas em várias alturas durante o percurso de execução dos programas itinerantes. Um dos aspectos significativos da invenção é que o programa itinerante pode criar uma assinatura digital em qualquer tipo de informação. Esta assinatura é ela própria conduzida como uma variável. Para verificar a assinatura é necessário que o programa indique (ou, possivelmente, volte a processar) o valor exacto que foi 22
assinado, e depois passá-lo era conjunto com o valor da assinatura (também indicado por uma variável) para a função «verificar assinatura» do programa itinerante. Pela inclusão de uma assinatura digital de variáveis, um receptor poderá ser capaz de verificar que os dados 1) não tenham sido falsificados, 2) tenham sido validamcnte assinados e 3) o signatário seja autorizado apropriadamente. Ver a patente US N°5.005.200, que descreve um mecanismo preferido para associar a autoridade com uma assinatura digital.
Um segmento 26 está representado na figura 2 para incluir opcionalmente, com o programa itinerante, certificados associados a qualquer assinatura digital, de maneira que qualquer assinatura possa ser verificada por um receptor, como vem descrito, por exemplo, na patente US N°5.005.200, acima identifiçada. Em alternativa, os certificados poderão ser incluídos na secção «variáveis» em conjunto com as assinaturas digitais.
Os segmentos 28A-28N contêm imagens de ficheiros, que são gravadas e marcadas pelo nome para permitir ao programa itinerante anexar e guardar um ficheiro pertencente a um utilizador de um programa itinerante. Em seguida, o ficheiro do utilizador pode ser transmitido com outros ficheiros de utilizadores anteriores com o programa itinerante. O nome do ficheiro facilita o acesso posterior ao ficheiro por um utilizador e permite que o utilizador do programa itinerante identifique qualquer ficheiro que se destine, por exemplo, a ser mais tarde transmitido, ou que se destine a ser depositado com um utilizador particular em circunstâncias particulares. O programa itinerante também inclui um «segmento fecho» 30, o qual inclui, por exemplo, a assinatura digital de toda a estrutura itinerante, de maneira que o receptor pode verificar que a transmissão de toda a estrutura itinerante não foi falsificada desde a sua última transmissão. 23 I—'-"''Ό
Tendo descrito a estrutura de dados do proqrama itinerante, vamos agora descrever as estruturas de dados utilizadas durante a execução de um programa itinerante e do software associado para executar o programa itinerante. Uma estrutura de dados de uma área de controlo de execução (ACE) é apresentada na figura 3. A ACE especifica a informação exigida pelo programa que executa o programa itinerante, desde que o programa itinerante tenha sido recebido por um receptor e compilado em código-P (a menos que tenha sido originalmente transmitido em código-P).
Como se mostra na figura 3, o segmento ACE 82 identifica o endereço e a dimensão do programa, quando ele aparece no ficheiro de entrada. Deve reconhecer-se que através desta descrição, qualquer que seja o segmento estabelecido como armazenando um «endereço» ou «localização», os dados podem ser um endereço físico ou lógico e não necessitam obrigatoriamente de especificar directamente uma real localização de memória física. 0 programa pode ser recebido numa fonte ou código-P e pode ser mantida uma indicação conforme for o caso. A área de controlo de execução inclui um segmento 84, que é indicativo do endereço da versão código-P do programa e da sua dimensão. O endereço bloco (ou indicador de endereço) do bloco de controlo do programa corrente é identificado no segmento 86. A localização da lista dos blocos de controlo de ficheiros (BCF), que é usada, por exemplo, para anexar e desanexar ficheiros associados ao programa itinerante, é apresentada no segmento 88. O endereço da área de controlo de certificados (ACC) que é usada para controlar certificados que estão anexos ao programa itinerante é apresentada no segmento 90. A localização da tabela da informação variável (TIV) é apresentada no segmento 92, que controla e mantém variáveis na forma de uma «árvore-B», que é uma estrutura de árvore binária hierárquica, que identifica a localização de cada «variável» de programa. 24
V -f A área de controlo de execução inclui também um segmento 94 de informação de segurança, que pode ser usado para verificar a autenticidade e a autoridade implícitas no programa itinerante. 0 segmento 96 define o nome do ficheiro que contém o programa itinerante de entrada que possa haver necessidade de atingir. O segmento 98 mantém registo do número de vezes que o programa foi por ele próprio enviado pelo correio ao longo do caminho de entrada. A área de controlo de execução também inclui uma secção 100 de parâmetros de entrada, pelo qual os parâmetros relacionados com a execução do programa podem ser identificados. O segmento 102 da área de controlo de execução identifica a informação do cabeçalho de entrada recebida do ficheiro do programa itinerante, de maneira que a informação do cabeçalho ficará disponível. A figura 4 mostra a estrutura de dados de um bloco de controlo de ficheiro (BCF), que é usado quando um programa itinerante anexa ou desanexa ficheiros a si próprio. 0 bloco de controlo de ficheiros inclui um campo marcado 116, o qual identifica uma marca de referência de um determinado ficheiro a ser anexado ou desanexado num sistema de um utilizador particular. O bloco de controlo de ficheiros também inclui um segmento 110, que é um indicador para o bloco de controlo de ficheiros seguinte. 0 bloco de controlo de ficheiros também inclui um segmento de situação 112, que define várias condições, tais como, se o ficheiro associado acabou de ser anexado pelo programa itinerante recebido; se o ficheiro pode ser desanexado na transversal seguinte (ou seja, no envio total seguinte); se o ficheiro foi exportado (ou seja, a imagem de ficheiro associado tenha já sido carregada num ficheiro de utilizador diferente); e um indicador do «tipo de ficheiro» , por exemplo, se o ficheiro é orientado pela corrente ou pela gravação. Podem ser definidos neste campo outros atributos do ficheiro. 25
ίΐ
I \! Ο segmento 114 quarda uma indicação relativa à posição do ficheiro dentro do ficheiro do programa itinerante principal de entrada, de maneira que o ficheiro particular em questão possa ficar acessível rapidamente. 0 segmento 118 identifica o nome local do ficheiro (ou seja, o nome do ficheiro identificado pelo receptor mais recente do programa itinerante) . 0 nome local do ficheiro existe normalmente se o ficheiro foi anexado e estiver para ser enviado a um novo receptor ou se um ficheiro já anexado está a ser «exportado», isto é, guardado localmente por um determinado utilizador. Além disso, como se mostra na figura 4, o BCF pode conter uma divisão do ficheiro associado. Como será apreciado pelos especialistas na arte, uma divisão é uma função de «sentido único», que deverá ser facilmente tratada em computador de acordo com os dados sublinhados. A função divisão poderá ser impossível de tratar em computador em virtude do valor da divisão determinar tanto os dados sublinhados como criar quaisquer dados que tenham o valor especifico da sua divisão. Para todos os fins práticos, o valor obtido da aplicação de uma função de divisão à agregação original dos dados é uma impressão digital única não forjável dos dados originais. Se os dados originais são alterados de qualquer maneira, a divisão destes dados modificados será diferente. A figura 5 mostra um bloco de controlo de programas, dado a título de exemplo, que pode ser usado durante a execução do programa itinerante. Um bloco de controlo de programas mantém traço da informação de controlo respeitante ao programa em curso num contexto de programação estruturada, em que uma rotina chama outra rotina, tendo cada rotina um bloco de controlo de programas associado. 0 segmento 50 do bloco de controlo de programas aponta para o bloco de controlo de programas anterior no controlo da execução em grupo do programa. O bloco de controlo de programas inclui um segmento 52, que define a posição de código-P seguinte a ser executada no programa de execução 26 - L·
M corrente e o seqmento 54 define o tipo da última operação de código-P realizada. 0 segmento 56 inclui uma indicação para uma expressão de avaliação em grupo que é usada durante a avaliação da expressão. A execução em grupo é tipicamente distinta do programa em grupo, pelo facto da execução ser usada para avaliar expresoõea c não ter o percurso do estado interno. O segmento 58 define o nivel desse programa em grupo e o segmento 60 define um indicador para uma lista de variáveis partilhadas. Em linguagem REXX, uma indicação «exposta» pode ser usada para ter acesso a variáveis partilhadas. A figura 6 apresenta uma estrutura de dados do bloco de controlo de variáveis (BCV), que é usado para controlo de variáveis. 0 segmento 62 identifica onde fica localizada uma variável na árvore-B e pode conter vários ponteiros. 0 segmento 64 identifica a dimensão do valor da variável e o segmento 66 identifica um ponteiro onde o valor está localizado na memória. O segmento 68 pode ser opcionalmente usado para identificar o tipo de variável. O segmento 70 identifica a que nivel do programa itinerante a variável está associada, de maneira que, após o programa ser executado, qualquer variável local que estava associada com o programa possa ser facilmente apagada. Os segmentos 76 e 80 identificam a dimensão do nome da variável e do nome, respectivamente.
Voltamos agora à representação da execução do programa itinerante. A sequência de operações levadas a cabo por uma porção «carregadora» de um programa de execução-condução de um interpretador é apresentada nas figuras 7-12. Estas operações referem-se à preparação para execução de um programa itinerante.
Um programa itinerante pode ser executado num de vários módulos diferentes, tais como, um modo utilizador interactivo, um modo no qual é chamado por outro programa, ou 27 um modo de operação em lotes no qual é enviada de nó para nó a informação recolhida. A informação de inicialização é introduzida durante a operação de arranque (120) para identificar o modo particular de operação, bem como os parâmetros «run-time» (versão limitada).
Os organogramas apresentados nas figuras 7-12 mostram como uma estrutura de programa itinerante, apresentada na figura 2, é carregada. No carregamento do programa itinerante, o interpretador cria a área de controlo de execução (ACE) e o bloco de controlo de programa (BCP) inicial. Guarda o acesso aos parâmetros de entrada, guarda os nomes dos ficheiros de entrada, que foram dados para carregar, e inicializa a tabela de informação de variáveis (TIV) 122. No diagrama de blocos 122, a área de controlo de execução e o bloco de controlo de programas associados com o programa itinerante ficam estabelecidos. Os vários campos ACE e BCP são preenchidos durante o processamento subsequente.
Em seguida, o carregador começa a carregar os segmentos do programa itinerante, isto é, cabeçalho, programa, variáveis, certificados, segmentos de ficheiros e de encerramento, como se mostra na figura 2. O carregamento de cada um dos segmentos do programa itinerante, acima descritos, ou seja, programa do cabeçalho, etc., obriga os dados apropriados a serem introduzidos em ficheiro, como acima se descreve.
No bloco 124, é tomada uma decisão sobre a necessidade de serem processados mais segmentos. Se assim for, então a entrada inicial é lida para este segmento e o tipo de segmento é determinado, após o que o processamento do segmento é iniciado conforme o tipo de segmento (126).
Voltando ao processamento do cabeçalho da figura 8, inicialmente é feita uma verificação para determinar se o segmento que está a ser processado é o primeiro segmento (150). Se não, então existe uma condição de erro (152), uma - 28 - Γ vez que o cabeçalho deve ser o primeiro segmento. Se o primeiro segmento está a ser processado, então o cabeçalho é lido e dividido. Os dados do cabeçalho são guardados no ACE (154) . A rotina deriva então para a figura 7 no ponto de entrada L. O carregador determina se já não há mais segmentos para serem processados (124). Se for assim, o bloco 126 é executado para ter como resultado o processamento do segmento «programa», como representado na figura 9. Inicialmente, é feita uma verificação para determinar se existe um cabeçalho e se nenhum programa foi ainda carregado (160). Se a resposta é não, então existe uma condição de erro (162). Se a resposta é sim, então o programa é lido e é feita uma divisão aleatória (164).
Em seguida, a divisão do programa e/ou as assinaturas associadas com o programa (e/ou o cabeçalho) são verificadas em 166. Se as assinaturas digitais não foram autorizadas com propriedade ou não puderam ser verificadas, daqui resulta uma condição de erro 166. Se a verificação ocorre, então qualquer segurança e informação de autorização associada com o programa itinerante ficam guardadas (170). Esta informação de autorização poderá em alternativa ser mantida no cabeçalho ou no segmento programa.
No bloco 172, é feita uma verificação para determinar se o programa foi enviado como código-P. Se o código de fonte foi enviado em vez do código-P, então o código de fonte é compilado em código-P, usando técnicas convencionais de compilação conhecidas dos especialistas na arte e a imagem de código de fonte é apagada da memória 174. Sem ter em conta a verificação no bloco 172, a posição no ficheiro de entrada do programa - se for em formato de código de fonte ou código-P -é guardada no ACE. Conhecer a localização e extensão da imagem de entrada facilita a cópia do programa numa transversal em zona proibida. Finalmente, sem ter em conta se 29 u
κ J t o código-P acabou de ser compilado ou foi lido do ficheiro de entrada, o endereço principal da memória do código-P é fixado na área de controlo da execução (ACE) em 178, após o que a rotina representada na figura 7 volta a entrar no bloco 124 para dai resultar o carregamento dos restantes segmentos, por exemplo, o proce3samento do segmento «variável», representado na figura 10.
No processamento do segmento «variável», como vem indicado no bloco 190, é feita uma verificação para determinar se o cabeçalho e o programa foram carregados, mas nenhumas variáveis anteriores. Se não for este o caso, então temos uma condição de erro 192. Se um cabeçalho e um programa foram carregados, mas nenhumas variáveis anteriores, então começamos um processo repetido para ler todas as variáveis, se as houver. É feita uma verificação em 194 para determinar se há (mais) variáveis para ler. Se as houver, então para cada variável é criado um bloco de controlo de variáveis (BCV) , como se mostra na figura 6, e é completado pela inserção de um identificador de variável e valor no bloco de controlo de variáveis (BCV) e a fixação de certas condições na situação do BCV. Além disso, o bloco de controlo de variáveis é acrescentado no ponto apropriado da tabela de informação de variáveis (TIV), tabela que contém todas as variáveis do programa (196).
Além disso, outra informação de variáveis, por exemplo, relativa a execuções anteriores deste programa itinerante, é carregada no grupo de memória ou blocos de controlo de programa, conforme for o caso, em 198. Em alternativa, poderá ser desejável manter esta informação de «controlo» no segmento cabeçalho em vez de neste ponto. Em seguida, a rotina deriva de volta para o bloco 194, onde são feitas verificações para determinar se são necessárias mais variáveis para leitura. 0 processamento continua até que não sejam necessárias mais variáveis para ler, ponto em que a 30
U ( rotina deriva para o bloco 124 da figura 7 para assim resultar no carregamento do segmento seguinte.
Como se indica na figura 11, cada certificado é lido (200) e é criado um elemento de certificado, que é então adicionado a uma área de controlo de certificados (ACC) na memória 202. Como está indicado esquematicamente na figura 11, o processo é repetido até que todos os certificados sejam recebidos, ponto em que a rotina se desvia para o bloco 124 para verificar qualquer outro segmento.
Em alternativa, pode ser desejável transmitir para a frente o segmento certificado do segmento de programa, de maneira que os certificados usados como parte do programa de autenticação/autorização possam ser mantidos em conjunto com quaisquer certificados usados pelas variáveis do programa e para autenticação de utilizador-para-utilizador.
Esta operação de desvio tem como resultado o processamento do segmento «ficheiro», apresentado na figura 12. Uma vez que os segmentos ficheiro normalmente seguem os segmentos «variável», é feita uma verificação para determinar se o segmento variável (mesmo se nulo) já foi carregado. Se não foi, então foi detectado que existiu um erro e é gerada uma mensagem de erro apropriada em 212. Se o segmento «variável» já tiver sido carregado, então, como vem indicado no bloco 214, é feita uma verificação para determinar se a marca do ficheiro associada com o ficheiro já foi carregada. Se foi, então é detectado um erro indicando que o ficheiro foi duplicado em 216.
Se a marca do ficheiro não tiver já sido carregada, então, conforme é indicado no bloco 218, é construído um bloco de controlo de ficheiro para este ficheiro, o nome da marca é fixado, são fixados outros indicadores de estado que podem ter sido já associados com o programa itinerante e a posição do ficheiro relativamente ao ficheiro de entrada é fixada. 31
II
II
u
Em seguida, o ficheiro é lido e a sua informação dividida aleatoriamente é processada e guardada no segmento 115 do BCF. A dimensão do ficheiro é guardada no segmento 114 do BCF. 0 ficheiro não necessita de ser carregado na memória nesta altura (220) . Em seguida, o bloco de controlo de ficheiro que foi criado é acrescentado à lista de blocos de controlo de ficheiro recolhida no ACE e a rotina desvia-se para o bloco 124 para processar o segmento seguinte (provavelmente «fecho»).
No processamento do «fecho» na figura 13, a divisão aleatória é processada a partir de todas as divisões aleatórias de cada segmento anterior 230. Deve reconhecer-se que todo o material «segmento» é lido sujeito a divisão aleatória. É feita então uma verificação no bloco 232 para determinar se a divisão retirada e calculada em 230 condiz com a divisão acrescentada quando o programa itinerante foi enviado (a qual é guardada no segmento fecho). Se não houver concordância, então teremos uma condição de erro 234.
Se houver concordância (condizer), é feita uma verificação sobre se o programa itinerante está assinado (236) . Se não for o caso, então, como é sugerido no bloco 238, é desenvolvida uma acção para incluir qualquer nível de segurança desejado, por exemplo, apresentando uma notificação possível de que os dados de transmissão não estão inteiramente assinados (238).
Se a transmissão foi assinada, então a assinatura é verificada e uma mensagem é apresentada ao utilizador para identificar cuidadosamente quem enviou de facto o programa itinerante (e a ordem de compra associada ou qualquer outra forma) 240. A rotina desvia-se então para o bloco 124 da figura 7. O fim do processamento «fecho» na figura 13 tem como resultado que o bloco 124 determina que não há mais segmentos a processar. Em seguida, é feita uma verificação para - 32 - ÍT t
L
b, J t determinar que o fecho foi recebido e processado com sucesso (128). Se não foi, então a rotina interrompe a execução após verificar a validação de uma verificação sem sucesso 130 e processar as pausas 132.
Se a verificação no bloco 128 revela que o fecho foi concluído com sucesso, são então dados alguns passos para preparar a execução do programa (134). A este respeito, os grupos são restabelecidos e a tabela de informação de variáveis e os blocos de controlo de variáveis são restabelecidos. Os blocos de controlo de programa são restabelecidos desde que contenham o ponto de retoma da execução.
Em seguida, a rotina apresentada na figura 14 é iniciada para realmente processar as instruções de código-P. Aqui, deve ser considerado o problema seguinte. Em virtude da execução do programa ser efectivamente restabelecida de maneira idêntica ao estado que tinha no momento em que foi transmitida (como parte da travessia) da máquina do emissor, existe um problema de como o programa itinerante pode distinguir se está na máquina emissora e acabou de regressar da própria emissão; ou se acabou de ser restabelecido na máquina receptora. A invenção permite várias maneiras de tratar este problema. Se a função transversal é implementada como função integrada, então o interpretador fará regressar um valor especial (digamos «0») ao programa, após ter sido enviado ele próprio com sucesso, e outro valor (digamos «1») ao programa quando a sua execução foi restabelecida na máquina do receptor. O programa itinerante pode então verificar este valor para distinguir a situação. Outra forma desta distinção poder ser feita é proporcionando ao programa itinerante uma função para obter o «número das transversais anteriores» (segmento 98 em ACE) . Antes de evocar a transversal, o programa pode utilizar esta função para proteger a função 33 Γ u, «contagem de transversais anteriores». Se o valor da variável condiz, então o programa sabe que a execução é retomada no computador do emissor; se for diferente (bastando apenas um ser maior) , então o programa sabe que a execução foi reatada no computador do receptor.
Quando o primeiro utilizador gera o programa itinerante, a rotina de carregador, apresentada nas figuras 7-13, é executada com muito poucos, talvez mesmo nenhuns, ficheiros, variáveis ou certificados. De acordo com isto, alguns dos passos atrás referidos serão omitidos durante o processamento inicial. A rotina do carregador é executada se o programa itinetrante é executado pela primeira vez ou executado pelos receptores seguintes. A figura 14 mostra as operações realizadas no processamento das instruções de código-P; são repetidas por cada instrução de código-P executada. Como está indicado no bloco 250, a localização da instrução do código-P seguinte é derivada do BCP 52 corrente e torna-se a operação de código-P «corrente». No bloco 252, o comprimento desta operação de código-P é determinado, e a posição do «código-P seguinte» 52 é actualizada para reflectir a instrução de código-P subsequente. 0 tipo de operação de código-P corrente é protegida em 54. (É útil para o interpretador partilhar rotinas comuns que tenham variações ligeiras baseadas na operação precisa. Por exemplo, a operação «chamada» e a operação «invocar função» são semelhantes, excepto no facto da invocação da função esperar que um parâmetro seja devolvido).
Em seguida, como está representado no bloco 254, a operação código-P indicada é concretizada. A maior parte das funções código-P envolvem manipulação de dados, testes lógicos e controlo do andamento do programa. Apenas a titulo de exemplo, estas operações código-P podem incluir a localização de uma variável e a deslocação da variável para 34
um grupo, fixando de nnvn a operação de código-P seguinte para, desta maneira, alterar o andamento do controlo como poderia ocorrer numa operação de derivação, executando uma operação aritmética ou em série, ou seja, uma operação SE/ENTÃO/OU, baseada no valor de grupo aparecido de repente, executar FAZER/REPETIR/ATÉ/ENQUANTO, ou outras operações baseadas em valor de grupo, executando operações ESCOLHER/QUANDO/DE OUTRO MODO, baseadas nos valores de grupo, executando uma operação «FIM» para concluir a operação FAZER/QUANDO/ESCOLHER.
Discutiremos brevemente com algum pormenor várias operações de código-P pertinentes da operação única da invenção. Com a orientação aqui dada, as funções de código-P podem ser implementadas de uma maneira directa por qualquer pessoa familiarizada com a escrita dos interpretadores.
Contudo, ignorando de momento a função de código-P particular, a concepção preferida permite às operações de código-P gerar «interrupções» lógicas na sua conclusão.
Isto permite que a execução do processamento de código-P seja suspensa, enquanto algumas outras operações externas devam ser executadas. Este conceito de interrupção é usado na concepção preferida para facilitar a guarda em disco do material de trabalho, sempre que são invocadas esperas longas ou actividade exterior.
Na figura 15 no regresso da rotina de código-P no bloco 256, o interpretador determina se a rotina assinalou uma interrupção lógica. Se não, o retorno é feito para o bloco 250 para desenvolver a operação de código-P seguinte.
Se foi indicada uma interrupção, é feita uma verificação especial no bloco 258 para determinar se se trata de um pedido especial de «SAÍDA«. Se assim for, então todos os recursos que devem ser libertados no fim deste programa, tais como, memória, ficheiros, variáveis, sub-rotinas de 35
carregamento, etc.., são descartados no bloco 260. Um valor de retorno possível da operação de código-P, que deva ter sido guardado por 260, volta ao bloco 259 para o invocador deste programa itinerante.
Assumindo que isto não é SAÍDA, então o bloco 261 determina se deve ser executado o «ROLLOUT». Por exemplo, em certos ambientes, é útil para o armazenamento de trabalho ser colocado em disco, enquanto um utilizador completa a sua introdução, ou enquanto o programa itinerante espera que expire um determinado intervalo de tempo, ou enquanto um programa externo extenso (ou grande) tenha sido invocado da lógica do programa itinerante, ou enquanto a rotina da assinatura digital estiver a ser executada (uma vez que muitas vezes envolve a entrada do utilizador).
Rotinas que causem uma interrupção de código-P e um possível ROLLOUT, sem ter em conta que são implementadas como funções integradas ou como afirmações de linguagem (com o seu próprio código-P), incluem: ASSINAR - que aplica uma assinatura digital a quaisquer dados de computador e ao fazê-lo pode solicitar ao utilizador que escolha entre significados múltiplos e solicitar ao utilizador que proporcione a sua chave palavra passe secreta que permite que a chave de assinatura privativa seja descodificada e utilizada; APRESENTAR - compor e apresentar um ecrã e esperar que o utilizador forneça dados de entrada; TEMPO DE ESPERA - suspender a execução até que seja atingido um novo tempo; ESCOLHER.DA.LISTA - que permite a escolha de, por exemplo, uma lista de utilizadores ou uma lista de ficheiros, etc. ; 36
ϊ \ AUTENTICAR - esperar por um dispositivo de autenticação de tempo para aplicar a sua própria assinatura digital.
Em alguns ambientes, o «ROLLOUT» não tem significado, e nestes casos os processos de passar da memória virtual para a memória de disco (rollout) e da memória de disco para a virtual (rollin) nos blocos 262, 264, 268 estarão ausentes ou serão inibidos.
Em qualquer caso, uma operação de código-P, que assinale uma «interrupção», também fornece o endereço de pelo menos três funções associadas («call back» - chamar de novo) — — a rotina pré-rollout, que desempenha quaisquer funções necessárias na preparação do rollout. Isto deve incluir a preparação de um campo «parm» em armazenamento temporário para passar para ... a rotina inter-rollout, que actua depois do armazenamento de tanto trabalho quanto possível ter sido passado da memória virtual para o disco de armazenamento auxiliar. — a rotina de pós-espera, que trata de pormenores a seguir à transferência após a rotina inter-rollout ter terminado, e após o armazenamento de trabalho ter sido de novo guardado a partir do sistema auxiliar. Normalmente, isto envolve a cópia de um valor do resultado processado pela rotina inter-rollout, que é deixada em memória temporária e que deverá ser carregada durante a execução ou copiada para uma variável de programa.
No bloco 261, a rotina pré-rollout é invocada. Pode ser uma rotina nula ou pode ser implementar, por exemplo, parâmetros para a rotina inter-rollout, No bloco 262 , a função rollout é executada, se for apropriado dadas as circunstâncias e ambiente. Se for executada. então o ROLLOUT consiste na escrita de todo o - 37 -
armazenamento de trabalho, incluindo BCV e os seus valores, os BCF, os certificados e os ACC, a execução em grupo, o TIV, o AC, o próprio código-P e quaisquer outros blocos para algum armazenamento auxiliar (por exemplo, um ficheiro). 0 próprio interpretador pode ser libertado do armazenamento e isto pode ser feito num bloco especial 2G4, desde que suficientes programa residual e dados se mantenham para posterior recarregamento do interpretador e do armazenamento de trabalho.
No passo 266, a rotina inter-rollout é invocada. Normalmente, esta rotina espera que o utilizador faça entrar dados ou espere até um novo tempo ou outro evento, ou invoque outro programa que possa esperar por dados, ou provocar outras demoras ou exigir uma porção grande de armazenamento que fique vaga pelo ROLLOUT.
No bloco 268, após ter acabado a rotina inter-rollout, o interpretador é recarregado, e então o armazenamento de trabalho, incluindo o código-P, a execução em grupo e todos os blocos de controlo são recarregados a partir do armazenamento auxiliar.
Então no bloco 270 é feito algum processamento final para ordenar a operação. Por exemplo, isto inclui normalmente a cópia de um resultado reenviado pela rotina inter-rollout para execução por grupo ou para um programa «variável».
Isto completa a interrupção e o controlo regressa então ao topo do manipulador de código-P (250), onde a instrução do código-P seguinte é processada.
Examinamos agora algumas operações de código-P com interesse. 0 interpretador, na forma de realização preferida, manipula três das CHAMADAS e função: para rotinas que são integradas no interpretador, para rotinas que são escritas 38 ('1/
U t como parte do proqrama itinerante, e para rotinas que são exteriores ao interpretador ou ao programa e que são dinamicamente localizadas e invocadas quando o programa é executado.
Na figura 17, vê-se que a função integrada se mostra mais simples, e o interpretador apenas localiza a função especificada baseado num índice no código-P e procura o endereço da rotina (dentro do interpretador), e chama-o. Contudo, é importante saber que, embora muitos não o façam, algumas funções integradas podem assinalar uma interrupção de código-P. Neste caso, a função integrada deve proporcionar as necessárias rotinas pré-rollout, inter-rollout e após-espera. 0 interpretador de código-P distingue sempre CHAMADA e funções e proporciona o regresso de um resultado à execução por grupo em e apenas no caso de uma função. Por exemplo, a função ASSINAR faz regressar um valor que representa a assinatura digital processada nos dados fornecidos.
Na figura 16A, vê-se que uma chamada/f unção para uma rotina de programa obriga à criação de um novo nivel de execução BCP 300. Um novo BCP é fixado de maneira a iniciar a execução no início da sub-rotina, fixando a instrução 52 do código-P seguinte ao ponto de entrada do código-P da rotina. À primeira instrução de rotina haverá acesso quando o bloco 250 é de novo introduzido. São preparados parâmetros para a rotina de programa, são fixadas condições de situação apropriadas, o nível de programa 58 no BCP é fixado num mais elevado do que o do programa de chamada e o BCP é colocado no topo do grupo de execução como sendo agora o BCP corrente (82). O resultado da rotina do programa é passado para o chamador por meio da operação de código-p retorno.
Na figura 16B, vê-se como opera a operação de código-P RETORNO do programa correspondente. O bloco 1200 determina se é feito um RETORNO do único nível mais elevado BCP, caso em que este opera como uma SAÍDA, e o bloco 1204 assinala que - 39 - (L ^ si ' Ί uma interrupção de «SAÍDA» de código-P é necessária e passa o RESULTADO do retorno (se o houver) como o valor para eventualmente ser reenviado pelo bloco 261 (figura 15) como o RESULTADO de todo o programa.
De outro modo, no bloco 1204, é feita a determinação de, se o evocador usou uma CHAMADA ou função (por exemplo, verificando o campo 54 no BCP do chamador) , e no último caso o bloco 1206 põe o valor de retorno no grupo (ou cria um valor por defeito, se o retorno não operou).
No bloco 1208, o nivel corrente é retirado e todos os recursos, incluindo armazenamento, ficheiros, variáveis, etc. privativos desta sub-rotina, («nível de programa») são libertados. Recursos, tais como variáveis, que são partilhados com o chamador NÃO são libertados e estão disponíveis.
No bloco 1210, o BCP corrente é então libertado de maneira que o BCP do chamador se torna agora o BCP corrente e é feito um retorno ao bloco 256, onde a execução é retomada. O interpretador inclui rotinas integradas que são desenhadas para cumprir funções relativas a um programa itinerante especializado relacionadas com a obtenção de assinaturas digitais, ficheiros de utilizador para programa itinerante e outras funções para eliminar a necessidade do criador do programa itinerante se preocupar com a programação destas funções.
As operações de código-P podem também incluir a concretização de uma função RETORNO, que efectuará o controlo do programa, de uma operação PROC que se relaciona com um bloco de controlo de programa. O interpretador também realiza uma operação de APRESENTAÇÃO, que utiliza a metodologia/linguagem do apresentador interactivo aqui descrita. O interpretador também concretiza uma operação TRAVESSIA, que tem como resultado o envio por correio do 40 i \! programa it.inprante para outro receptor, bem como todos os dados associados. A figura 18 representa uma sequência de operações realizadas , a titulo de exemplo, para execução de funções ou chamadas externas. Estas funções ou chamadas não são integradas no interpretador ou em parte do programa itinerante, mas em vez disso são parte da biblioteca de programas do utilizador. A função nomeada ou chamada é localizada a partir de qualquer das várias bibliotecas possíveis 354. É feita então uma verificação para determinar se o programa foi encontrado 356. Se o programa não foi encontrado, então, se se desejar, deve ser feita uma verificação para determinar se o programa deve terminar ou se deve ser executada qualquer acção por defeito 358. Se é tomada uma decisão para terminar, então é gerada uma mensagem de erro e, depois de várias operações de arranjo/limpeza terem sido realizadas como acima se descreve, o programa é retirado (360, 362).
Se a verificação no bloco 358 indicar que uma acção por defeito deverá ser executada, então a referida acção é executada, por exemplo, fazendo voltar um valor de função por defeito especial (368) e a rotina deriva para o nodo 0 da figura 14 para começar a executar novas instruções de código-P.
Se o programa é encontrado em resultado da verificação feita no bloco 356, então são construídos parâmetros pelo programa (364). A invocação de rotinas externas envolve uma interrupção de código-P com um rollouf. possível. Isto permite-nos conservar armazenamento em ambiente de permuta de utilizadores múltiplos, se o programa externo é longo ou em qualquer ambiente, se a rotina externa é muito grande e portanto o armazenamento usado pelo programa itinerante deverá ser esvaziado para executar satisfatoriamente o - 41 - programa externo. Neste caso, a interrupção de CÓdiqo-P é assinalada no bloco 366. A rotina PRÉ-ROLLOUT indicada copia os parâmetros para a forma externa do grupo (ou variáveis) para armazenamento temporário. A rotina INTER-ROLLOUT invoca a rotina EXTERNA e recebe qualquer resultado devolvido; e a rotina APÓS-ESPERA copia o referido resultado devolvido ao grupo (se a rotina externa foi invocada como função). É possível que a rotina externa seja na realidade outro programa itinerante. Se assim for, então pode ser concretizada uma optimização especial, usando a imagem já carregada existente do interpretador de código-P, e passando simplesmente um novo conjunto de parâmetros para o bloco 120 (figura 7). Neste caso, será necessária uma lógica especial a ser inserida nos blocos 262 e 264 para condicionalmente evitar a libertação do próprio código do interpretador.
Voltemos agora a prestar atenção a várias funções integradas especiais que são usadas por esta forma de realização. Muitas destas funções podem ser executadas, quer como funções integradas, quer como afirmações de linguagem com as suas próprias operações de código-P especiais.
As figuras 20 e 21 mostram as operações que são concretizadas quando um programa itinerante é transmitido ele próprio a um receptor pré-determinado. No bloco 398, qualquer informação autorizando programa é verificada para assegurar que a operação de travessia é permitida. (É concebível que alguns programas itinerantes possam não ter permissão de se deslocar - mas apenas executar alguma função que termine na primeira utilização) . No caso raro em que o programa não é autorizado a deslocar-se, é apresentado ao chamador um código especial de retorno.
Esta forma de realização implementa a operação «TRAVESSIA» como função integrada. Além disso, a função é definida para fazer o retorno de «0» para o chamador imediato da função e «1» para o chamador após a função ter sido - 42 - reatada no computador do receptor. Como atrás foi explicado, esta diferença no código de retorno permite ao programa estabelecer a diferença entre os computadores do emissor e do receptor.
Para fazer isto, no bloco 399, a função TRAVESSIA pré-carrega em primeiro lugar o valor «1» na execução em grupo, sabendo que o grupo é transmitido intacto. Este é o valor que voltará portanto quando o programa itinerante é reconstituído e reiniciado no computador do receptor. Então, todos os dados de variáveis relevantes, tais como, a tabela de informação «variável», os blocos de controlo do processo, os vários grupos, e os blocos de controlo de variável são reunidos num formato de transmissão, por exemplo, o formato representado na figura 2.
Como vem indicado no bloco 402, o cabeçalho do programa itinerante é construído e transmitido segmento a segmento. O programa itinerante é transmitido segmento a segmento, ainda que possa de facto ser transmitido num campo por um formato de campo ou por qualquer outra forma que se deseje. De preferência, utiliza-se uma fatia de cada segmento à medida que este é transmitido.
Em seguida, em 404, o programa e qualquer informação de autorização do ficheiro de entrada recebido com o programa itinerante são então copiados para o ficheiro de transmissão de saída. O segmento «variáveis» é então transmitido com a inclusão do nome, valor corrente e situação relevante de cada variável (406). Quaisquer certificados, que tenham sido recolhidos como parte da execução digital (autorização) de assinaturas durante esta ou anteriores travessias, são então transmitidos. Assim, sempre que é concretizada uma operação de assinatura digital, todos os certificados associados são recebidos e transmitidos na secção de certificados do programa itinerante 408. As assinaturas são mantidas como variáveis dentro do programa (isto é, dentro dos blocos de 43
controlo de variáveis). Os certificados, nas formas de realização agora preferidas, são tratados como material a que se pode ter acesso através de chamadas de funções integradas.
Em alternativa, será possível incluir no pacote certificados, mesmo os certificados que se referem a assinaturas da transmissão geral e assinatura ou assinaturas que autenticam e autorizam o próprio programa. Contudo, isto necessitará que todos os certificados sejam definitivamente conhecidos no momento em que o segmento Certificado foi escrito e a lógica e possivelmente a posição dos segmentos poderão necessitar de ser reordenadas para assegurar um processamento optimizado.
Na nossa implementação, preferimos manter os certificados associados com a assinatura de autorização de programas, com a referida informação de autorização de programas no cabeçalho ou no segmento de programa, e os certificados para a autenticação da assinatura de transmissão utilizador para utilizador com a assinatura no segmento de fecho.
Após os certificados terem sido transmitidos, todos os blocos de controlo de ficheiros são examinados, tendo como resultado o exame de todos os ficheiros que possam ter sido transmitidos durante as travessias anteriores e quaisquer ficheiros anexados de novo 410. É então feita uma verificação no bloco 412 para determinar se há mais blocos de controlo de ficheiros para examinar. É feita então uma verificação no bloco 414 para determinar se qualquer ficheiro examinado está marcado para ser desanexado 414. Se assim for, a rotina deriva para 412 e nenhum ficheiro nem marca de ficheiro são copiados para transmissão. Se o ficheiro não está marcado para ser desanexado, então o nome da marca do ficheiro é copiado na transmissão 416. É então feita uma verificação para determinar se o ficheiro em questão faz parte de um programa itinerante de entrada que está a ser enviado 418. Se for determinado que o - 44 - r u ficheiro fazia parte da travessia de entrada, então todos os atributos de ficheiro da travessia de entrada, bem como o próprio ficheiro, são copiados para o ficheiro de transmissão fora dos limites 422. Este nome de ficheiro de entrada pode ser acessível através da área de controlo de execução ACE e a posição de entrada do ficheiro está associada com o bloco de controlo de ficheiro 422.
Se o ficheiro não faz parte de uma travessia de entrada, mas em contra partida foi anexado durante a execução do programa itinerante, então o ficheiro, o tipo de ficheiro e os seus atributos são copiados para o ficheiro de transmissão 420. Em seguida, a rotina deriva para o bloco 412 para determinar se haverá mais alguns blocos de controlo de ficheiro para examinar até que todos os blocos de controlo de ficheiro tenham sido examinados.
Como se indica na figura 21, quando todos os BCF tiverem sido examinados, é feita uma verificação para determinar se uma assinatura geral digital utilizador-para-utilizador que foi exigida é pedida pelo programa do sistema 430. Uma tal assinatura geral será útil na detecção de falsificações na informação transmitida.
Se uma assinatura digital geral for utilizada, então uma operação de assinatura digital na divisão aleatória de todo o material transmitido é executada (432) . A operação de assinatura digital pode ser executada de acordo com as recomendações da patente US 5.005.200 (ou técnicas de assinatura digital mais convencionais que não têm os atributos de verificação de autoridade associada, se tal for necessário). Como vem indicado no bloco 432, uma divisão aleatória foi previamente realizada em cada parte da transmissão. Deve notar-se que, em alternativa, deve ser feita uma divisão aleatória de cada uma das fatias. O passo da assinatura digital pode envolver a interacção do utilizador para executar a assinatura. 45
Em seguida, é fornecida validação no fim da transmissão, ou seja, do encerramento do segmento. A validação é fornecida, transmitindo uma fatia reflectindo o material anterior. A fatia assinada deverá demonstrar a autenticação utilizador para utilizador 434. Qualquer certificado necessário para validar a assinatura final que não esteja já no segmento certificado deve ser incluído no segmento FECHO. Em seguida, a transmissão é encerrada 436.
Finalmente, no bloco 437, o valor «1», que foi previamente introduzido no grupo de execução para benefício do programa transmitido quando este chega ao receptor, é removido e substituído pelo valor «0» - que regressa ao chamador corrente para permitir que este se distinga a si próprio.
Em virtude da criação de uma assinatura digital típica envolver a interacção do utilizador - por exemplo, escolhendo possivelmente um certificado e abrindo a chave privativa, ou pedindo ao utilizador para operar no seu dispositivo indicador de assinatura digital - o material descrito nas figuras 20 e 21 actuará de facto, na forma de realização preferida, como rotina de interrupção de código-P. Como exemplo, o código da função TRAVESSIA poderá disparar uma interrupção de código-P, na qual a lógica dos blocos 399 a 430 funcionará como uma rotina PRÉ-ROLLOUT, enquanto o bloco em 432 operará como uma rotina INTER-ROLLOUT, uma vez que pode exigir a interacção do utilizador atrás mencionada. Os blocos seguintes (434, etc.) operarão como uma rotina APÓS ESPERA. O programa itinerante pode ser concebido para transmitir ele próprio para vários receptores numerosas vezes, se for desejado, durante a sua execução. Nestas transmissões múltiplas, as variáveis podem ser trocadas apropriadamente antes de cada transmissão. Desta maneira, o programa fica em 46
V
u
posição de di ferente processamento de cada receptor, de uma maneira que é dependente da implementação. A figura 22 representa uma sequência de operações para anexar um ficheiro ao programa itinerante. A rotina de anexar ficheiros responde a uma marca de ficheiro identificada e a um nome de ficheiro identificado. Como se indica no bloco 440, é feita uma verificação para determinar se existe um bloco de controlo de ficheiro com a mesma marca. Se existir, então o ficheiro anterior com a mesma marca é apagado em 442.
Em seguida, é feita uma verificação para determinar se o nome de ficheiro escolhido reflecte um ficheiro existente que é acessível pelo utilizador. Neste caso, o programa itinerante pode ser associado à informação de autorização de programa, que define o grupo de operações que o programa está em condições de executar, incluindo a capacidade de aceder aos ficheiros. Esta informação de autorização de programa será verificada para determinar que o nome do ficheiro é acessível. Se o nome do ficheiro não é acessível pelo utilizador, então faz-se regressar um código/mensagem de erro ao utilizador 446.
Se o nome do ficheiro for acessível ao utilizador, então um bloco de controlo de ficheiro (BCF) é integrado com a marca especificada e o nome do ficheiro e o ficheiro serão anexados durante a próxima e subsequente transmissão do programa itinerante 448. A rotina é em seguida reatada com uma indicação de que o ficheiro foi anexado com sucesso. A figura 23 mostra como um ficheiro é apagado do sistema do utilizador. Quando se tenta executar uma função APAGAR, os códigos de segurança são verificados para determinar se o programa é autorizado a executar esta operação (450). Se os códigos de segurança indicam que o programa é autorizado a apagar o ficheiro especificado (452), então é executada uma operação apagar e a rotina deriva para trás com uma indicação sobre se o ficheiro foi apagado com sucesso (454) . Em - 47 -
V
alternativa, se. o programa não é autorizado a executar uma operação apagar, então a rotina de chamada volta com uma mensagem de erro, indicando que o ficheiro não pode ser apagado (456). A figura 24 mostra a sequência de operações realizadas na desanexação de um ficheiro de um programa itinerante. Como se indica no bloco 458, é feita uma verificação para determinar se existe um bloco de controlo de ficheiro para a marca identificada associada com o ficheiro a desanexar. Se não existe BCF, então a rotina principal volta com uma mensagem de erro, indicando que o ficheiro não pode ser desanexado (462) . Se o bloco de controlo de ficheiro existe como determinado em 458, então o bloco de controlo de ficheiro é apagado em 460 e a rotina principal volta com uma indicação de que o ficheiro foi desanexado com sucesso. A figura 25 apresenta a sequência de operações realizadas quando o ficheiro se destina a ser «exportado», isto é, transformado num ficheiro de utilizador. Um programa itinerante pode utilizar um ficheiro especifico, representando, por exemplo, uma folha de cálculo, e converter este ficheiro num ficheiro do utilizador receptor, que se mantém com o utilizador mesmo após o programa itinerante ter sido enviado para um novo destino. O ficheiro a ser «exportado» será identificado por uma marca e um nome de ficheiro e, se se quiser, um indicador escrito de novo identificando se o ficheiro deve ser rescrito. É feita inicialmente uma verificação para ver se existe um bloco de controlo de ficheiro para a marca especifica 498. Se não existir BCF, então o código de indicação de erro apropriado é gerado e a rotina de chamada regressa para (504). Se existe um BCF com a marca específica, é feita uma verificação para determinar se o ficheiro é parte de um programa itinerante de entrada 500. Se o ficheiro a exportar não faz parte de uma travessia de entrada, então deverá ser 48
anexado peio utilizador e já estar presente no ficheiro do utilizador e, de acordo com isso, é gerada uma mensagem de erro, indicando que não deve poder ser exportado um novo ficheiro anexo 502. Se o ficheiro for parte da travessia de entrada, então é feita uma verificação para verificar se o ficheiro especifico já existe (480). Se assim for, então 6 feita uma verificação no bloco 482 para determinar se o bloco está em condições de rescrever o ficheiro especificado. A verificação inclui a determinação de se ao programa é permitido modificar o ficheiro especificado existente (se não houver «escrita em excesso») ou apagar e criar o ficheiro especificado (se for permitida a «escrita em excesso»). Se não, o bloco 484 é usado para fazer voltar ao programa um erro de acesso. Se a verificação em 482 indicar que se pode escrever em excesso, é feita uma determinação para determinar se o ficheiro deve ser escrito em excesso ou se deve ser adicionado novo material ao fim do ficheiro (486). Se a escrita em excesso é indicada em 486, então o ficheiro existente é apagado (488). É criado um novo ficheiro, se for permitido pela informação de segurança que autoriza o programa e são feitos preparativos para começar a escrever no principio do ficheiro (490).
Se a escrita em excesso não for a indicada em 486, mas tenham de ser acrescentado novos dados no fim, então são feitos preparativos para começar a acrescentar dados no fim do ficheiro existente, como está indicado no bloco 492. Em seguida, os dados são copiados da posição correcta no ficheiro transversal de entrada para o ficheiro de saída (494) e a rotina principal é reintroduzida com a indicação de que a operação de exportação foi realizada com sucesso (496). A figura 26 representa uma sequência exemplar da operação executada quando o material deva ser digitalmente assinado. Na implementação da função assinatura digital, é feita inicialmente uma verificação para determinar se uma operação de assinatura digital é permitida pelo programa, como é 49 fL U, ^^ indicado no bloco 510. Se ao programa é permitido concretizar, será controlada pelo programa uma operação de assinatura digital, que está associada com o programa e que é controlada sempre que o programa é executado para assegurar que não são executadas operações não autorizadas. Se a operação de assinatura digital não é permitida, será então gerada uma mensagem de erro, rejeitando a chamada da função de assinatura digital 511.
Se a operação de assinatura digital é permitida, então no bloco 514 a função assinatura prepara-se para a interacção do utilizador, fazendo deslocar uma imagem dos dados que devam ser assinados em conjunto com alguns parâmetros (tais como, qualquer autorização necessária para o conteúdo de dados) para armazenamento temporário na preparação da recepção pela rotina INTER-ROLLOUT (mostrada na figura 27), que executará as interacções do utilizador associadas com a execução da assinatura real.
No bloco 512, a rotina de código-P é assinalada com rotinas de interrupção, que são descritas a seguir.
Se a autorização de· assinatura digital é autorizada, então um painel de apresentação deve ser apresentado ao utilizador para solicitar qual o certificado que deve ser usado para a operação de assinatura. A referida operação é de preferência executada de acordo com a patente US N°5.005.200 do inventor, patente que foi expressamente incluida na descrição a título de referência. 0 utilizador pode possuir uma larga faixa de certificados para executar operações de assinatura digital, incluindo as construídas ao longo das linhas da patente US N°5.005.200. À rotina INTER-ROLLOUT é feito o controlo no bloco 509 após muito do armazenamento ter sido transferido (a rotina de assinatura, ela própria, deve manter-se evidentemente em armazenamento).
Se não houver certificados apropriados para executar a assinatura, então o controlo passa para o bloco 515, que gera - 50 -
f \ um indicador de erro, que deve retornar para a operação de assinatura. Se houver apenas um certificado apropriado para executar a assinatura, então este certificado passa automaticamente para (513). Se houver mais do que um certificado apropriado, então pede-se ao utilizador para escolher (516). Se o utilizador declinar (517), então é gerado um indicador de erro apropriado e transmitido ao programa (515). De outro modo, o certificado apropriado escolhido é transmitido a (513). A chave privativa associada é então localizada (513) . Se o bloco 518 determina que está localizada no dispositivo indicador do utilizador, então o passo 524 é usado para solicitar a comunicação com o referido indicador, de maneira que este possa realizar a assinatura digital. De outro modo, a chave privativa do utilizador está localizada no sistema codificado por uma palavra passe secreta. O utilizador é solicitado em 520 para indicar esta palavra passe que é usada para descodificar a chave privativa. Quaisquer erros ou palavras chave falsas são detectadas, sendo gerada uma mensagem de erro apropriada. Para evitar que seja conhecida por qualquer outra pessoa que não seja o verdadeiro utilizador, apenas é permitido um número limitado de tentativas para dar a palavra passe correcta.
No bloco 522, a palavra passe é usada para decodificar a chave privativa, que por sua vez é usada para assinar a mensagem de acordo com a necessária autoridade. Após esta operação, todos os traços do material secreto são apagados e a assinatura e o certificado voltam para (268, figura 15) em armazenamento temporário. Em (270), é feito o controlo à rotina APÓS-ESPERA (530), que desloca a assinatura do armazenamento temporário para o grupo de execução.
No bloco 532, a operação é verificada e, se teve sucesso, é obtida a prova de hierarquia do certificado do signatário. São acrescentados certificados à colecção de certificados 51 geral (mantida em ACE (90 e outras)), se estas não tiverem já aparecido. A figura 28 representa a sequência de operações levadas a cabo quando se apresenta a informação ao utilizador. O programa itinerante tem com ele associada a capacidade de apresentação em ecrã que é descrita com a figura 28. As capacidades de apresentação do programa itinerante adaptam funções até agora associadas com aplicações tipográficas para utilização num modo de apresentação interactivo de um utilizador, em conjunto com capacidades adicionais melhoradas. O ecrã pode ser apresentado de tal maneira que os campos de entrada possam ser facilmente deslocados e associados com vários atributos para interagir muito flexivelmente com o utilizador. Várias operações e funções relacionadas com a apresentação são resumidas no bloco 540. O ecrã apresenta uma saída baseada num processo de definição de plano típico controlado pela porção de processamento de apresentação do interpretador. 0 processamento da apresentação envolve a análise de atributos condicionais e de atributos estáticos dos campos e do grupo de campos na definição do plano. Na sub-rotina de processamento da apresentação, a substituição de variáveis e a repetição, usando a lógica condicional, são executadas conforme for necessário. Ainda que a substituição de variáveis seja permitida, o sistema retém a associação entre uma entrada de variáveis e o ponto em que o campo deve ser apresentado no ecrã no bloco de controlo de variáveis correspondente (BCV), mesmo que o campo se dirija para a sua posição de saída final, como indicado pela definição do plano. sem São então proporcionados a cada campo os seguintes atributos, que incluem cor, tipo, a cheio/itálico, estilo, dimensão, sublinhar, piscar, inversão de vídeo e - 52 -
Ic apresentação (ou seja, para ocultar palavras passe), ecrã de elevada intensidade, etc. Adicionalmente, são inseridas mensagens de erros possíveis, quando apropriado numa condição de erro detectado, sendo indicada a posição apropriada do cursor. A linguagem do plano usada no bloco 540 permite, não só a definição de uma saída de ecrã, mas também definições para aceitar a entrada. Como vem indicado no bloco 542, os campos são escritos no terminal do utilizador, permitindo que os campos de entrada, se for apropriado, dependam da aplicação. Como anteriormente foi descrito, as estruturas de dados podem passar a disco para armazenamento auxiliar 544 e voltar 546 após a entrada dos dados realizados pelo utilizador nos apropriados campos de entrada.
Para o fazer, o passo 544 realmente envolve a sinalização de uma interrupção de código-P, e tendo o bloco 545 funcionado como a rotina INTER-ROLLOUT associada, e o bloco 546 funcionado como a rotina APÓS ESPERA responsável pelo planeamento dos campos de entrada de novo das variáveis associadas nos BCVs. Isto pode envolver a passagem de dados por um armazenamento temporário.
Em seguida, a entrada é analisada e os dados de entrada inseridos em todas as variáveis associadas. É então realizada uma validação de campos em todos os campos de entrada 548. Assim, deve ser feita uma verificação para ter a certeza que só entraram números nos campos numéricos. Da mesma forma, deve ser feita uma verificação para determinar se um campo de entrada possui os atributos especificados.
Em seguida, é feita uma verificação no bloco 550 para determinar se terá havido um erro em qualquer campo. Se tiver havido um erro, então é produzida uma mensagem de erro e o cursor é posicionado num campo errante (552), após o que a rotina deriva de volta para 540 para gerar a apresentação de uma mensagem de erro. 53
t
Se a verificação em 550 falhar na revelação de erro num determinado campo, então é feita uma nova verificação cruzada para verificar que os campos estão correctos no contexto (por exemplo, ainda que dois campos adjacentes possam estar correctos individualmente, deve ser definida uma condição de erro relativa à combinação dos campos) 554. Baseada na verificação cruzada, é feita a determinação se o campo contém um erro contextuai. Se não, é então feito o regresso ao chamador 558. Se houver um erro contextuai, então é produzida uma mensagem de erro de acordo com o bloco 552.
Deve notar-se que a verificação de ambos os campos individuais fica completamente sob controlo do programa. Deverá haver várias especificações, rotinas de benefícios e outras conveniências para simplificar o tratamento de situações comuns, mas em geral é possível qualquer validação. A validação cruzada de campos pode envolver mais preocupações semânticas, e é assim mais provável pedir programação especializada. A figura 29 desenha uma sequência de operação executada por uma rotina de tempo de espera. A função tempo de espera pode ser utilizada para despertar a intervalos de tempo pré-determinados e verificar se qualquer correio electrónico de entrada chegou e foi ele próprio anexado a este correio para, desta forma, lidar eficientemente com a troca de dados electrónica de entrada. Assim, devido a este mecanismo de tempo de espera, um programa itinerante poderá examinar uma caixa de correio particular a intervalos de tempo pré-determinados para verificar se qualquer correio chegou. Se chegou correio, o programa itinerante poderá enviar o correio a um destino para ser tratado por um outro receptor. Em alternativa, o programa itinerante poderá examinar dados de entrada (por exemplo, correio) e, baseado nos vários indicadores de conteúdo, executar automaticamente uma travessia e gerar um seu novo caso, que poderá tratar o correio apropriadamente. Evidentemente que o caso original 54 t LCj poderá continuar a executar e processar qualquer caso que apareça.
Por exemplo, se a informação de entrada for relativa a transacções TDE, então o programa itinerante pode ler a informação (usando por exemplo uma função LER integrada), dividi-la em variáveis internas, determinar por quem deve ser processada e realizar a travessia apropriada. Uma vez encaminhada com sucesso, a carta poderá ser posta à disposição, deslocada ou arquivada, o programa pode libertar as suas variáveis e voltar a ter atenção em mais dados de entrada.
Em alternativa, após determinar o tipo de material chegado, pode invocar outro programa para processar os dados de entrada. Se o outro programa for um programa itinerante, então a esse programa pode ser dada a necessária informação de entrada, e pode, ele próprio, então fazer TRAVESSIA apropriada para o tratamento da informação.
Isto permitirá, por exemplo, que um programa itinerante actue como um encaminhador automático para dados de entrada, por exemplo, transacções TDE, e então deixar para outros programas itinerantes as transacções para as quais ele próprio não esteja preparado.
Além disso, se as TDE forem assinadas, então o programa itinerante deverá verificar imediatamente a assinatura. Se a assinatura for válida e especialmente se for feita de acordo com a patente US N°5.005.200, então a autorização para o conteúdo poderá ser programaticamente protegida, e o programa itinerante poderá automaticamente fazer aparecer um caso para lidar com a transacção de entrada.
Por exemplo, com autorização melhorada apropriada, uma ordem de compra entrada poderá ser automática e instantaneamente encaminhada para o departamento de expedição para começar o fornecimento. 55
Items que tenham chegado sem estar assinados ou que usem assinaturas simples, em vez de assinaturas de autorização, poderão ser encaminhados para vários funcionários para processamento de excepção e uma inspecção mais pormenorizada.
Como está indicado no bloco 570, a rotina de tempo de espera ajusta o relógio sistema de alarme para uma determinada hora. Em seguida, um roll out opcional dos dados para armazenamento auxiliar pode ser executado (572) pela marcação de uma interrupção de código-P com rotinas apropriadas seguidas por uma execução de um roll-in dos dados após o período de tempo escolhido ter terminado. Em seguida, ocorre um regresso à rotina de chamada (576). A figura 30 mostra a sequência de operações para a função «escolha a partir de uma lista». A lista poderá ser uma lista de ficheiros ou uma lista de utilizador, etc. Inicialmente, é criada uma lista de todos os items candidatos 580. Em seguida, é gerado um monitor para apresentar pelo menos parte da lista 582. 0 utilizador poderá ter uma oportunidade para escolher entre os items apresentados (583, 585), após o que a função devolverá os nomes dos items escolhidos, tanto como um resultado da função como um grupo de variáveis especiais (584) .
De novo, como descrito noutro lugar, a ESPERA real é concretizada pelo uso da função de interrupção de código-P. Neste caso, a rotina INTER-ROLLOUT espera pelo utilizador para escolher da selecção e faz regressar a entrada às variáveis do programa por meio da rotina APÓS ESPERA. A figura 31 é uma rotina que demonstra como o programa do interpretador permite a um utilizador realizar assinaturas digitais. Como é indicado no bloco 600, os dados destinados a serem digitalmente assinados são reunidos com base nos dados a que o programa está em condições de aceder: isto inclui dados de entrada fornecidos pelo utilizador, dados obtidos dos ficheiros, dados acumulados das travessias anteriores, - 56 - t rr \i dados baseados no ambiente do utilizador (por exemplo, o identificador TSO do utilizador), o tempo, os dados incluídos no próprio programa e os dados derivados de funções integradas (por exemplo, o dicionário de dados X12 integrado). É apresentada ao utilizador informação apropriada (602). O utilizador decide então sc deseja assinar os dados, como está indicado no bloco 604. Se o utilizador indicar que deseja fazer a assinatura, o sistema invoca a função assinar, como representado na figura 26, para depois interagir com o utilizador e completar a assinatura (606). Em seguida, a assinatura digital é gerada e guardada como variável do programa 608. A figura 31 e o organograma que se segue descrevem, em parte, como o utilizador deve utilizar a metodologia do programa itinerante aí descrito, enquanto realiza relativamente poucas operações para concretizar funções eficientes integradas no interpretador atrás descrito. A figura 32 exemplifica como um utilizador poderá verificar a informação recebida. Como está indicado no bloco 610, os dados que se espera sejam verificados são reunidos. Em seguida, uma função «verificar» com os dados reunidos e a assinatura digital guardada em conjunto com quaisquer exigências de autoridade possíveis é invocada. A função verificação pode ser completada como vem descrito na patente US N°5.005.200 ou usando técnicas de assinatura digital vulgares, se uma operação de assinatura digital convencional for utilizada para assinar as variáveis. Em seguida, é feita uma determinação baseada no processamento no circuito do bloco 12 sobre se a assinatura foi verificada (614) . Se o foi, então a execução do programa continua. Se não foi, aparece uma condição de erro indicando que os dados foram falsificados ou que terá havido qualquer tipo de erro de programação 616. Os códigos de regresso são definidos para permitir ao programa distinguir se a assinatura não foi 57 válida, se possui a capacidade de autorização, no caso positivo, se a autorização foi confirmada. A figura 33 mostra como um programa itinerante escolhe um ficheiro para transferir. Inicialmente, o programa determina qual o ficheiro a transferir por, por exemplo, apresentação ao utilizador de uma lista de ficheiros 620. Deve ser feita uma verificação para determinar se é necessário haver interacção do utilizador para determinar qual o ficheiro (622). Se sim, então o utilizador fica preparado para determinar qual o ficheiro a transferir 624. Se não é necessário haver interacção do utilizador para determinar qual o ficheiro, então todos os conteúdos do ficheiro são anexados ao conjunto de dados a transferir 626. A operação é completada, usando as funções anexadas apresentadas na figura 22, que envolve a construção de um bloco de controlo de ficheiro, como anteriormente foi descrito. A figura 34 apresenta as operações do programa itinerante realizadas na leitura de dados de um determinado ficheiro. Inicialmente, o ficheiro é determinado contendo os dados para ler (630). Em seguida, os dados são lidos a partir de um determinado ficheiro e guardado como variáveis de programa 632. A figura 35 mostra como o programa itinerante pode actualizar ou criar um ficheiro a partir de variáveis de programa. Como está indicado no bloco 640, o ficheiro do utilizador, no qual os dados se vão escrever, é determinado em primeiro lugar. Em seguida, é invocada uma função que escreve variáveis de programa no ficheiro do utilizador 642.
Deve entender-se, mesmo que não esteja explicitamente descrito em todos os casos, que qualquer função programa, que possa levar à perda de dados, alteração, danos ou revelação, está sujeita a controlos de segurança. Estes controlos podem ser aplicados a nível de programa e cada um ligado ao programa de entrada e possivelmente combinados de qualquer 58 ff forma pré-determinada com os que também foram impostos pelo utilizador.
Portanto, por exemplo, no caso atrás citado, o programa itinerante apenas pode ler ou escrever ficheiros de dados do utilizador se o programa estiver a isso autorizado.
Existem obrigações de segurança para pelo menos as seguintes classes de funções:
Apresentação de dados ao utilizador.
Solicitação de dados de entrada do utilizador.
Realização de assinaturas digitais.
Leitura de dados dos ficheiros do utilizador.
Criação de dados do utilizador.
Supressão de ficheiros do utilizador.
Escrita de dados nos ficheiros do utilizador.
Manutenção dos ficheiros do utilizador.
Anexação de ficheiros do utilizador.
Exportação de ficheiros anexados para ficheiros do utilizador.
Invocação de um dispositivo de autenticação digital.
Recepção de correio electrónico de entrada.
Leitura de conteúdos de correio electrónico.
Deslocação ou arquivo de correio electrónico de entrada.
Apagamento de correio de entrada. 59 I t
Geração de correio electrónico fora dos limites ou execução de vários tipos de transmissão de dados.
Acoplamento a vários tipos de equipamento, dispositivos e serviços (FAX, impressoras, equipamentos de escritório, dispositivos robot, equipamento de fabrico, etc.).
Execução de uma travessia de programa.
Invocação de programas externos.
Acesso, actualização, arquivamento, supressão, alteração, invocação ou anexação de outros programas itinerantes. A figura 36 mostra como um programa itinerante pode ser desenhado para ser dividido e enviado a um certo número de receptores diferentes, e a figura 37 mostra como programas anteríormente divididos podem ser de novo reunidos.
Voltando em primeiro lugar à figura 36, o programa itinerante pode necessitar de ser dividido para, por exemplo, adquirir dados obtidos de um certo número de receptores diferentes ou recolher ou distribuir dados a um certo número de executivos diferentes numa organização. Inicialmente, o programa itinerante executa várias operações de rearranjo para preparar a divisão 650. Em seguida, as variáveis são fixadas de acordo com exigências de aplicação particulares, ou seja, o exame feito por um determinado utilizador 652. Os utilizadores de destino são então determinados e a função travessia é invocada, como consta das figuras 20 e 21, para transmitir a imagem do programa, as variáveis do programa em conjunto com quaisquer outros dados apropriados talhados para os receptores individuais 654. As variáveis transmitidas podem mudar do caso 1 (656) para o caso 2 (658), caso 3 (660), para o caso N (662). É por último feita uma verificação para determinar se há mais destinos para os quais transmitir (664) . Se assim for, então a rotina deriva de volta para 652 para transmitir para - 60 -
I o novo destino. Se não há novos destinos, então a transferência final é concretizada 666, da mesma maneira como foi explicado acima relativamente a 654, para resultar no «caso» final 668, resultando em seguida a conclusão da operação de divisão.
Noutros exemplos, pode também acontecer que o programa principal vá simplesmente para alguns outros processamentos. Talvez, se estiver a decorrer num ambiente em lote, como um distribuidor de entrada, e se todos os dados de entrada estiverem presentemente esgotados (tendo sido exactamente enviados a um certo número de utilizadores), o programa ficará em espera até que chegue mais qualquer elemento.
Voltando à operação de reunião da figura 37, o programa itinerante tem inteligência para se transferir de utilizador para utilizador para reunir novos dados até que a operação de reunião fique completa. Inicialmente, o programa itinerante chega a um destino da reunião e é executado (680) . É feita uma verificação para determinar se este é um «caso» principal que é determinado por uma variável pré-escolhida a ser ajustada. Se for determinado que não se trata de um caso principal em 682, um caso escravo é identificado em 684. Em (685), o programa escravo verifica se foi invocado com o parâmetro especial «DEBRIEF» (que é simplesmente uma convenção usada por este programa para determinar quando o escravo é chamado pelo principal) e, se assim for, (687) passa de volta toda a informação pertinente para o caso principal, e a seguir sai. Se não for a invocação «DEBRIEF», então é feita uma verificação para determinar se o caso principal está disponível, isto é, já chegou 686. Se o caso principal está disponível, então é feita uma chamada para o caso principal 696, pela utilização da chamada apresentada na figura 18. Após o caso principal ter sido invocado, a rotina deriva de volta para o bloco 680. Se o principal não está disponível, é emitida uma mensagem, indicando que o controlo principal da série não chegou 688. 61
Presumindo que o caso principal tenha chegado e tenha sido invocado, então no bloco 682 é feita uma determinação de que isto é um caso principal e será feita uma verificação para determinar se qualquer outro caso escravo já chegou 692. Se assim for, então o caso escravo será invocado com um pré-dcterminado parâmetro para iniciar a recolha de dados (referida talvez como «debriefing») 694. No ponto de entrada E são recolhidos dados do caso e são reenviados para o principal e escritos num ficheiro de recolha 706. Em seguida, o caso que foi exactamente invocado é apagado em 708 e a rotina regressa a 692, caso em que nova informação é recolhida, se entretanto chegarem outros casos.
Se não tiverem chegado novos casos, o ficheiro é verificado para ver se todos os casos já chegaram (698) . Se isso tiver acontecido, como foi determinado em 700, então os dados podem ser lidos da recolha para as variáveis no programa itinerante. Dependendo da dimensão esperada do ficheiro recolhido e da natureza do processamento, poderá ser mais desejável que o programa principal processe o ficheiro completado nesse momento e também faça ele próprio travessia para o próximo destino, ou encerre o resultado numa simples mensagem, talvez mesmo uma transaeção TDE, ou simplesmente transmita os dados por tratar.
Noutros casos, poderá ser apropriado para o programa ANEXAR o ficheiro a si próprio e transferi-lo em conjunto para outro processo. O ficheiro é apagado e os dados agregados são transmitidos para o destino seguinte 704. Se todos os casos ainda não tiverem chegado, então é emitida uma mensagem, tal como «esperar pela chegada das formas» (702) e a rotina é temporariamente retirada. A figura 38 mostra uma tentativa alternativa a uma reunião antes da divisão da informação do programa itinerante. Como se vê no bloco 710, o programa itinerante chega ao destino de reunião e é tratado. Os dados recolhidos 62 são então escritos num ficheiro especial 712. É feita uma verificação para determinar se chegaram todos os outros casos, como está indicado em 714. Se assim for, então os dados recolhidos são processados 716, e o programa faz travessia para o destino seguinte 718 e a rotina é retirada. Se todo3 03 outros casos não tiverem chegado, como determinado em 714, então é apresentada uma mensagem, tal como «esperar a chegada de mais formas» (720) e o caso corrente é suprimido 722 e a rotina é retirada. A figura 39 é um organograma indicando como foi concebido o programa itinerante para incluir a geração de funções de troca de dados electrónica (TDE). A figura 39 demonstra mais especificamente como uma caracteristica normal «X12» pode ser usada. A norma X12 tem um dicionário de dados associado e um dicionário de segmentos. 0 dicionário de segmentos X12, por exemplo, pode ser usado para definir todos os segmentos necessários para definir uma ordem de compra. Cada segmento é definido como uma parte dos dados e então procurado num dicionário. Em virtude de haver muitas formas diferentes de especificar a quantidade de um item, são permitidas muitas variantes dos dados em X12.
Este sistema engloba o dicionário de dados X12 no interpretador, que pode ser chamado como função integrada. Como está indicado no bloco 720, é feita inicialmente uma chamada da sub-rotina X12, especificando um nome de segmento e items «XX, YY, WW, ...». O programa pode proporcionar códigos de dados X12 para opções comuns populares típicas em ambientes de organização, de maneira a construir uma lista curta de opções para utilização normal. Exemplos destes items são, num contexto de ordem de compra, número do item, número da parte e quantidade. Esta chamada resultará numa chamada para o dicionário de dados integrado. É feita uma verificação para determinar se a lista reduzida está vazia (como indicado em 724) . Se assim for, o 63
nome do segmento é usado para chamar a função integrada X12SEGLIST (LISTA DE SEGMENTO X12) , que localiza a tabela de dicionários de segmento de todas as opções de dados associadas 736. Em seguida, a função integrada X12DATANAME (NOME DE DADOS X12) deverá ser usada para expandir o dicionário de dados, devendo ser apresentada em 740 cada descrição de dados associada 738 e a lista completa longa.
Se a verificação em 724 indicar que existe uma lista reduzida, o dicionário de dados N0MEDEDAD0SX12 é usado para localizar a descrição expandida de cada opção da lista reduzida. Em seguida, a lista reduzida é apresentada em 728. Então, é feita uma verificação para determinar se o utilizador deseja a lista longa completa, como indicado em 730. Se a resposta for sim, então o bloco 736 é executado como atrás foi descrito. Se a resposta for não, então a escolha do utilizador entre a lista reduzida e a lista longa é aceite (732). É então feita, no bloco 734, uma verificação para determinar se todos os dados foram recolhidos. Se o foram, reunimos e emitimos a transacção X12 completa 742 e então fazemos sair a rotina. Tendo em conta a operação de emissão referida em conjunto com 742, a invenção contempla a capacidade de enviar por correio conjuntos de dados X12 específicos somados ao correio electrónico do programa itinerante completo. Se todos os dados não foram recolhidos, como indicado pela verificação 734, então mais conjuntos de dados são recuperados e a execução da rotina repetida. A figura 40 refere-se ao uso do programa itinerante na recepção da transacção de troca de dados electrónica. Por exemplo, um determinado utilizador pode ter recebido um programa itinerante gerado por uma ordem de compra. Inicialmente, a transacção TDE recebida é lida em 750. Talvez por meio de um programa itinerante de tempo de espera, como vem descrito na figura 29, que distribui várias cópias de si 64 í Li \ * próprio quando chegam os dados de entrada. A TDE codificada é então analisada na sua lógica nas variáveis de programa 752. A TDE recebida é então deslocada para um repositório de arquivo para conservar a que foi recebida para uma auditoria possível. Os segmentos são então processados por meio de um dicionário do segmentos acoplado 756. As regras dos segmentos associadas, com X12 são aplicadas, o que, por exemplo, pode ter a ver com a não existência de certos tipos de dados, em particular campos, 758. Para cada item de dados, o dicionário de dados associado com cada segmento é localizado em 760. Para uma declaração, tal como é apresentada em 7 62, onde DESC =X12DATANAME (ÍTEM DE DADOS DO CÓDIGO DE SEGMENTOS), esta declaração resultará numa chamada do dicionário de dados para se obter uma descrição significativa do item de dados. A descrição significativa recuperada será colocada num monitor variável, tendo como resultado, por exemplo, uma apresentação da ordem de compra num formato de ordem de compra. Todos os ítems de dados são processados por derivação de volta ao bloco 762 e todos os segmentos são processados por derivação de volta 756. A forma de realização preferida também permite o acesso a um Notário Digital, proporcionando funções integradas, que podem aceder a um notário digital, ou a um dispositivo de autenticação, tal como o descrito na patente US N°5.001.752 do inventor (que é aqui incluída a título de referência), ou também a outros dispositivos.
Permitindo a um programa itinerante ter acesso a uma destas facilidades, o programa itinerante está em condições de deslocar dados para uma plataforma, na qual se pode ter facilmente acesso ao notário digital, usando então a função integrada para o fazer. Isto permite a autenticação de assinaturas importantes, marcas de tempo para tráfico interior ou qualquer outra razão. Uma vez que esta autenticação está estritamente sob controlo do programa, pode 65 ser usado qualquer critério, seja ele automático ou baseado em exigências do utilizador.
Também, como foi anteriormente descrito, esta facilidade permite o acoplamento a um FAX exterior, de maneira que formas electrónicas além de serem convertidas em TDE ou impressas podem também ser enviadas por FAX para o receptor final.
Também, como implícito, mas não explicitamente verificado, mesmo quando um programa itinerante emite uma transacção TDE, pode ainda ser activado posteriormente. Um exemplo será um programa itinerante que primeiro serve como uma requisição electrónica e então, após aprovação de assinaturas suficiente, gera uma ordem de compra. Pode então ser enviado ele próprio a um repositório onde poderá mais tarde ser reactivado quando as facturas ou contas correspondentes eventualmente cheguem (electronicamente ou de outra maneira) e podem servir como método para ajustar a ordem com o fornecimento recebido e a conta. Pode incluir lógica para manter rasto dos ítems recebidos e ainda pendentes. Em virtude da capacidade para se dirigir flexivelmente, pode expandir-se para muitos tipos. Do mesmo modo que se trata, se fornece e se recebe, é também possível acoplar o programa itinerante com um leitor de código de barras e validar os materiais enviados e recebidos sem intervenção de dados humanos. A forma de realização preferida pretende que o programa itinerante possa ser acoplado a equipamento variado, incluindo equipamento de escritório e outros dispositivos e facilidades.
Também, qualquer travessia poderá também ser enviada simultaneamente a vários receptores. A listagem seguinte reitera e resume muitas das funções acima descritas (e identifica algumas funções adicionais), as 66 quais a forma de realização preferida está em condições de executar. Esta lista é dada apenas a título de apresentação e não pretende ser exaustiva das muitas outras aplicações, nas quais a invenção pode ser aplicada com vantagem.
Apresentação de dados ao utilizador, usando uma linguagem de apresentação (semelhante a, por exemplo, TxX, ou SCRIPT). Solicitação de dados de entrada do utilizador, usando uma linguagem de apresentação (semelhante a, por exemplo, TxX ou SCRIPT).
Realização de assinaturas digitais para dados processados sob controlo de programa.
Verificação de assinaturas digitais baseada em computadores de dados sob controlo de programa.
Tratamento de co-assinaturas, incluindo possivelmente sugestões de encaminhamento derivadas de certificados de signatário.
Leitura de dados de ficheiros do utilizador.
Criação de ficheiros do utilizador.
Supressão de ficheiros do utilizador.
Escrita de dados em ficheiros do utilizador.
Atribuição de novo nome a ficheiros do utilizador.
Recepção de correio electrónico de entrada.
Leitura dos conteúdos do correio electrónico.
Deslocação ou arquivo de correio de entrada.
Supressão de correio de entrada.
Geração de correio electrónico para o exterior. 67 (ι
t
Acoplamento a e controlo de um servidor de FAX exterior.
Acoplamento a e controlo de uma impressora.
Geração de uma imagem gráfica.
Acoplamento a e controlo de um dispoaitivo que pode receber e transmitir sinais áudio.
Acessibilidade a vários tipos de equipamento, incluindo equipamento de escritório, equipamentos de computação (fitas magnéticas, discos, etc.), dispositivos robot, equipamento de fabrico, etc.
Divisão de um caso de programa itinerante em vários casos, em virtude das travessias múltiplas.
Preparação para recombinar numa única forma os dados contidos nos vários programas itinerantes, possivelmente não reflectindo ainda o mesmo programa.
Supressão de outros casos do programa itinerante.
Invocação de programas externos.
Invocação de outros programas itinerantes como sub-rotinas.
Activação de outros programas itinerantes quando executam funções independentemente.
Extracção de dados de um programa itinerante dormente (que não está em execução).
Determinação de informação acerca de outro programa itinerante (que não está em execução) sem ter que o executar - por exemplo, nome do programa e outras situações, etc.
Extracção de informação de certificados associados com assinaturas digitais. Esta informação é usada para ajudar ao 68 t encaminhamento directo, se estiverem envolvidas necessidades de co-assinatura.
Execução noutro programa de um cópia de um programa itinerante como variável de dados, ou anexação a outros ficheiros de um programa itinerante como ficheiro.
Utilização de um programa itinerante («transportador») para transportar uma nova versão de outro programa para destinos vários e substituição de segmentos de programa de casos existentes por outra versão mais actualizada do programa. Uma forma de concretizar isto será adicionar o segmento de programa mais recente ao fim dos programas itinerantes existentes. Melhorias dos carregadores/interpretadores existentes poderão reconhecer que o segmento de programa a seguir ao segmento de encerramento reflecte uma revisão de programa sugerida. Após qualquer transmissão normal ter sido realizada, validará as assinaturas digitais associadas ao programa revisto proposto e, se transportarem autoridade apropriada, poderão então começar a usar um novo programa no lugar do programa que tenha chegado como parte da travessia normal.
Anexação de ficheiros de utilizador.
Exportação de ficheiros anexados para os ficheiros do utilizador.
Desanexação de ficheiros anteriormente anexados.
Acesso a um dispositivo de autenticação digital.
Concretização de uma travessia de programa.
Transmissão de dados do utilizador (diferentes dos de uma travessia), de maneira que a transmissão não inclua o próprio programa itinerante (ou seja, enviar simplesmente uma mensagem para outro destino). 69
Utilização de funções integradas para simplificar o uso, criação, apresentação, construção e recepção de TDE (por exemplo, X12 ou FACTOSTDE) para de uma forma conveniente fornecer informação e facilidades comuns, sem ter de introduzir estas funções no programa itinerante. Isto inclui funções integradas que têm acc3So ao Dicionário de Elementos de Dados, ao Dicionário de Segmentos, as regras de segmento e os próprios conjuntos de transacção.
Embora a invenção tenha sido descrita com a que é neste momento considerada a forma de realização mais prática, deve entender-se que a invenção não está limitada à forma de realização descrita, mas, pelo contrário, se entende que abrange várias modificações e arranjos equivalentes incluídos no âmbito das reivindicações anexas.
Lisboa, 20 de Fevereiro de 2001
O AGENTE OFICIAL DA PROPRIEDADE INDUSTRIAL
70

Claims (15)

  1. t y REIVINDICAÇÕES 1. Método para processamento de informação, consistindo a informação em instruções digitais e dados anexos, entre vários computadores (Terminais A, B, ... N) acoplados a um canal (12), sobre o qual os referidos computadores trocam mensagens, sendo os referidos computadores parte de um sistema digital de comunicações, compreendendo o referido método os passos de: execução num primeiro computador de uma sequência de instruções digitais (figura 2, bloco 22), incluindo instruções que determinam pelo menos um destino seguinte que recebe uma sequência de instruções digitais em conjunto com os dados anexos; e transmissão da referida sequência de instruções digitais em conjunto com os dados anexos para o destino seguinte; caracterizado por os referidos dados anexos incluírem pelo menos uma assinatura digital (432), que é aplicada selectivamente à referida informação; e por, sob o controlo da referida sequência de instruções digitais ser executada uma operação de verificação de uma assinatura digital baseada na referida informação.
  2. 2. Método de acordo com a reivindicação 1, em que a referida assinatura digital é representada por dados sujeitos a serem processados logicamente pela referida sequência de instruções digitais.
  3. 3. Método de acordo com a reivindicação 1 ou reivindicação 2, incluindo também o passo de associação de um - 1 - \ί
    t certificado digital com a referida assinatura digital e em que o referido certificado digital é representado como dados sujeitos a serem logicamente processados pela referida sequência de instruções digitais.
  4. 4. Método de acordo com qualquer das reivindicações anteriores, incluindo também o passo de aquisição de dados de um utilizador em pelo menos um dos referidos vários computadores, e traduzindo os dados adquiridos, pela referida sequência de instruções digitais, em uma estrutura de dados pré-definida conforme uma norma reconhecida.
  5. 5. Método de acordo com a reivindicação 4, incluindo o passo de processamento e verificação da assinatura digital e dos dados aos quais é aplicada.
  6. 6. Método de acordo com qualquer das reivindicações anteriores, incluindo também o passo de tradução de dados, sob a direcção da referida sequência de instruções digitais, para um formato de Troca de Dados Electrónica (TDE).
  7. 7. Método de acordo com qualquer das reivindicações anteriores, incluindo o passo da construção lógica de informação, à qual a assinatura digital pode ser selectivamente aplicada, em que esta informação é tratada como uma variável de programa, na qual a referida sequência de instruções digitais opera.
  8. 8. Método de acordo com qualquer das reivindicações anteriores, incluindo também o passo de execução de uma operação de assinatura digital como uma função que é invocada sob controlo da referida sequência de instruções digitais.
  9. 9. Método de acordo com a reivindicação 8, em que os dados fornecidos à referida função de assinatura digital 2 reflectem os valores baseados em qualquer elemento dum conjunto de dados lidos num ficheiro de utilizador, de dados integrados na referida sequência de instruções digitais, de dados introduzidos pelo utilizador, de dados obtidos de outras assinaturas e de dados obtidos de um certificado digital (514).
  10. 10. Método de acordo com qualquer das reivindicações anteriores, incluindo também o passo de inclusão de uma indicação de autoridade de que foi investido um utilizador que executa uma assinatura digital (432), pela inclusão de informação digital suficiente para permitir a verificação de que a autoridade exercida pelo signatário o foi com propriedade (434).
  11. 11. Método de acordo com qualquer das reivindicações anteriores, que inclui também o passo da escolha, a partir de uma colecção de certificados digitais, do certificado a ser usado na concretização de uma assinatura digital.
  12. 12. Método de acordo com qualquer das reivindicações anteriores, em que a assinatura digital é gerada usando uma chave privativa.
  13. 13. Método de acordo com a reivindicação 12, que inclui o passo de determinação se a chave privativa é armazenada num dispositivo indicador ou numa memória de computador.
  14. 14. Método de acordo com qualquer das reivindicações anteriores, que compreende também: a provisão de uma sequência de instruções digitais para controlar a gestão de assinaturas digitais, incluindo instruções que: determinam valores digitais; 3 controlam a criação de um valor de uma assinatura digital baseada em determinados valores digitais, e determinam o referido destino seguinte; execução em pelo menos um computador digital de pelo menos uma das referidas instruções para determinar um primeiro valor digital a ser digitalmente assinado; execução em pelo menos um computador digital de pelo menos uma das referidas instruções para controlar a criação de um valor de assinatura digital calculado no referido primeiro valor digital; execução em pelo menos um computador digital de pelo menos uma das referidas instruções para determinar um destino seguinte; transmissão para o referido novo destino de informação digital que inclui a referida sequência de instruções digitais; execução em pelo menos um dos referidos computadores de pelo menos uma das referidas instruções para determinar um novo destino seguinte; e transmissão para o referido novo destino seguinte de informação digital, incluindo o referido valor de assinatura digital.
  15. 15. Método de acordo com a reivindicação 14, em que a referida informação transmitida para o referido novo destino seguinte não inclui a referida sequência de instruções digitais. Lisboa, 20 de Fevereiro de 2001 O AGENTE OFICIAI DA PROPRIEDADE IKTM I.STRIAt,
    4
PT93302613T 1992-04-06 1993-04-01 Metodo para assinar programas itinerantes PT565314E (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US86355292A 1992-04-06 1992-04-06

Publications (1)

Publication Number Publication Date
PT565314E true PT565314E (pt) 2001-05-31

Family

ID=25341285

Family Applications (1)

Application Number Title Priority Date Filing Date
PT93302613T PT565314E (pt) 1992-04-06 1993-04-01 Metodo para assinar programas itinerantes

Country Status (11)

Country Link
US (2) US5390247A (pt)
EP (2) EP0565314B1 (pt)
JP (2) JP3898769B2 (pt)
AT (1) ATE198800T1 (pt)
AU (1) AU662805B2 (pt)
CA (1) CA2093094C (pt)
DE (1) DE69329869T2 (pt)
DK (1) DK0565314T3 (pt)
ES (1) ES2153371T3 (pt)
GR (1) GR3035527T3 (pt)
PT (1) PT565314E (pt)

Families Citing this family (199)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3200877B2 (ja) * 1991-09-03 2001-08-20 株式会社日立製作所 オフィス情報処理システム
US5557780A (en) * 1992-04-30 1996-09-17 Micron Technology, Inc. Electronic data interchange system for managing non-standard data
ES2128393T3 (es) 1992-05-15 1999-05-16 Addison M Fischer Metodo y aparato para sistemas de ordenador con estructuras de datos de informacion para programas de autorizacion.
JPH06110925A (ja) * 1992-09-28 1994-04-22 Hitachi Ltd ネットワークで接続された計算機とその利用方法
US7089212B2 (en) * 1992-12-15 2006-08-08 Sl Patent Holdings Llc System and method for controlling access to protected information
US7209901B2 (en) 1992-12-15 2007-04-24 Sl Patent Holdings Llc C/O Aol Time Warner Method for selling, protecting, and redistributing digital goods
US7831516B2 (en) * 1992-12-15 2010-11-09 Sl Patent Holdings Llc System and method for redistributing and licensing access to protected information among a plurality of devices
US6266654B1 (en) * 1992-12-15 2001-07-24 Softlock.Com, Inc. Method for tracking software lineage
AU683038B2 (en) * 1993-08-10 1997-10-30 Addison M. Fischer A method for operating computers and for processing information among computers
US5475756A (en) * 1994-02-17 1995-12-12 At&T Corp. Method of authenticating a terminal in a transaction execution system
US5668878A (en) * 1994-02-28 1997-09-16 Brands; Stefanus Alfonsus Secure cryptographic methods for electronic transfer of information
JP2846837B2 (ja) * 1994-05-11 1999-01-13 インターナショナル・ビジネス・マシーンズ・コーポレイション 障害を早期検出するためのソフトウェア制御方式のデータ処理方法
US6769009B1 (en) 1994-05-31 2004-07-27 Richard R. Reisman Method and system for selecting a personalized set of information channels
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
EP0709766A1 (en) * 1994-10-29 1996-05-01 International Business Machines Corporation Method for the transmission of line-oriented data sets
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
EP0717337B1 (en) * 1994-12-13 2001-08-01 International Business Machines Corporation Method and system for the secured distribution of programs
US5664207A (en) * 1994-12-16 1997-09-02 Xcellenet, Inc. Systems and methods for automatically sharing information among remote/mobile nodes
US5878230A (en) * 1995-01-05 1999-03-02 International Business Machines Corporation System for email messages wherein the sender designates whether the recipient replies or forwards to addresses also designated by the sender
US7162635B2 (en) * 1995-01-17 2007-01-09 Eoriginal, Inc. System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents
US7743248B2 (en) * 1995-01-17 2010-06-22 Eoriginal, Inc. System and method for a remote access service enabling trust and interoperability when retrieving certificate status from multiple certification authority reporting components
US5748738A (en) * 1995-01-17 1998-05-05 Document Authentication Systems, Inc. System and method for electronic transmission, storage and retrieval of authenticated documents
US6237096B1 (en) 1995-01-17 2001-05-22 Eoriginal Inc. System and method for electronic transmission storage and retrieval of authenticated documents
US7095854B1 (en) 1995-02-13 2006-08-22 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7124302B2 (en) * 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US7133846B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
US7133845B1 (en) * 1995-02-13 2006-11-07 Intertrust Technologies Corp. System and methods for secure transaction management and electronic rights protection
US20060206397A1 (en) * 1995-02-13 2006-09-14 Intertrust Technologies Corp. Cryptographic methods, apparatus and systems for storage media electronic right management in closed and connected appliances
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US20120166807A1 (en) 1996-08-12 2012-06-28 Intertrust Technologies Corp. Systems and Methods Using Cryptography to Protect Secure Computing Environments
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20080141033A1 (en) * 1995-02-13 2008-06-12 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US7143290B1 (en) * 1995-02-13 2006-11-28 Intertrust Technologies Corporation Trusted and secure techniques, systems and methods for item delivery and execution
CN101303717B (zh) * 1995-02-13 2015-04-29 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
JPH08249290A (ja) * 1995-03-10 1996-09-27 Hitachi Ltd 分散システム
AU5953296A (en) * 1995-05-30 1996-12-18 Corporation For National Research Initiatives System for distributed task execution
US20060136923A1 (en) * 1995-05-30 2006-06-22 Kahn Robert E System for distributed task execution
JP4162099B2 (ja) 1995-06-02 2008-10-08 富士通株式会社 ウィルス感染に対処する機能を持つ装置及びその記憶装置
US5812669A (en) * 1995-07-19 1998-09-22 Jenkins; Lew Method and system for providing secure EDI over an open network
US7337315B2 (en) * 1995-10-02 2008-02-26 Corestreet, Ltd. Efficient certificate revocation
US5699431A (en) * 1995-11-13 1997-12-16 Northern Telecom Limited Method for efficient management of certificate revocation lists and update information
US5845077A (en) * 1995-11-27 1998-12-01 Microsoft Corporation Method and system for identifying and obtaining computer software from a remote computer
US20060265336A1 (en) * 1996-02-26 2006-11-23 Graphon Corporation Automated system for management of licensed digital assets
US20010011253A1 (en) 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US5933503A (en) * 1996-03-15 1999-08-03 Novell, Inc Controlled modular cryptography apparatus and method
US5758126A (en) * 1996-03-19 1998-05-26 Sterling Commerce, Inc. Customizable bidirectional EDI translation system
US6003007A (en) 1996-03-28 1999-12-14 Dirienzo; Andrew L. Attachment integrated claims system and operating method therefor
US9619841B2 (en) 1996-03-28 2017-04-11 Integrated Claims Systems, Llc Systems to assist in the creation, transmission, and processing of health insurance claims
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US5864620A (en) * 1996-04-24 1999-01-26 Cybersource Corporation Method and system for controlling distribution of software in a multitiered distribution chain
US20030195848A1 (en) 1996-06-05 2003-10-16 David Felger Method of billing a purchase made over a computer network
US7555458B1 (en) 1996-06-05 2009-06-30 Fraud Control System.Com Corporation Method of billing a purchase made over a computer network
US8229844B2 (en) 1996-06-05 2012-07-24 Fraud Control Systems.Com Corporation Method of billing a purchase made over a computer network
JPH09325928A (ja) * 1996-06-06 1997-12-16 Fuji Xerox Co Ltd メッセージ通信方法及び装置
US7590853B1 (en) 1996-08-12 2009-09-15 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US5794234A (en) * 1996-08-14 1998-08-11 The Ec Company Method and system for providing electronic commerce between incompatible data processing systems
JP3952544B2 (ja) * 1996-09-17 2007-08-01 株式会社東芝 分散システム
EP0955961B1 (en) * 1996-10-23 2004-03-31 SDGI Holdings, Inc. Spinal spacer
EP0840476B1 (en) * 1996-10-31 2005-08-17 Matsushita Electric Industrial Co., Ltd. Encrypted communication system that limits the damage caused when a secret key has been leaked
US6253323B1 (en) * 1996-11-01 2001-06-26 Intel Corporation Object-based digital signatures
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
JPH10170596A (ja) * 1996-12-09 1998-06-26 Hitachi Ltd 絶縁機器診断システム及び部分放電検出法
US6802061B1 (en) 1996-12-12 2004-10-05 Microsoft Corporation Automatic software downloading from a computer network
US6347398B1 (en) 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
AU775197B2 (en) * 1996-12-13 2004-07-22 Visa International Service Association Secure interactive electronic account statement delivery system
US6285991B1 (en) 1996-12-13 2001-09-04 Visa International Service Association Secure interactive electronic account statement delivery system
FR2757661B1 (fr) * 1996-12-24 1999-01-22 Gemplus Card Int Procede de transfert securise de donnees par un reseau de communication
US6839842B1 (en) * 1996-12-27 2005-01-04 Intel Corporation Method and apparatus for authenticating information
US5963944A (en) * 1996-12-30 1999-10-05 Intel Corporation System and method for distributing and indexing computerized documents using independent agents
US6519642B1 (en) * 1997-01-24 2003-02-11 Peregrine Force, Inc. System and method for creating, executing and maintaining cross-enterprise processes
US6260145B1 (en) * 1997-02-14 2001-07-10 Fujitsu Limited System and method of authentication of digital information
US5872848A (en) * 1997-02-18 1999-02-16 Arcanvs Method and apparatus for witnessed authentication of electronic documents
US5920861A (en) 1997-02-25 1999-07-06 Intertrust Technologies Corp. Techniques for defining using and manipulating rights management data structures
DE69816986T2 (de) * 1997-05-29 2004-07-22 Sun Microsystems, Inc., Palo Alto Verfahren und vorrichtung zur versiegelung und unterschrift von objekten
WO1998056129A1 (en) * 1997-06-04 1998-12-10 Simple Access Partners, Llc System and method for processing transaction messages
US6122372A (en) * 1997-06-04 2000-09-19 Signet Assurance Company Llc System and method for encapsulating transaction messages with verifiable data generated identifiers
US6256667B1 (en) 1997-09-29 2001-07-03 Viewlocity Ab Intelligent messaging
JPH1131105A (ja) * 1997-07-10 1999-02-02 Fuji Xerox Co Ltd データカプセル生成装置および方法
US6112304A (en) * 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6832202B1 (en) * 1997-08-29 2004-12-14 Electronic Data Systems Corporation Method and system of routing requests for authorized approval
EP0907120A3 (en) * 1997-10-02 2004-03-24 Tumbleweed Software Corporation Method amd apparatus for delivering documents over an electronic network
US6112181A (en) 1997-11-06 2000-08-29 Intertrust Technologies Corporation Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6275937B1 (en) * 1997-11-06 2001-08-14 International Business Machines Corporation Collaborative server processing of content and meta-information with application to virus checking in a server network
US7092914B1 (en) * 1997-11-06 2006-08-15 Intertrust Technologies Corporation Methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information
US6094731A (en) * 1997-11-24 2000-07-25 Symantec Corporation Antivirus accelerator for computer networks
US6385627B1 (en) 1997-11-24 2002-05-07 International Business Machines Corporation Method, apparatus and computer program product for providing document user role indication
CA2226062A1 (en) * 1997-12-31 1999-06-30 Ibm Canada Limited-Ibm Canada Limitee Workflow mechanism for a stateless environment
JP3579240B2 (ja) * 1998-02-13 2004-10-20 富士通株式会社 電子メール装置及び電子メールプログラムを記録したコンピュータ読取可能な記録媒体
US6862732B1 (en) * 1998-02-25 2005-03-01 Metaserver, Inc. Method and apparatus for event-driven processing of data
US6324650B1 (en) 1998-03-16 2001-11-27 John W.L. Ogilvie Message content protection and conditional disclosure
US6615350B1 (en) 1998-03-23 2003-09-02 Novell, Inc. Module authentication and binding library extensions
US6532451B1 (en) * 1998-03-23 2003-03-11 Novell, Inc. Nested strong loader apparatus and method
US6701433B1 (en) 1998-03-23 2004-03-02 Novell, Inc. Method and apparatus for escrowing properties used for accessing executable modules
US6751735B1 (en) 1998-03-23 2004-06-15 Novell, Inc. Apparatus for control of cryptography implementations in third party applications
JPH11282684A (ja) 1998-03-27 1999-10-15 Canon Inc 画像処理装置、画像処理装置の制御方法、および記憶媒体
US6754822B1 (en) * 1998-04-30 2004-06-22 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forshung E.V. Active watermarks and watermark agents
US7046258B1 (en) * 1998-05-28 2006-05-16 Canon Kabushiki Kaisha Display and control of permitted data processing based on control information extracted from the data
US6549932B1 (en) * 1998-06-03 2003-04-15 International Business Machines Corporation System, method and computer program product for discovery in a distributed computing environment
US6460070B1 (en) * 1998-06-03 2002-10-01 International Business Machines Corporation Mobile agents for fault diagnosis and correction in a distributed computer environment
US6553403B1 (en) * 1998-06-03 2003-04-22 International Business Machines Corporation System, method and computer program product for monitoring in a distributed computing environment
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6308274B1 (en) 1998-06-12 2001-10-23 Microsoft Corporation Least privilege via restricted tokens
US6308273B1 (en) 1998-06-12 2001-10-23 Microsoft Corporation Method and system of security location discrimination
US6279111B1 (en) 1998-06-12 2001-08-21 Microsoft Corporation Security model using restricted tokens
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
CA2242130A1 (en) * 1998-08-07 2000-02-07 Silanis Technology Inc. Method for parallel approval of documents in a distributed network
CA2246006A1 (en) * 1998-09-25 2000-03-25 Silanis Technology Inc. Remote template approvals in a distributed network environment
CA2246049A1 (en) 1998-09-25 2000-03-25 Silanis Technology Inc. Method of creating authenticated verifiable reproductions of electronic documents
US6567917B1 (en) * 1999-02-01 2003-05-20 Cisco Technology, Inc. Method and system for providing tamper-resistant executable software
AU3800500A (en) * 1999-04-12 2000-11-14 Silanis Technology Inc. Secure electronic document creation, approval and distribution method in an openand distributed network environment
US6671805B1 (en) 1999-06-17 2003-12-30 Ilumin Corporation System and method for document-driven processing of digitally-signed electronic documents
AU4078700A (en) * 1999-04-13 2000-11-14 Ilumin Corporation System and method for document-driven processing of digitally-signed electronic documents
US6389537B1 (en) * 1999-04-23 2002-05-14 Intel Corporation Platform and method for assuring integrity of trusted agent communications
US7650504B2 (en) * 1999-07-22 2010-01-19 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
EP1531383A3 (en) 1999-07-30 2005-07-27 Intertrust Technologies Corp. Methods and systems for transaction record delivery using thresholds and multi-stage protocol
US7406603B1 (en) 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US6985885B1 (en) 1999-09-21 2006-01-10 Intertrust Technologies Corp. Systems and methods for pricing and selling digital goods
US6931420B1 (en) 1999-09-24 2005-08-16 Silanis Technology Inc. Method for the separate authentication of a template and user data
TW503355B (en) * 1999-11-17 2002-09-21 Ibm System and method for communication with mobile data processing devices by way of ""mobile software agents""
US6954858B1 (en) * 1999-12-22 2005-10-11 Kimberly Joyce Welborn Computer virus avoidance system and mechanism
EP1247210A4 (en) 1999-12-24 2009-04-29 Telstra Corp Ltd VIRTUAL TOKEN
GB0003920D0 (en) * 2000-02-21 2000-04-05 Ncipher Corp Limited Computer system
US7086085B1 (en) 2000-04-11 2006-08-01 Bruce E Brown Variable trust levels for authentication
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
JP2002014871A (ja) * 2000-06-29 2002-01-18 Fujitsu Ltd コンテンツチェック方法、コンテンツ更新方法、および処理装置
WO2002005508A2 (en) * 2000-07-11 2002-01-17 Sap Aktiengesellschaft Method, apparatus, and system for network-based peer-to-peer business transactions
JP2002032290A (ja) * 2000-07-13 2002-01-31 Canon Inc 検査方法及び検査システム
US7546275B1 (en) * 2000-07-20 2009-06-09 International Business Machines Corporation Decentralized electronic certified payment
US6691070B1 (en) * 2000-11-03 2004-02-10 Mack Information Systems System and method for monitoring a controlled environment
US7574481B2 (en) * 2000-12-20 2009-08-11 Microsoft Corporation Method and system for enabling offline detection of software updates
US6948065B2 (en) 2000-12-27 2005-09-20 Intel Corporation Platform and method for securely transmitting an authorization secret
US20020091940A1 (en) * 2001-01-05 2002-07-11 Welborn Christopher Michael E-mail user behavior modification system and mechanism for computer virus avoidance
TWI238637B (en) * 2001-01-10 2005-08-21 Ibm Method and system for processing of documents with electronic signatures
US20070219918A1 (en) * 2001-01-19 2007-09-20 Jonathan Schull System and method for controlling access to protected information
US6981038B2 (en) * 2001-01-23 2005-12-27 International Business Machines Corporation Methods, systems and computer program products for determining simple network management protocol (SNMP) object identifiers in a management information base (MIB) file
AT4577U3 (de) * 2001-04-13 2006-09-15 It Solution Information Techno Programmlogik für datenverarbeitungsanlagen zur medienbruchfreien fertigung und weiterverarbeitungelektronischer signaturen für strukturierte daten, die in ein grafisches layout eingebettet sind
NO313810B1 (no) * 2001-04-25 2002-12-02 Ericsson Telefon Ab L M Kryptografisk signering i smÕ enheter
US20040117726A1 (en) * 2001-06-19 2004-06-17 Ryu Inada Electronic document format control apparatus and method
US6721956B2 (en) * 2001-07-17 2004-04-13 Scientific-Atlanta, Inc. Interactive information services system and associated method for capturing transaction data
GB2382008B (en) * 2001-11-13 2005-04-20 Sun Microsystems Inc Message generation
US8819253B2 (en) 2001-11-13 2014-08-26 Oracle America, Inc. Network message generation for automated authentication
US7137004B2 (en) 2001-11-16 2006-11-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7370366B2 (en) * 2001-11-16 2008-05-06 International Business Machines Corporation Data management system and method
JP2003244138A (ja) * 2002-02-18 2003-08-29 Fujitsu Ltd 原本作成装置及び原本性保証装置
US7213269B2 (en) 2002-02-21 2007-05-01 Adobe Systems Incorporated Application rights enabling
US6978276B2 (en) * 2002-03-21 2005-12-20 International Business Machines Corporation Method and system for detaching files to a specified location
US8086867B2 (en) * 2002-03-26 2011-12-27 Northrop Grumman Systems Corporation Secure identity and privilege system
US7184985B2 (en) * 2002-05-30 2007-02-27 Microsoft Corporation Method, system, and apparatus for providing secure access to a digital work
US8660960B2 (en) 2002-11-27 2014-02-25 Adobe Systems Incorporated Document digest allowing selective changes to a document
US7278168B1 (en) 2002-11-27 2007-10-02 Adobe Systems Incorporated Dynamic enabling of functionality in electronic document readers
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US7735144B2 (en) 2003-05-16 2010-06-08 Adobe Systems Incorporated Document modification detection and prevention
US7315947B2 (en) 2003-05-20 2008-01-01 Adobe Systems Incorporated Author signatures for legal purposes
JP2005149029A (ja) * 2003-11-13 2005-06-09 Matsushita Electric Ind Co Ltd コンテンツ配信システム、コンテンツサーバ、コンテンツ受信装置、コンテンツ配信方法、プログラム及び記録媒体
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
JP4537235B2 (ja) 2005-03-15 2010-09-01 キヤノン株式会社 電子メール通信装置及び電子メール通信方法並びにプログラム
KR100880288B1 (ko) * 2005-03-15 2009-01-23 캐논 가부시끼가이샤 전자 메일 통신 장치 및 데이터 처리 방법
US20060271493A1 (en) * 2005-05-24 2006-11-30 Contentguard Holdings, Inc. Method and apparatus for executing code in accordance with usage rights
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
ATE535877T1 (de) * 2005-10-20 2011-12-15 Sap Ag Gesteuerte pfadbasierte prozessausführung
JP4754982B2 (ja) * 2006-02-13 2011-08-24 パナソニック株式会社 ファイル転送システム
US9514117B2 (en) 2007-02-28 2016-12-06 Docusign, Inc. System and method for document tagging templates
US9092629B2 (en) * 2007-04-16 2015-07-28 The Directv Group, Inc. Method and apparatus for authenticating a code image upon starting a device
US8655961B2 (en) 2007-07-18 2014-02-18 Docusign, Inc. Systems and methods for distributed electronic signature documents
US8949706B2 (en) 2007-07-18 2015-02-03 Docusign, Inc. Systems and methods for distributed electronic signature documents
US8321933B2 (en) * 2007-11-14 2012-11-27 Caterpillar Inc. Securing electronic control unit code
US8484752B2 (en) * 2007-11-14 2013-07-09 Caterpillar Inc. Verifying authenticity of electronic control unit code
US8312023B2 (en) * 2007-12-21 2012-11-13 Georgetown University Automated forensic document signatures
JP2008312204A (ja) * 2008-06-09 2008-12-25 Canon Inc 画像処理装置、画像処理装置の制御方法、および記憶媒体
US20100106977A1 (en) * 2008-10-24 2010-04-29 Jan Patrik Persson Method and Apparatus for Secure Software Platform Access
US8682998B2 (en) * 2008-10-31 2014-03-25 Software Ag Method and server cluster for map reducing flow services and large documents
CA2755286C (en) * 2009-03-13 2017-08-29 Donald G. Peterson Systems and methods for document management transformation and security
JP4743297B2 (ja) * 2009-03-16 2011-08-10 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置、機能拡張方法およびユーザ認証システム
JP4522476B2 (ja) * 2009-04-24 2010-08-11 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、および記憶媒体
JP4856225B2 (ja) * 2009-09-15 2012-01-18 株式会社沖データ 画像データ生成装置
US8683214B2 (en) * 2009-09-17 2014-03-25 Panasonic Corporation Method and device that verifies application program modules
JP4642927B2 (ja) * 2010-04-12 2011-03-02 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、および記憶媒体
US9251131B2 (en) 2010-05-04 2016-02-02 Docusign, Inc. Systems and methods for distributed electronic signature documents including version control
US20110300516A1 (en) * 2010-06-02 2011-12-08 Microsoft Corporation Tactile Tile Vocalization
AU2011265177C1 (en) 2010-06-11 2016-02-25 Docusign, Inc. Web-based electronically signed documents
JP2011078114A (ja) * 2010-11-10 2011-04-14 Canon Inc 画像処理装置、画像処理装置の制御方法、およびプログラム
US9824198B2 (en) 2011-07-14 2017-11-21 Docusign, Inc. System and method for identity and reputation score based on transaction history
WO2013010172A2 (en) 2011-07-14 2013-01-17 Docusign, Inc. Online signature identity and verification in community
US9268758B2 (en) 2011-07-14 2016-02-23 Docusign, Inc. Method for associating third party content with online document signing
SG11201400184YA (en) 2011-08-25 2014-08-28 Docusign Inc Mobile solution for signing and retaining third-party documents
US10511732B2 (en) 2011-08-25 2019-12-17 Docusign, Inc. Mobile solution for importing and signing third-party electronic signature documents
US9230130B2 (en) 2012-03-22 2016-01-05 Docusign, Inc. System and method for rules-based control of custody of electronic signature transactions
US10453058B2 (en) 2014-12-17 2019-10-22 Heartland Payment Systems, Inc. E-signature
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US11157626B1 (en) 2019-05-29 2021-10-26 Northrop Grumman Systems Corporation Bi-directional chain of trust network

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01195568A (ja) * 1988-01-29 1989-08-07 Hitachi Ltd 電子化文書編集制御方式
US5214702A (en) * 1988-02-12 1993-05-25 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5005200A (en) * 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US4951196A (en) * 1988-05-04 1990-08-21 Supply Tech, Inc. Method and apparatus for electronic data interchange
US5022080A (en) * 1990-04-16 1991-06-04 Durst Robert T Electronic notary
CA2041992A1 (en) * 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
US5142578A (en) * 1991-08-22 1992-08-25 International Business Machines Corporation Hybrid public key algorithm/data encryption algorithm key distribution method based on control vectors
US5164988A (en) * 1991-10-31 1992-11-17 International Business Machines Corporation Method to establish and enforce a network cryptographic security policy in a public key cryptosystem
US5261002A (en) * 1992-03-13 1993-11-09 Digital Equipment Corporation Method of issuance and revocation of certificates of authenticity used in public key networks and other systems
US5337366A (en) * 1992-07-07 1994-08-09 Sharp Kabushiki Kaisha Active control apparatus using adaptive digital filter

Also Published As

Publication number Publication date
AU3560793A (en) 1993-10-07
EP1031908A3 (en) 2004-12-15
DE69329869T2 (de) 2001-08-16
JP3898769B2 (ja) 2007-03-28
JPH06295286A (ja) 1994-10-21
ATE198800T1 (de) 2001-02-15
DK0565314T3 (da) 2001-03-19
AU662805B2 (en) 1995-09-14
ES2153371T3 (es) 2001-03-01
EP0565314A3 (pt) 1994-01-19
DE69329869D1 (de) 2001-02-22
EP0565314A2 (en) 1993-10-13
JP2004348751A (ja) 2004-12-09
EP1031908A2 (en) 2000-08-30
US5390247A (en) 1995-02-14
JP3973647B2 (ja) 2007-09-12
GR3035527T3 (en) 2001-06-29
CA2093094A1 (en) 1993-10-07
CA2093094C (en) 2000-07-11
EP0565314B1 (en) 2001-01-17
US5337360A (en) 1994-08-09

Similar Documents

Publication Publication Date Title
PT565314E (pt) Metodo para assinar programas itinerantes
US10574453B2 (en) System and computer program product for certified confidential data collaboration using blockchains
JP3786722B2 (ja) デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置
EP3257191B1 (en) Registry and automated management method for blockchain-enforced smart contracts
JP3880607B2 (ja) プログラム権限情報データ構造
US7020779B1 (en) Secure, distributed e-mail system
US5311591A (en) Computer system security method and apparatus for creating and using program authorization information data structures
CN100478875C (zh) 依照权限管理政策更新数据的方法和系统
US8341616B2 (en) Updating digitally signed active content elements without losing attributes associated with an original signing user
KR101598738B1 (ko) 제어 프로그램 관리 시스템, 및 제어 프로그램의 변경 방법
US20080276086A9 (en) Method of controlling the processing of data
JP2004229316A (ja) メッセージ認証デバイス
BRPI0709392A2 (pt) método e aparelho para proporcionar autenticação utilizando um cartão de autenticação
CN113132459B (zh) 分布式存储方法、系统、存储介质、信息数据处理终端
US20070030515A1 (en) Electronic document having authentication function
US20130036306A1 (en) Method and system for handling defined areas within an electronic document
CN111090887A (zh) 一种基于即时聊天工具的对话内容销毁方法及装置
US8020773B2 (en) Method for personalizing chip cards
CN114492355A (zh) 一种生成ofd格式的电子投标邀请函及回执函的方法和系统
CN106575341A (zh) 复合文档访问
ES2962110T3 (es) Método para confiar contenidos de operaciones blockchain
JP2005135072A (ja) セキュア文書交換システム、文書承認方法、文書交換管理方法およびそのプログラム
AU722119B2 (en) A method for operating computers and for processing information among computers
Musso Anonymous Proof-of-Presence Groups for Messaging and Voting
CN115641132A (zh) 一种基于区块链的应用程序可信日志记录与预警的方法以及装置