PL187088B1 - Sposób i urządzenie do przetwarzania programu - Google Patents

Sposób i urządzenie do przetwarzania programu

Info

Publication number
PL187088B1
PL187088B1 PL96324525A PL32452596A PL187088B1 PL 187088 B1 PL187088 B1 PL 187088B1 PL 96324525 A PL96324525 A PL 96324525A PL 32452596 A PL32452596 A PL 32452596A PL 187088 B1 PL187088 B1 PL 187088B1
Authority
PL
Poland
Prior art keywords
algorithm
key
software
computer
external unit
Prior art date
Application number
PL96324525A
Other languages
English (en)
Other versions
PL324525A1 (en
Inventor
Sigurd Sigbjornsen
Magne A. Haglund
Vladimir A. Oleshchuk
Original Assignee
Sospita As
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 Sospita As filed Critical Sospita As
Publication of PL324525A1 publication Critical patent/PL324525A1/xx
Publication of PL187088B1 publication Critical patent/PL187088B1/pl

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
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/109Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Storage Device Security (AREA)
  • Emergency Protection Circuit Devices (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Moving Of Heads (AREA)
  • Orthopedics, Nursing, And Contraception (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

1.Sposób przetwarzania programu, w którym c hroni sie oprogramowanie przed nielegalnym wyko- rzystaniem w komputerze, w którym to sposobie szy- fruje sie przynajmniej czesc oprogramowania zgodnie z pierwszym algorytmem i rozszyfrowuje sie zaszyfro- wana czesc oprogramowania zgodnie z drugim algo- rytmem, przy czym drugi algorytm z kluczem uzywa- nym w rozszyfrowaniu zaszyfrowanej czesci zapamie- tuje sie w jednostce zewnetrznej, przystosowanej do polaczenia z komputerem, a jednostka zewnetrzna zawiera przynajmniej odczytywalny komputerowo ele- ment z pamiecia i wlasny procesor, znam ienny tym , ze wykonuje sie rozszyfrowywanie zgodnie z drugim algorytmem (g2) z wykorzystaniem drugiego klucza (k2), zapamietanego w jednostce zewnetrznej, przy czym drugi klucz rózni sie od pierwszego klucza (k l) wyko- rzystywanego przy wykonywaniu szyfrowania wspo- mnianej czesci oprogramowania zgodnie z pierwszym algorytmem (g l), przy czym szyfruje sie czesc opro- gramowania zgodnie z pierwszym algorytmem (g l) na kodzie zródlowym odpowiedniego oprogramowania przed kompilacja 1 laczeniem, lub podczas podobnych kroków procesu tworzacego program wykonawczy, a jednoczesnie dodaje sie do biblioteki danych progra- mu wykonawczego kod wynikowy, zwiazany z komu- nikacja z jednostka zewnetrzna. Fig 1. PL PL

Description

Przedmiotem wynalazku jest sposób i urządzenie do przetwarzania programu, stosowane zwłaszcza do ochrony oprogramowania komputerowego, w szczególności rozprowadzanego bezpłatnie oprogramowania użytkowego, przed jego wykorzystaniem bez zezwolenia posiadacza praw autorskich, a w szczególności sposób zapobiegania nielegalnemu korzystaniu z oprogramowania w komputerze, dla przygotowania oprogramowania do wykorzystania w komputerze tylko z odpowiednią autoryzacją oraz umożliwiające autoryzowane korzystanie z oprogramowania w komputerze.
Pirackie kopie oprogramowania, szczególnie oprogramowania przystosowanego do uruchamiania w komputerach osobistych, powodują znaczne straty finansowe i są poważnym problemem dla twórców oprogramowania. Konwencjonalne sposoby ochrony oprogramowania, stosowane dla zapobiegania nielegalnemu korzystaniu, polegające na wprowadzeniu hasła w czasie instalacji lub działania określonych programów komputerowych, lub pakietu programów, nie gwarantują wystarczającej ochrony. Stąd byłoby szczególnie ważne gdyby możliwe było korzystanie z programu komputerowego, lub pakietu programów tylko za zgodą właściciela praw autorskich.
Dokonano już kilku prób, których celem było opracowanie sposobu, w którym proste wprowadzenie hasła nie jest wystarczające dla uzyskania prawa dostępu do programu. Na przykład zaproponowany został system, który wymaga specjalnej jednostki zewnętrznej połączonej z komputerem, umożliwiającej korzystanie z danego programu. Jednostką tą może być na przykład klucz sprzętowy, który jest połączony bezpośrednio do jednej z końcówek wejście-wyjście komputera, i zawiera ustalone tablice, numer identyfikacyjny, lub podobne dane zapamiętane w pamięci wewnętrznej, z której informacja jest czytana na żądanie dodatkowej procedury, zawartej dla tego celu w programie aplikacyjnym. Urządzeniem takim może być stacja czytnika kart, lub podobne urządzenie, do którego wprowadzana jest karta. Treść zapamiętana na karcie jest zasadniczo podobna do informacji wykorzystywanej przy stosowaniu opisanego powyżej klucza sprzętowego. Procedura sprawdzania polega zwykle na tym, że dodatkowa procedura programu dokonuje, na przykład, bezpośredniego porównania tożsamości z odpowiednią pozycją informacji zapamiętanej w tablicy.
Przykład takiego podejścia został ujawniony w zgłoszeniu patentowym nr DE 44 19 115, gdzie czytana jest treść zapamiętana na karcie z mikroukładem i jeżeli oczekiwana zawartość odpowiada odczytanej, fakt ten jest uważany za wystarczający dowód tożsamości, uprawniający do korzystania z programu. Sprawdzenie może być wykonane w czasie instalacji programu, lub później w czasie korzystania z niego. Opublikowane zgłoszenie patentowe nr DE 42 39 865 ujawnia podobny system, w którym dodatkowo jest rejestrowana liczba wykonanych instalacji, co umożliwia ograniczenie ich liczby.
Dodatkowa procedura musi być zawarta w oprogramowaniu, co jest główną wadą wszystkich tego typu urządzeń. Przez proste usunięcie takich procedur, oprogramowanie będzie działało normalnie i zabezpieczenie przed nielegalnym użyciem będzie utracone. Ponad187 088 to, podczas wymiany danych między procesorem komputera i pamięcią urządzenia lub karty, możliwe jest obserwowanie informacji, a ponieważ za każdym użyciem programu wymieniana jest ta sama informacja, możliwe jest ujawnienie treści zapamiętanej w pamięci zewnętrznej. Nawet jeżeli zawartość pamięci jest zaszyfrowana jedną z metod, taki rodzaj powtórzeń wzdłuż interfejsu komunikacyjnego stwarza możliwość, na przykład, symulacji odpowiedniego urządzenia, lub „przerwania kodu” za pomocą układu o względnie umiarkowanej mocy obliczeniowej.
W układzie opisanym w zgłoszeniu patentowym nr GB 2 163 577 niektóre ze słabych punktów powyższego typu urządzenia zostały usunięte przez zastosowanie pewnych technik szyfrowania i umieszczenie kilku elementów pamięci, jak również własnego procesora, w obudowie odpornej na manipulowanie. Procesor umieszczony w obudowie wykorzystuje klucz szyfrowy, który jest zapamiętany w pamięci w obudowie i instrukcje zapamiętane również w pamięci w obudowie, dla rozszyfrowania programu użytkowego, lub modułu programu przekazanego z komputera głównego, do którego obudowa jest połączona. W odniesieniu do samej techniki szyfrowania, układ zgodnie ze zgłoszeniem patentowym nr GB 2 163 577 wykorzystuje tak zwany algorytm DES (DES - Data Encryption Standard, Bureau of Standards, U.S.A., 1977) do szyfrowania oprogramowania użytkowego i odpowiadający mu algorytm odwrotny do rozszyfrowania tego samego oprogramowania, przy czym jeden i ten sam klucz jest użyty tak do szyfrowania jak i rozszyfrowania. Jak widać standard DES jest symetryczny, a zabezpieczenie tkwi jedynie w samym kluczu. 'Stąd, aby nie utracić tego zabezpieczenia, zaproponowano również szyfrowanie samego klucza w zgłoszeniu patentowym GB. Dla tego celu użyty jest tak zwany algorytm RSA (RSA -· Rivest, Shamir, Adleman) stosujący dwa różne klucze, to znaczy jeden do szyfrowania i drugi dla rozszyfrowania, przy czym wnioskowanie o pierwszym kluczu na podstawie drugiego jest praktycznie niemożliwe. Stąd system szyfrowania RSA jest asymetryczny, i w przypadku układu zgodnego ze zgłoszeniem patentowym nr GB 2 163 577, jest użyty tylko jeden klucz, który sam w sobie może być znany (klucz publiczny) do szyfrowania klucza DES, podczas gdy drugi klucz, którego nie może znać użytkownik (klucz prywatny lub tajny) jest użyty do rozszyfrowania klucza DES. Ten ostatni, tzn. tajny klucz, jest zapamiętany w pamięci w odpornej na manipulowanie obudowie, i jest udostępniony przez umieszczony w obudowie procesor, gdy jest potrzebny do rozszyfrowania zaszyfrowanych kluczy DES, z których każdy należy do zaszyfrowanego programu użytkowego, dla umożliwienia wykonania programu użytkowego.
Tym niemniej, w układzie zgodnym ze zgłoszeniem patentowym nr GB 2 163 577, możliwe również jest monitorowanie komunikacji między jednostką zewnętrzną i komputerem głównym, a oczywiście komunikacja ta jest identyczna, gdy wykonywany jest ten sam moduł programu szyfrującego. Ponieważ są zaszyfrowane kompletne moduły programu, a takie moduły tworzą względnie duże części oprogramowania, ten rodzaj przewidywalnych powtórzeń wzdłuż interfejsu komunikacyjnego pomaga w identyfikacji odpowiednich modułów programu, które mogą być łatwo oddzielone od reszty oprogramowania, które ma być przetwarzane, np. w trybie autonomicznym, w celu rozszyfrowania zaszyfrowanego modułu programu raz na zawsze. Ponadto, zewnętrzne rozszyfrowanie, pamiętanie i wykonanie kompletnych modułów programu użytecznego będzie zabierało nieakceptowanie długi okres czasu, dopóki układy w obudowie nie będą posiadały wystarczająco wysokich mocy przetwarzania, a komunikacja z głównym komputerem, z którego pochodzą moduły, nie będzie bardzo szybka.
Sposób przetwarzania programu, w którym chroni się oprogramowanie przed nielegalnym wykorzystaniem w komputerze, w którym to sposobie szyfruje się przynajmniej część oprogramowania zgodnie z pierwszym algorytmem i rozszyfrowuje się zaszyfrowaną część oprogramowania zgodnie z drugim algorytmem, przy czym drugi algorytm z kluczem używanym w rozszyfrowaniu zaszyfrowanej części zapamiętuje się w jednostce zewnętrznej, przystosowanej do połączenia z komputerem, a jednostka zewnętrzna zawiera przynajmniej odczytywalny komputerowo element z pamięcią i własny procesor, według wynalazku charakteryzuje się tym, że wykonuje się rozszyfrowywanie zgodnie z drugim algorytmem z wykorzystaniem drugiego klucza, zapamiętanego w jednostce zewnętrznej, przy czym drugi klucz różni się od pierwszego klucza wykorzystywanego przy wykonywaniu szyfrowania wspomnianej
187 088 części oprogramowania zgodnie z pierwszym algorytmem, przy czym szyfruje się część oprogramowania zgodnie z pierwszym algorytmem na kodzie źródłowym odpowiedniego oprogramowania przed kompilacją i łączeniem, lub podczas podobnych kroków procesu tworzącego program wykonawczy, a jednocześnie dodaje się do biblioteki danych programu wykonawczego kod wynikowy, związany z komunikacją z jednostką zewnętrzną.
Korzystnym jest, że rozszyfrowanie zaszyfrowanej części oprogramowania, które jest wykonywane zgodnie z drugim algorytmem, wykonuje się gdy komputer podczas wykonywania oprogramowania napotka instrukcję wywołania, lub podobną instrukcję, powodującą skok do odpowiadającego mu punktu wejścia kodu wynikowego, przez co ustala się kanał komunikacyjny między komputerem i jednostką zewnętrzną z wykorzystaniem dodanego kodu wynikowego, przez który to kanał komunikacyjny przesyła się zakodowaną część oprogramowania w pierwszej sesji transmisji do jednostki zewnętrznej, dla rozszyfrowania przez własny procesor jednostki, którą to rozszyfrowaną część oprogramowania następnie przetwarza się w jednostce zewnętrznej, a wynik przesyła się w drugiej sesji transmisji w stronę przeciwną, przez kanał komunikacyjny, dla dalszego wykorzystania w komputerze.
Dodatkowo część oprogramowania, która jest zaszyfrowana zgodnie z pierwszym algorytmem, przed pierwszą sesją transmisji, koduje się zgodnie z trzecim algorytmem i trzecim kluczem, przy czym ten trzeci klucz opiera się na liczbie, którą dla odpowiedniej sesji transmisji wybiera się losowo i generuje w jednostce zewnętrznej, a część oprogramowania, która jest zaszyfrowana zgodnie z pierwszym algorytmem, oraz która jest zakodowana zgodnie z trzecim algorytmem i przesłana do jednostki zewnętrznej podczas pierwszej sesji transmisji, dekoduje się w jednostce zewnętrznej zgodnie z czwartym algorytmem i czwartym kluczem, przy czym czwarty klucz jest oparty na losowo wybranej liczbie dla trzeciego klucza, a czwarty algorytm jest algorytmem odwrotnym do trzeciego algorytmu.
Dodatkowo, otrzymany wynik w jednostce zewnętrznej w oparciu o część oprogramowania, która jest rozszyfrowana zgodnie z drugim algorytmem przed pierwszą sesją transmisji, koduje się zgodnie z piątym algorytmem i piątym kluczem, przy czym piąty klucz jest oparty na liczbie, którą dla odpowiedniej sesji transmisji wybiera się losowo, a dostarcza się ją z jednostki zewnętrznej, ponadto otrzymany wynik w jednostce zewnętrznej, na podstawie tej części oprogramowania, która jest rozszyfrowana zgodnie z drugim algorytmem, oraz który jest kodowany zgodnie z piątym algorytmem i przesłany do komputera w drugiej sesji transmisji, dekoduje się w komputerze zgodnie z szóstym algorytmem i szóstym kluczem, przy czym szósty klucz jest oparty na wybranej losowo liczbie dla piątego klucza, a szósty algorytm jest algorytmem odwrotnym do piątego algorytmu.
Wybrana losowo liczba dla trzeciego i czwartego klucza i wybrana losowo liczba dla piątego i szóstego klucza jest tą samą liczbą.
Sposób przetwarzania programu, w którym przygotowuje się oprogramowanie, szczególnie programowanie przeznaczone do bezpłatnego rozprowadzania, dla wykorzystania w komputerze jedynie z odpowiednią autoryzacją, w którym to sposobie szyfruje się zgodnie z pierwszym algorytmem przynajmniej część oprogramowania, która przez wykorzystanie w komputerze jest rozszyfrowana zgodnie z drugim algorytmem, według wynalazku charakteryzuje się tym, że klucz który jest zastosowany przy szyfrowaniu zgodnie z pierwszym algorytmem jest pierwszym kluczem, który różni się od drugiego klucza stosowanego w wykonywaniu rozszyfrowania zgodnie z drugim algorytmem części oprogramowania, która jest szyfrowana zgodnie z pierwszym algorytmem i kluczem, przy czym szyfrowanie części oprogramowania zgodnie z pierwszym algorytmem wykonuje się dla samego kodu źródłowego odpowiedniego oprogramowania przed kompilacją i łączeniem dla uzyskania programu wykonawczego, lub w podobnych krokach procesu tworzącego program wykonawczy, a jednocześnie kod wynikowy dodaje się do biblioteki danych programu wykonawczego, w odniesieniu do komunikacji z jednostką zewnętrzną przystosowaną do połączenia z komputerem.
Korzystnym jest, że przy kompilowaniu i/lub łączeniu kodu źródłowego dla stworzenia programu wykonawczego, lub przy tworzeniu programu wykonawczego w procesie o podobnych krokach, wprowadza się ciągi instrukcji wywołania, lub podobne instrukcje, które w czasie wykonywania programu wykonawczego powodują skok do odpowiadających im punktów
187 088 wejścia wspomnianego kodu wynikowego, a kodu wynikowego używa się dla stworzenia kanału komunikacyjnego między komputerem i jednostką zewnętrzną, w której ma miejsce rozszyfrowanie zgodnie z drugim algorytmem.
Dodatkowo trzeci klucz wprowadza się do części oprogramowania, która jest zaszyfrowana zgodnie z pierwszym algorytmem, przy czym trzeci klucz jest przeznaczony dla zastosowania w trzecim algorytmie, dla kodowania części oprogramowania przed jej przesłaniem do jednostki zewnętrznej.
Sposób przetwarzania programu, w którym umożliwia się autoryzację oprogramowania w komputerze, szczególnie oprogramowania przeznaczonego do bezpłatnego rozprowadzania, w którym to sposobie szyfruje się przynajmniej część oprogramowania zgodnie z pierwszym algorytmem, a jednostka zewnętrzna jest dołączona do komputera, przy czym jednostka zewnętrzna zawiera przynajmniej odczytywalny komputerowo element z pamięcią i własny procesor, oraz drugi algorytm i klucz wykorzystywany w rozszyfrowaniu zaszyfrowanej części oprogramowania, zapamiętany w jednostce zewnętrznej, według wynalazku charakteryzuje się tym, że gdy wykonanie przez komputer części oprogramowania, które jest zaszyfrowane zgodnie z pierwszym algorytmem napotyka instrukcję wywołania lub podobną instrukcję, powoduje skok do odpowiedniego punktu wejścia kodu wynikowego, ten kod wynikowy wykorzystuje się za pomocą komputera dla ustanowienia kanału komunikacyjnego do jednostki zewnętrznej, poprzez ten kanał zaszyfrowaną część oprogramowania przesyła się w pierwszej sesji transmisji do jednostki zewnętrznej dla rozszyfrowania przez własny procesor jednostki zgodnie z drugim algorytmem i drugim kluczem, które są zapamiętane w jednostce zewnętrznej, ten drugi klucz różni się od pierwszego klucza wykorzystywanego w wykonaniu szyfrowania części oprogramowania zgodnie z pierwszym algorytmem, a zaszyfrowaną część oprogramowania przetwarza się następnie w jednostce zewnętrznej i wynik przesyła się w drugiej sesji transmisji w przeciwnym kierunku przez kanał komunikacyjny, dla dalszego wykorzystania w komputerze.
Korzystnym jest, że koduje się, zgodnie z trzecim algorytmem i trzecim kluczem, przed pierwszą sesją transmisji do przyłączonej jednostki zewnętrznej, tę część oprogramowania, która jest szyfrowana zgodnie z pierwszym algorytmem, przy czym trzeci klucz jest oparty na losowo wybranej liczbie dla odpowiedniej sesji transmisji i pożądane jest aby był dostarczony przez jednostkę zewnętrzną, a część oprogramowania, która jest zaszyfrowaną zgodnie z pierwszym algorytmem, i która jest kodowana zgodnie z trzecim algorytmem i przesłana do jednostki zewnętrznej w pierwszej sesji transmisji, dekoduje się w jednostce zewnętrznej zgodnie z czwartym algorytmem i czwartym kluczem, przy czym czwarty klucz jest oparty na losowo wybranej liczbie dla trzeciego klucza, a czwarty algorytm jest algorytmem odwrotnym do trzeciego algorytmu.
Dodatkowo, wynik uzyskany w jednostce zewnętrznej na podstawie tej części oprogramowania, która, jest rozszyfrowana zgodnie z drugim algorytmem, przed drugą sesją transmisji, koduje się zgodnie z piątym algorytmem i piątym kluczem bazującym na losowo wybranej liczbie dla odpowiedniej sesji transmisji, dostarczanym przez jednostkę zewnętrzną, a wynik uzyskany w jednostce zewnętrznej na podstawie części oprogramowania, która jest rozszyfrowana zgodnie z drugim algorytmem, i która jest zakodowana zgodnie z piątym algorytmem i przesłana w drugiej sesji transmisji do komputera, dekoduje się za pomocą komputera zgodnie z szóstym algorytmem i szóstym kluczem, który to szósty klucz jest oparty na wybranej losowo liczbie dla piątego klucza, a szósty algorytm jest algorytmem odwrotnym do piątego algorytmu.
Pierwszy i drugi algorytm oraz pierwszy i drugi klucz określa się zgodnie z niesymetrycznym dualnym układem szyfrującym (system szyfrowania z kluczem-publicznym /kluczemprywatnym), zwłaszcza system szyfrowania RSA, przy czym stosuje się jako pierwszy klucz klucz znany (klucz publiczny), a jako drugi klucz klucz tajny (klucz prywatny) układu szyfrującego.
Korzystnym jest, że tak dobiera się część oprogramowania przeznaczoną do zaszyfrowania zgodnie z pierwszym algorytmem, że ma decydujący wp])Kv na korzystanie z odpowiedniego oprogramowania w komputerze i zawiera jedną lub więcej instrukcji w pliku rozkazowym lub pliku wykonawczym .COM lub ,EXE.
187 088
Urządzenie do przetwarzania programu, do przygotowywania oprogramowania, szczególnie oprogramowania przeznaczonego dla bezpłatnego rozprowadzania, dla użytkowania w komputerze jedynie z odpowiednią autoryzacją, które to urządzenie jest zaopatrzone w element szyfrujący, powodujący szyfrowanie przynajmniej części oprogramowania zgodnie z pierwszym algorytmem i pierwszym kluczem, oraz jednostkę zewnętrzną przyłączaną do komputera, przy czym jednostka-zewnętrzna ma przynajmniej swój własny procesor i odczytywalny komputerowo element z pamięcią dla zapamiętania drugiego algorytmu i klucza, która rozszyfrowuje zaszyfrowaną część oprogramowania zgodnie z drugim algorytmem i kluczem, według wynalazku charakteryzuje się tym, że jest ponadto zaopatrzone w element generujący dla zapewnienia drugiego algorytmu i drugiego klucza przeznaczonego do wykorzystania w rozszyfrowaniu zgodnie z drugim algorytmem, przy czym drugi klucz różni się od pierwszego klucza wykorzystywanego przez element szyfrujący w wykonywaniu szyfrowania części oprogramowania zgodnie z pierwszym algorytmem, przy czym element szyfrujący jest przystosowany do wykonywania szyfrowania części oprogramowania zgodnie z pierwszym algorytmem na samym kodzie źródłowym odpowiedniego oprogramowania, przed jego kompilowaniem i łączeniem, lub przed jakąkolwiek inną zamianą na program wykonawczy, a element szyfrujący jest dostosowany do jednoczesnego spowodowania dodania do biblioteki danych kodu wynikowego, związanego z komunikacją z jednostką zewnętrzną.
Element szyfrujący jest przystosowany do wprowadzenia w czasie kompilacji i/lub łączenia kodu źródłowego dla stworzenia programu wykonawczego, lub w trakcie podobnego procesu tworzącego program wykonawczy, ciągu wywołań lub podobnych instrukcji, które w czasie wykonania programu wykonawczego w komputerze, powodują skok do odpowiedniego punktu wejścia dodanego kodu wynikowego, który komputer następnie wykorzystuje dla ustanowienia kanału komunikacyjnego do przyłączonej jednostki zewnętrznej.
Korzystnym jest, że element szyfrujący jest przystosowany do wprowadzenia do części oprogramowania, które jest szyfrowane zgodnie z pierwszym algorytmem, trzeciego klucza przeznaczonego do wykorzystania w trzecim algorytmie do kodowania części oprogramowania przed przesłaniem do jednostki zewnętrznej.
Urządzenie do przetwarzania programu, umożliwiające autoryzację użytkowania oprogramowania, szczególnie oprogramowania przeznaczonego dla bezpłatnego rozprowadzania, składające się z komputera przystosowanego do pełnienia roli komputera głównego dla jednostki zewnętrznej, który zawiera przynajmniej swój własny procesor oraz odczytywalny komputerowo element z pamięcią, a przeznaczone do połączenia z komputerem głównym dla komunikacji z nim, według wynalazku charakteryzuje się tym, że jednostka zewnętrzna jest zaopatrzona w element szyfrujący przystosowany do wykonywania rozszyfrowania zgodnie z drugim algorytmem i drugim kluczem wytworzonym przez element generujący, przy czym drugi klucz różni się od pierwszego klucza użytego przez element szyfrujący w wykonaniu szyfrowania części oprogramowania zgodnie z pierwszym algorytmem.
Element rozszyfrowujący jest przystosowany do wykonywania rozszyfrowania zgodnie z drugim algorytmem, gdy komputer główny przy wykonywaniu części oprogramowania, które jest zaszyfrowane zgodnie z pierwszym algorytmem, napotyka ciąg wywołań, lub podobnych instrukcji, które zapewniają skok do odpowiedniego punktu wejściowego dodanego kodu wynikowego, komputer główny używa tego kodu wynikowego do ustanowienia kanału komunikacyjnego do jednostki zewnętrznej, przez który komputer powoduje przesłanie zaszyfrowanej części oprogramowania, w pierwszej sesji transmisji, do jednostki zewnętrznej i podlegającej wspomnianemu rozszyfrowaniu, a ponadto procesor własny jednostki zewnętrznej jest przystosowany do przeprowadzenia rozszyfrowania części oprogramowania i powoduje, że otrzymany wynik jest przesłany w kierunku przeciwnym, w drugiej sesji transmisji, przez kanał komunikacyjny, dla dalszego wykorzystania wyniku w komputerze.
Jednostka zewnętrzna zawiera element dekodujący do dekodowania, zgodnie z czwartym algorytmem i czwartym kluczem, części oprogramowania zaszyfrowanego zgodnie z pierwszym algorytmem, która przed pierwszą sesją transmisji jest kodowana przez komputer główny zgodnie z trzecim algorytmem i przesłana do jednostki zewnętrznej w pierwszej sesji transmisji, trzeci klucz jest użyty przez komputer główny w kodowaniu opartym na losowo
187 088 wybranej liczbie dla odpowiedniej sesji transmisji i korzystnie dostarczony przez generator liczb w jednostce zewnętrznej, a czwarty klucz użyty przez element dekodujący w jednostce zewnętrznej jest oparty na tej samej losowo wybranej liczbie, jak ta dla trzeciego klucza, a czwarty algorytm jest algorytmem odwrotnym do trzeciego algorytmu.
Jednostka zewnętrzna jest ponadto zaopatrzona w element kodujący do kodowania, przed drugą sesją transmisji, zgodnie z piątym algorytmem i piątym kluczem, w wyniku otrzymanego w jednostce zewnętrznej na podstawie tej części oprogramowania, które urządzenie rozszyfrowało zgodnie z drugim algorytmem, wspomniany piąty klucz użyty przez element kodujący jest oparty na liczbie, która została wybrana losowo dla odpowiedniej sesji transmisji i korzystnie wytwarzanej przez generator liczb w jednostce zewnętrznej, komputer główny jest w stanie dekodować zgodnie z szóstym algorytmem i szóstym kluczem wspomniany wynik, otrzymany w jednostce zewnętrznej, dla dalszego wykorzystania w komputerze głównym, wynik ten przed drugą sesją transmisji jest kodowany zgodnie z piątym algorytmem za pomocą podzespołu elementu kodującego w jednostce zewnętrznej i przesłany do komputera w drugiej sesji transmisji, przy czym szósty klucz jest oparty na tej samej losowo wybranej liczbie jak piąty klucz, a szósty algorytm jest algorytmem odwrotnym do piątego algorytmu.
Jednostka zewnętrzna zawiera element pośredniczący i oddzielny zespół, korzystnie wykonany z materiału zabezpieczającego przed manipulacją w którym umieszczone są układy elektroniczne, które zawierają przynajmniej procesor jednostki zewnętrznej i pamięć do czytania przez komputer, a które są tak rozmieszczone, że jest ustanowiony kanał komunikacyjny między układami oddzielnego zespołu i komputerem głównym, gdy zespół jest wsunięty do szczeliny elementu pośredniczącego, lub jest połączony w inny sposób z elementem pośredniczącym, przy czym drugi algorytm i drugi klucz są korzystnie zapamiętane w pamięci w taki sposób, że nie mogą być czytane przez inne układy niż procesor oddzielnego zespołu i nigdy nie staną się osiągalne na zewnątrz oddzielnego zespołu.
Oddzielny zespół ma postać małej płytki, takiej jak karta plastikowa, mającej kształt zwykłej karty kredytowej lub Inteligentnej Karty, a element pośredniczący zawiera stację czytnika kart dla płytek, która wariantowo jest wprowadzona do komputera głównego lub urządzenia peryferyjnego z nim połączonego.
Korzystnym jest, że oddzielny zespół przyjmuje formę karty z układem elektronicznym, przystosowanej do umieszczania w położeniu karty lub szczeliny, występującej w komputerze głównym dla kart rozszerzających, karty sieciowej, w przypadku przenośnych komputerów głównych, skonfigurowanej zgodnie z jednym ze standardów dla wkładanych kart, jak standard PCMCIA.
Oddzielny zespól ma korzystnie postać elektronicznej z wory sprzętowej, przy czym, element pośredniczący zawiera wówczas końcówkę wejście-wyjście komputera głównego.
Zgodnie z wynalazkiem opracowano sposób i urządzenie do przetwarzania programu, w których wykorzystuje się układ szyfrujący dający dostawcom i/lub właścicielom oprogramowania ulepszone możliwości ochrony swoich produktów przed ich nielegalnym użytkowaniem i który nie posiada wad dotychczas znanych rozwiązań, w taki sposób, że oprogramowanie może być kopiowane i rozprowadzane bez ograniczeń, tym niemniej nie może być użyte bez niezbędnego zezwolenia. Pondto, opracowany układ szyfrujący jest układem ogólnej natury, który może być stosowany nie tylko do pojedynczych modułów oprogramowania, ale również do całych pakietów programów, w których zgoda na użycie może być przypisana na różnych poziomach, na przykład dla wybranych części pakietu programów.
Przedmiot wynalazku został uwidoczniony w przykładzie wykonania na rysunku, na którym fig.l przedstawia korzystną konfigurację sprzętową zgodnie z wynalazkiem, fig.2 ogólny, uproszczony schemat oprogramowania zgodnie z wynalazkiem, fig.3 - schematycznie sposób tworzenia pliku rozkazowego lub pliku wykonawczego (.ΕΧΕ) bez szyfrowania, fig.4 i 5 schematycznie jak może być przeprowadzone, zgodnie z wynalazkiem, szyfrowanie na poziomie kodu źródłowego, fig.6 - schematycznie podział oprogramowania zapamiętanego odpowiednio na dysku z pamięcią magnetyczną i w pamięci o dostępie swobodnym (RAM), fig. 7 schematycznie wykorzystanie chronionego oprogramowania w komputerze, fig. 8 - przykład
187 088 procesu szyfrowania, który odpowiada fig. 4 i 5, fig. 9 - schematycznie wykorzystanie chronionego oprogramowania w komputerze, fig. 10 - schematycznie zastosowanie obszaru zawierającego sprawdzenie prawa dostępu lub legalizację, a fig. 11 - schemat blokowy ilustrujący przebieg procesu zawierającego szyfrowanie-rozszyfrowanie i kodowanie-dekodowanie zgodnie z korzystnym wykonaniem wynalazku.
Na figurze 1 przedstawiono korzystną konfigurację sprzętową wykonania wynalazku, która zawiera komputer w postaci stacji roboczej lub komputera osobistego (PC) służącego jako komputer główny zgodnie z wynalazkiem. Jednostką zewnętrzną, zgodnie z wynalazkiem, jest czytnik kart, lub procesor, w szczególności inteligentnych kart, wyposażony w dostępny w handlu zintegrowany mikroprocesor, np. typu CCA 12103. Jednostka ta znajduje się w przedstawionym komputerze lub jest umieszczona w oddzielnym zespole lub jednostce i jest połączona z komputerem za pomocą łącza równoległego lub szeregowego.
Na figurze 1 przedstawiono również sposób rozpowszechniania oprogramowania, który obecnie może polegać na wykorzystaniu sieci rozległych (WAN), lokalnych sieci komputerowych (LAN), w szczególności Internetu. Oprogramowanie może być również rozprowadzane na dyskietkach lub płytach kompaktowych CD-ROM' ach (compact disc read-only memory). W każdym przypadku oprogramowanie może być kopiowane i instalowane baz żadnych ograniczeń.
Ponieważ oprogramowanie jest chronione przeciw nielegalnemu użytkowaniu, nie występuje konieczność ochrony przed kopiowaniem, jak to ma miejsce w innych przypadkach. Tutaj, autoryzacja jest zawarta w Inteligentnej Karcie, i jest nieosiągalna dla nikogo innego jak wyłącznie dla dostawcy oprogramowania, który sam instaluje na karcie niezbędny algorytm rozszyfrowujący i klucze. Pozwolenie na użycie pewnego programu komputerowego znajduje się na karcie, a nie w odpowiednim programie lub innej części oprogramowania.
Na figurze 2 przedstawiono uproszczony, ogólny schemat układu według wynalazku, który składa się z następujących elementów:
1. oprogramowania chronionego przed nielegalnym użyciem (ochrona nie przeciwdziała kopiowaniu oprogramowania),
2. Inteligentnej Karty (lub podobnego układu) zawierającej algorytm i klucz dla rozszyfrowania oprogramowania,
3. oprogramowania specjalnego dla komunikacji między chronionym oprogramowaniem 1 i Inteligentną Kartą 2 (dodatkowy kod wynikowy określony w zastrzeżeniach patentowych).
Ochrona realizowana jest przez umieszczenie w różnych miejscach oprogramowania wywołań do Inteligentnej Karty, lub do oprogramowania specjalnego będącego w dyspozycji karty, w ten sposób otrzymując niezbędną informację dla prawidłowego przebiegu procesu wykonywanego przez program chroniony. Na przykład, informacją tą mogą być pewne parametry, które są wykorzystywane w czasie wykonywania programu, i które są określone przez osoby pragnące chronić swoje oprogramowanie. Ponieważ są one niezbędne dla prawidłowej pracy oprogramowania, wywołania te nie mogą być usunięte.
Wzajemne oddziaływanie chronionego programu i Inteligentnej Karty są kontrolowane przez specjalne oprogramowanie (kod wynikowy) wprowadzone do biblioteki danych programu, w czasie szyfrowania programu oryginalnego. Oprogramowanie specjalne może zawierać również kodowanie komunikacji między komputerem i Inteligentną Kartą.
Figura 3 przedstawia tworzenie pliku rozkazowego lub pliku wykonawczego (,EXE) bez szyfrowania, a fig.4 i 5, każdy na swój sposób, ilustruje jak może być przeprowadzone szyfrowanie na poziomie kodu źródłowego, zgodnie z wynalazkiem.
Figura 6 ilustruje fakt, że oprogramowanie może być umieszczone w pamięci dysku magnetycznego, gdy program specjalny (kod wynikowy lub biblioteka danych) jest wysyłany do pamięci o dostępie swobodnym komputera (RAM).
Figury 7 i 9 przedstawiają procesy, które zachodzą gdy oprogramowanie chronione jest wykorzystywane w komputerze.
Figura 8 przedstawia przykład procesu szyfrowania typu przedstawionego na fig.4 i 5. Przyjęto założenie, że kod źródłowy dotyczy języka programowania wyższego rzędu, jak np. Pascal, Modula, itd. Właśnie ten kod podlega szyfrowaniu i w ten sposób jest chroniony przed
187 088 tzw. nieautoryzowanym użyciem. W kodzie źródłowym zostaje wybranych kilka parametrów·', które zostają zaszyfrowane za pomocą funkcji szyfrującej g. Na przykład, wyrażenie x: = y+10, obecne w poleceniach kodu źródłowego może być przedstawione jako:
C: = decrypt (g (10) +T), x:=y+ (C-T), gdzie g (10) jest zaszyfrowanym parametrem, a T jest zmienną, której losowa wartość, w tym przypadku, jest przeniesiona z Inteligentnej Karty.
Aby otrzymać prawidłową wartość x, chroniony program musi „dojść do” wartości C, która musi być równa 10+T. Program rozszyfrowujący jest umieszczony w „specjalnym oprogramowaniu (dodany kod wynikowy)”, które stanowi część chronionego oprogramowania (patrz fig.5). Oprogramowanie specjalne zawiera również funkcje kodowania i dekodowania, które są tu oznaczone jako f i f1, jak również program dla komunikacji z Inteligentną Kartą, (patrz fig.7). W komunikacji z Inteligentną Kartą, funkcje f i f1 wykorzystują klucze, które są przeniesione z Inteligentnej Karty, przy czym sama Inteligentna Karta zawiera:
- generator liczb dla wygenerowania losowej wartości zmiennej T umieszczonej w chronionym oprogramowaniu,
- tajny klucz dla funkcji rozszyfrowującej g'1
- algorytm dla funkcji rozszyfrowującej g , oraz
- jeden lub więcej kluczy dla funkcji f i f 1
Należy zauważyć, że funkcja szyfrująca g i funkcja rozszyfrowująca gd stanowią system szyfrujący z kluczem publicznym, który nie jest symetryczny. Oznacza to, że funkcja szyfrująca g stosuje klucz publiczny, który może być znany, tym niemniej nie jest on wystarczający do zastosowania funkcji rozszyfrowującej g'1 (ani jej algorytmu, ani jego klucza) . Stąd algorytm i klucz dla funkcji rozszyfrowującej g'1 są umieszczone na Inteligentnej Karcie, z której nie są nigdy przekazywane.
Jest wymagane, aby funkcje f, f', g, g'1 były przemienne (tzn. były zamienne bez zmiany wartości). Oznacza to, że muszą one posiadać następującą właściwość:
fWtffeW))) = x.
Przy zastosowaniu w komputerze chronionego w ten sposób programu, program rozpoczyna się w zwykły sposób (fig.7). Przez komunikację z Inteligentną Kartą wartość zmiennej T i klucze dla funkcji f i f 1 są wprowadzone do oprogramowania.
Następnie wykonanie programu jest kontynuowane w zwykły sposób. W momencie, gdy wykonanie programu osiąga zaszyfrowany parametr ((g( 10) w przedstawionym przykładzie) wartość (g(10)+T) jest wysłane do oprogramowania specjalnego, które dalej przekazuje f(g(10)+T)-T) do Inteligentnej Karty. W Inteligentnej Karcie obliczona jest wartość g‘ ((10+T)-T), i wartość ta jest zwTacana do oprogramowania specjalnego. Za pomocą oprogramowania specjalnego obliczona zostaje wartość f _ (g_ ((10) +T) -T))), która jest równa x i x+T i wynik ten jest dostarczony do programu jako parametr C dla wykorzystania w programie.
Przez opracowanie, zgodnie z wynalazkiem, układu typu szyfrująco-rozszyfrowującego, osiągnięte zostały następujące korzyści i możliwości:
- ogromna elastyczność przez użycie Inteligentnej Karty.
- licencjonowanie Inteligentnej Karty (tzn. udzielenie licencji użytkownikom) może być realizowane przez importerów lub sprzedawców oprogramowania. Inteligentna Karta może wtedy zawierać licencję, lub zgodę, na kilku poziomach pakietów komputerowych, które mają ten sam format legalizacji i algorytmy.
- pierwszy poziom szyfrowania wykorzystuje niesymetryczny układ szyfrowania z dwoma kluczami (system szyfrowania z kluczem publicznym/prywatnym), taki jak system szyfrowania RSA, przy czym klucz publiczny jest dostępny tylko dla producenta oprogramowania, a klucz
187 088 prywatny jest tajnym kluczem, który producent Inteligentnych Kart wprowadza do pamięci stałej (ROM) Inteligentnej Karty, zgodnie z wyszczególnieniem podanym przez producenta oprogramowania. Klucz prywatny może być różny dla każdego pakietu programów.
- niesymetryczny, zaszyfrowany klucz legalizujący, który jest przesłany do Inteligentnej Karty, gdy rozpoczyna się działanie chronionego programu i który jest zaszyfrowany na Inteligentnej Karcie za pomocą prywatnego klucza nr 0, dla rozpoczęcia procesu legalizacji w Inteligentnej Karcie.
- szyfrowanie na poziomie kodu źródłowego, co uniezależnia układ od systemu operacyjnego. Przez szyfrowanie małych części lub fragmentów, tylko plików, jak na przykład plików rozkazowych, trudno jest określić te części oprogramowania, które są zaszyfrowane, jako cel ataku w ten lub inny sposób. Ponadto algorytm rozszyfrowujący i klucze są łatwo wprowadzane do Inteligentnej Karty.
- drugi poziom szyfrowania podczas komunikacji między komputerem głównym i Inteligentną Karltą jest taki, że staje się trudne wyśledzenie czegoś mającego sens w tej komunikacji przez jego załogowanie. Zastosowane algorytmy są ulokowane tak w ochranianym oprogramowaniu jak i Inteligentnej Karcie, a oba klucze szyfrujące i klucze rozszyfrowujące są umieszczone na Inteligentnej Karcie, tzn. ukryte dla użytkownika. Algorytm szyfrujący i klucz mogą być różne dla różnych typów oprogramowania.
Figura 10 służy demonstracji faktu, że obszar zastosowań układu zgodnie z wynalazkiem może być rozszerzony i pokrywać na przykład również takie zastosowania jak sprawdzenie prawa dostępu lub legalizacji, ponieważ mogą istnieć również dalsze możliwości. W takim przedmiocie wykonania wynalazku, ochraniane oprogramowaniem może zawierać klucz legalizujący, zaszyfrowany za pomocą tzw. klucza publicznego i numer identyfikujący dla dyskutowanego oprogramowania. Wtedy jednostka zewnętrzna, jak na przykład Inteligentna Karta, mogłaby zawierać algorytmy rozszyfrowujące, którymi korzystnie są ROM'y wykonane według matrycy i prywatny klucz nr 0 (w ROM'ie), dla użycia przy rozszyfrowywaniu klucza legalizującego, jak również dostęp do tablicy legalizującej, która może być skonfigurowana jak tablica pokazana poniżej.
PID (Numer Identyf ikacyjny) AcL (Poziom Dostępu) PK (Klucz prywatny)
PID (1) AcL (1) PK (1)
PID (2) AcL (2) PK (2)
PID (3) AcL (3) PK (3)
PID (n) AcL (n) PK (n)
W tabeli, PID oznacza numer identyfikacyjny oprogramowania, w ten sposób różne programy mają przyporządkowane różne numery identyfikacyjne, które mogą również zawierać na przykład numer wersji odpowiedniego oprogramowania, lub podobną informację. AcL oznacza poziom dostępu lub status, takie jak:
- dwa różne poziomy, a mianowicie pozwolenie dostępu i brak pozwolenia dostępu,
- ograniczona liczba uruchomień odpowiedniego oprogramowania,
- dostęp jedynie do skróconej wersji programu, tzw. wariant demonstracyjny.
Na przykład, wprowadzone dane do kolumny Poziom Dostępu mogą być zmienione przez importera lub dystrybutora oprogramowania.
W kolumnie Klucza Prywatnego, producent oprogramowania określa klucze prywatne, które będą stosowane w rozszyfrowywaniu zaszyfrowanych fragmentów w zależności od numeru identyfikacyjnego, PID, oprogramowania. Kluczami prywatnymi są ROM'y wykonane według matrycy w Inteligentnej Karcie i nie są osiągalne dla nikogo innego.
187 088
Figura 11 przedstawia schemat blokowy ilustrujący zasadę całego przebiegu procesu zgodnie z korzystnym wykonaniem wynalazku, z następującymi krokami:
- szyfrowanie kodu źródłowego (gl, kl)
- kodowanie zaszyfrowanych danych (g3, k3)
- przesłanie zakodowanych, zaszyfrowanych danych do jednostki zewnętrznej i tam dekodowanie (g4, k4)
- rozszyfrowanie przesłanych i zdekodowanych danych
- przetwarzanie rozszyfrowanych danych i kodowanie wyniku (g5, k5)
- przesłanie zakodowanych wyników do komputera głównego i tam dekodowanie (g6, k6) i
- wyprowadzenie rozszyfrowanego wyniku dla dalszego wykorzystania.
W przykładach wykonania wynalazku, Inteligentna Karta stanowi korzystne zastosowanie jednostki zewnętrznej wskazane w zastrzeżeniach patentowych poniżej. Jest to całkiem oczywiste, ponieważ technologia Inteligentnych Kart jest uważana za najbardziej „zabezpieczoną przed manipulacją przez osoby niepowołane” ochroną algorytmu, kluczy itd., które koniecznie muszą być zapamiętane w jednostce zewnętrznej, lub oddzielnym wyrobie, zgodnie z dołączonymi zastrzeżeniami. Mała liczba producentów takich kart na świecie i duża wartość będąca w dyspozycji użytkowników takich kart, w szczególności kart płatniczych, potwierdza fakt, że wiedza wymagana do fałszowania takich Inteligentnych Kart nie będzie dostępna dla osób mających nieuczciwe intencje. Tym niemniej, nie wyklucza to możliwości rozwoju nowych technik, które mogą w tym samym stopniu, lub nawet w lepszym być wykorzystane dla celów obecnego wynalazku. Dlatego zakres zastrzeżeń patentowych jest rozumiany również jako pokrywający przyszłe jednostki zewnętrzne i oddzielne wyroby wskazane w zastrzeżeniach i mogących zapewnić przynajmniej taki sam stopień bezpieczeństwa jak obecnie preferowana Inteligentna Karta.
187 088
187 088
187 088
Fig.3.
\
Kod
ŻRÓPtOWY
J
KOMPILATOR
KOP WwittW tro&RałF
Ql6lloV^Uv
7evt\
<_y
187 088
Uł <C
187 088
Fig.5.
187 088
Fig.6.
oprogramowanie
ZASZYFROWANĄ
py$K TUMUX LUB CD -ROM cd-rom7 lue> LAW , LlAb \NTPK^tT
OPROGRAMOWANA
SPECJALNE:
RAM
187 088
UJ cJ <=>
PuJ kZ <r x
187 088 ul
187 088
Fig.9.
1NU.LI&EWT1YA
KWTh
187 088
Fig.lOA.
ROG-ftAMOWAWlĄ
WYŚIIT ZASZYFROWANE Poświadczenie hasła Do INTELIGENTNEJ KARTY
ZGODA NA DOSTEZP Ł
Ιήκ
WK5L*3 ZASZYFROWANE FARAMETEY FRAGMENTU #4 po INTELIGENTNE! KARTY 1 ROZSZYFRUJ OTRZYMANY STAMTAp WYNfK
WYSLn ZASZYFfcWfcNE PftCAMETRY FRAGMENTU #2 PO INTELIGENTNE! KARTY 1 ROZ SZY FRUJ OTRzbittAWY STAMTĄD WYNIK
WYSLI! ZASZYFROWANE PAKAMETO FRAGMENTU 143 DO INTELIGENTNE! KARTY l ROZSZYFRUJ OTRZYMANY STAMTĄD WYtflK
KONIEC interfejs miedzy
Komputerem głównym i INTELIGENTNĄ KĄRTfr
187 088
WPrióWAD-t INTŁU&EWTNA Uałte
PO ŁŁYTtV>UA
Fig.10B
I
187 088 ¢=:
£
Ο2 ο
Χ
187 088
LU
Z k1/12 k2
VU
Departament Wydawnictw UP RP. Nakład 50 egz.
Cena 4,00 zł.

Claims (24)

  1. Zastrzeżenia patentowe
    1. Sposób przetwarzania programu, w którym chroni się oprogramowanie przed nielegalnym wykorzystaniem w komputerze, w którym to sposobie szyfruje się przynajmniej część oprogramowania zgodnie z pierwszym algorytmem i rozszyfrowuje się zaszyfrowaną część oprogramowania zgodnie z drugim algorytmem, przy czym drugi algorytm z kluczem używanym w rozszyfrowaniu zaszyfrowanej części zapamiętuje się w jednostce zewnętrznej, przystosowanej do połączenia z komputerem, a jednostka zewnętrzna zawiera przynajmniej odczytywalny komputerowo element z pamięcią i własny procesor, znamienny tym, że wykonuje się rozszyfrowywanie zgodnie z drugim algorytmem (g2) z wykorzystaniem drugiego klucza (k2), zapamiętanego w jednostce zewnętrznej, przy czym drugi klucz różni się od pierwszego klucza (kl) wykorzystywanego przy wykonywaniu szyfrowania wspomnianej części oprogramowania zgodnie z pierwszym algorytmem (gl), przy czym szyfruje się część oprogramowania zgodnie z pierwszym algorytmem (gl) na kodzie źródłowym odpowiedniego oprogramowania przed kompilacją i łączeniem, lub podczas podobnych kroków procesu tworzącego program wykonawczy, a jednocześnie dodaje się do biblioteki danych programu wykonawczego kod wynikowy, związany z komunikacją z jednostką zewnętrzną.
  2. 2. Sposób według zastrz. 1, znamienny tym, że rozszyfrowanie zaszyfrowanej części oprogramowania, które jest wykonywane zgodnie z drugim algorytmem (g2), wykonuje się gdy komputer podczas wykonywania oprogramowania napotka instrukcję wywołania, lub podobną instrukcję, powodującą skok do odpowiadającego mu punktu wejścia kodu wynikowego, przez co ustala się kanał komunikacyjny między komputerem i jednostką zewnętrzną z wykorzystaniem dodanego kodu wynikowego, przez który to kanał komunikacyjny przesyła się zakodowaną część oprogramowania w pierwszej sesji transmisji do jednostki zewnętrznej, dla rozszyfrowania przez własny procesor jednostki, którą to rozszyfrowaną część oprogramowania następnie przetwarza się w jednostce zewnętrznej, a wynik przesyła się w drugiej sesji transmisji w stronę przeciwną, przez kanał komunikacyjny, dla dalszego wykorzystania w komputerze.
  3. 3. Sposób według zastrz. 1, znamienny tym, że dodatkowo część oprogramowania, która jest zaszyfrowana zgodnie z pierwszym algorytmem (gl), przed pierwszą sesją transmisji, koduje się zgodnie z trzecim algorytmem (g3) i trzecim kluczem (k3), przy czym ten trzeci klucz (k3) opiera się na liczbie, którą dla odpowiedniej sesji transmisji wybiera się losowo i generuje w jednostce zewnętrznej, a część oprogramowania, która jest zaszyfrowana zgodnie z pierwszym algorytmem (gl), oraz która jest zakodowana zgodnie z trzecim algorytmem (g3) i przesłana do jednostki zewnętrznej podczas pierwszej sesji transmisji, dekoduje się w jednostce zewnętrznej zgodnie z czwartym algorytmem (g4) i czwartym kluczem (k4), przy czym czwarty klucz (k4) jest oparty na losowo wybranej liczbie dla trzeciego klucza (k3), a czwarty algorytm (g4) jest algorytmem odwrotnym do trzeciego algorytmu (g3).
  4. 4. Sposób według zastrz. 2 albo 3 znamienny tym, że dodatkowo otrzymany wynik w jednostce zewnętrznej w oparciu o część oprogramowania, która jest rozszyfrowana zgodnie z drugim algorytmem (g2) przed pierwszą sesją transmisji, koduje się zgodnie z piątym algorytmem (g5) i piątym kluczem (k5), przy czym piąty klucz (k5) jest oparty na liczbie, którą dla odpowiedniej sesji transmisji wybiera się losowo, a dostarcza się ją z jednostki zewnętrznej, ponadto otrzymany wynik w jednostce zewnętrznej, na podstawie tej części oprogramowania, która jest rozszyfrowana zgodnie z drugim algorytmem (g2), oraz który jest kodowany zgodnie z piątym algorytmem (g5) i przesłany do komputera w drugiej sesji transmisji, dekoduje się w komputerze zgodnie z szóstym algorytmem (g6) i szóstym kluczem (kó), przy czym szósty klucz (k6) jest oparty na wybranej losowo liczbie dla piątego klucza (k5), a szósty algorytm (g6) jest algorytmem odwrotnym do piątego algorytmu (g5).
    187 088
  5. 5. Sposób według zastrz. 4 znamienny tym, że wybrana losowo liczba dla trzeciego i czwartego klucza (k3, k4) i wybrana losowo liczba dla piątego i szóstego klucza (k5, k6) jest tą samą liczbą.
  6. 6. Sposób przetwarzania programu, w którym przygotowuje się oprogramowanie, szczególnie programowanie przeznaczone do bezpłatnego rozprowadzania, dla wykorzystania w komputerze jedynie z odpowiednią autoryzacją, w którym to sposobie szyfruje się zgodnie z pierwszym algorytmem przynajmniej część oprogramowania, która przez wykorzystanie w komputerze jest rozszyfrowana zgodnie z drugim algorytmem, znamienny tym, że klucz który jest zastosowany przy szyfrowaniu zgodnie z pierwszym algorytmem (gl) jest pierwszym kluczem (kl), który różni się od drugiego klucza (k2) stosowanego w wykonywaniu rozszyfrowania zgodnie z drugim algorytmem (g2) części oprogramowania, która jest szyfrowana zgodnie z pierwszym algorytmem i kluczem, przy czym szyfrowanie części oprogramowania zgodnie z pierwszym algorytmem (gl) wykonuje się dla samego kodu źródłowego odpowiedniego oprogramowania przed kompilacją i łączeniem dla uzyskania programu wykonawczego, lub w podobnych krokach procesu tworzącego program wykonawczy, a jednocześnie kod wynikowy dodaje się do biblioteki danych programu wykonawczego, w odniesieniu do komunikacji z jednostką zewnętrzną przystosowaną do połączenia z komputerem.
  7. 7. Sposób według zastrz. 6, znamienny tym, że przy kompilowaniu i/lub łączeniu kodu źródłowego dla stworzenia programu wykonawczego, lub przy tworzeniu programu wykonawczego w procesie o podobnych krokach, wprowadza się ciągi instrukcji wywołania, lub podobne instrukcje, które w czasie wykonywania programu wykonawczego powodują skok do odpowiadających im punktów wejścia wspomnianego kodu wynikowego, a kodu wynikowego używa się dla stworzenia kanału komunikacyjnego między komputerem i jednostką zewnętrzną, w której ma miejsce rozszyfrowanie zgodnie z drugim algorytmem (g2).
  8. 8. Sposób według zastrz. 7, znamienny tym, że dodatkowo trzeci klucz (k3) wprowadza się do części oprogramowania, która jest zaszyfrowana zgodnie z pierwszym algorytmem (gl), przy czym trzeci klucz (k3) jest przeznaczony dla zastosowania w trzecim algorytmie (g3), dla kodowania części oprogramowania przed jej przesłaniem do jednostki zewnętrznej.
  9. 9. Sposób przetwarzania programu, w którym umożliwia się autoryzację oprogramowania w komputerze, szczególnie oprogramowania przeznaczonego do bezpłatnego rozprowadzania, w którym to sposobie szyfruje się przynajmniej część oprogramowania zgodnie z pierwszym algorytmem, a jednostka zewnętrzna jest dołączona do komputera, przy czym jednostka zewnętrzna zawiera przynajmniej odczytywalny komputerowo element z pamięcią i własny procesor, oraz drugi algorytm i klucz wykorzystywany w rozszyfrowaniu zaszyfrowanej części oprogramowania, zapamiętany w jednostce zewnętrznej, znamienny tym, że gdy wykonanie przez komputer części oprogramowania, które jest zaszyfrowane zgodnie z pierwszym algorytmem (gl) napotyka instrukcję wywołania lub podobną instrukcję, powoduje skok do odpowiedniego punktu wejścia kodu wynikowego, ten kod wynikowy wykorzystuje się za pomocą komputera dla ustanowienia kanału komunikacyjnego do jednostki zewnętrznej, poprzez ten kanał zaszyfrowaną część oprogramowania przesyła się w pierwszej sesji transmisji do jednostki zewnętrznej dla rozszyfrowania przez własny procesor jednostki zgodnie z drugim algorytmem (g2) i drugim kluczem (k2), które są zapamiętane w jednostce zewnętrznej, ten drugi klucz (k2) różni się od pierwszego klucza (kl) wykorzystywanego w wykonaniu szyfrowania części oprogramowania zgodnie z pierwszym algorytmem (gl), a zaszyfrowaną część oprogramowania przetwarza się następnie w jednostce zewnętrznej i wynik przesyła się w drugiej sesji transmisji w przeciwnym kierunku przez kanał komunikacyjny, dla dalszego wykorzystania w komputerze.
  10. 10. Sposób według eastrz . 9, znamienny tym, że koduje się, zgodnie z trze cim algorytmem (g3) i trzecim kluczem (k3), przed pierwszą sesją transmisji do przyłączonej jednostki zewnętrznej, tę część oprogramowania, która jest szyfrowana zgodnie z pierwszym algorytmem (gl2), przy czym trzeci klucz jest oparty na losowo wybranej liczbie dla odpowiedniej sesji transmisji i pożądane jest aby był dostarczony przez jednostkę zewnętrzną, a część oprogramowania, która jest zaszyfrowana zgodnie z pierwszym algorytmem (gl), i która jest kodowana zgodnie z trzecim algorytmem (g3) i przesłana do jednostki zewnętrznej w pierwszej
    187 088 sesji transmisji, dekoduje się w jednostce zewnętrznej zgodnie z czwartym algorytmem (g4) i czwartym kluczem (k4), przy czym czwarty klucz jest oparty na losowo wybranej liczbie dla trzeciego klucza (k3) , a czwarty algorytm (g4) jest algorytmem odwrotnym do trzeciego algorytmu (g3).
  11. 11. Sposób według zastrz. 10 znamienny tym, że dodatkowo wynik uzyskany w jednostce zewnętrznej na podstawie tej części oprogramowania, która jest rozszyfrowana zgodnie z drugim algorytmem (g2), przed drugą sesją transmisji, koduje się zgodnie z piątym algorytmem (g5) i piątym kluczem (k5) bazującym na losowo wybranej liczbie dla odpowiedniej sesji transmisji, dostarczanym przez jednostkę zewnętrzną, a wynik uzyskany w jednostce zewnętrznej na podstawie części oprogramowania, która jest rozszyfrowana zgodnie z drugim algorytmem (g2), i która jest zakodowana zgodnie z piątym algorytmem (g5) i przesłana w drugiej sesji transmisji do komputera, dekoduje się za pomocą komputera zgodnie z szóstym algorytmem (g6) i kluczem (k6), który to klucz (k6) jest oparty na wybranej losowo liczbie dla piątego klucza (k5), a szósty algorytm (g6) jest algorytmem odwrotnym do piątego algorytmu (g5).
  12. 12. Sposób według zastrz. 9, znamienny tym, że pierwszy i drugi algorytm (gl, g2) oraz pierwszy i drugi klucz (kl, k2) określa się zgodnie z niesymetrycznym dualnym układem szyfrującym (system szyfrowania z kluczem-publicznym/kluczem-prywatnym), zwłaszcza system szyfrowania RSA, przy czym stosuje się jako pierwszy klucz (kl) klucz znany (klucz publiczny), a jako drugi klucz (k2) klucz tajny (klucz prywatny) układu szyfrującego.
  13. 13. Sposób według zastrz. 12, znamienny tym, że tak dobiera się część oprogramowania przeznaczoną do zaszyfrowania zgodnie z pierwszym algorytmem (gl), że ma decydujący wpływ na korzystanie z odpowiedniego oprogramowania w komputerze i zawiera jedną lub więcej instrukcji w pliku rozkazowym lub pliku wykonawczym .COM lub .EXE.
  14. 14. Urządzenie do przetwarzania programu, do przygotowywania oprogramowania, szczególnie oprogramowania przeznaczonego dla bezpłatnego rozprowadzania, dla użytkowania w komputerze jedynie z odpowiednią autoryzacją, które to urządzenie jest zaopatrzone w element szyfrujący, powodujący szyfrowanie przynajmniej części oprogramowania zgodnie z pierwszym algorytmem i pierwszy kluczem, oraz jednostkę zewnętrzną przyłączaną do komputera, przy czym jednostka zewnętrzna ma przynajmniej swój własny procesor i odczytywalny komputerowo element z pamięcią dla zapamiętania drugiego algorytmu i klucza, która rozszyfrowuje zaszyfrowaną część oprogramowania zgodnie z drugim algorytmem i kluczem, znamienne tym, że jest ponadto zaopatrzone w element generujący dla zapewnienia drugiego algorytmu (g2) i drugiego klucza (k2) przeznaczonego do wykorzystania w rozszyfrowaniu zgodnie z drugim algorytmem (g2), przy czym drugi klucz różni się od pierwszego klucza (kl) wykorzystywanego przez element szyfrujący w wykonywaniu szyfrowania części oprogramowania zgodnie z pierwszym algorytmem (gl), przy czym element szyfrujący jest przystosowany do wykonywania szyfrowania części oprogramowania zgodnie z pierwszym algorytmem (gl) na samym kodzie źródłowym odpowiedniego oprogramowania, przed jego kompilowaniem i łączeniem, lub przed jakąkolwiek inną zamianą na program wykonawczy, a element szyfrujący jest dostosowany do jednoczesnego spowodowania dodania do biblioteki danych kodu wynikowego, związanego z komunikacją z jednostką zewnętrzną.
  15. 15. Urządzenie zgodnie z zastrz. 14, znamienne tym, że element szyfrujący jest przystosowany do wprowadzenia w czasie kompilacji i/lub łączenia kodu źródłowego dla stworzenia programu wykonawczego, lub w trakcie podobnego procesu tworzącego program wykonawczy, ciągu wywołań lub podobnych instrukcji, które w czasie wykonania programu wykonawczego w komputerze, powodują skok do odpowiedniego punktu wejścia dodanego kodu wynikowego, który komputer następnie wykorzystuje dla ustanowienia kanału komunikacyjnego do przyłączonej jednostki zewnętrznej.
  16. 16. Urządzenie według zastrz. 15, znamienne tym, że element szyfrujący jest przystosowany do wprowadzenia do części oprogramowania, które jest szyfrowane zgodnie z pierwszym algorytmem (gl), trzeciego klucza (k3) przeznaczonego do wykorzystania w trzecim algorytmie (g3) do kodowania części oprogramowania przed przesłaniem do jednostki zewnętrznej.
  17. 17. Urządzenie do przetwarzania programu, umożliwiające autoryzację użytkowania oprogramowania, szczególnie oprogramowania przeznaczonego dla bezpłatnego rozprowa187 088 dzania, składające się z komputera przystosowanego do pełnienia roli komputera głównego dla jednostki zewnętrznej, który zawiera przynajmniej swój własny procesor oraz odczytywalny komputerowo element z pamięcią, a przeznaczone do połączenia z komputerem głównym dla komunikacji z nim, znamienne tym, że jednostka zewnętrzna jest zaopatrzona w element szyfrujący przystosowany do wykonywania rozszyfrowania zgodnie z drugim algorytmem (g2) i drugim kluczem (k2) wytworzonym przez element generujący, przy czym drugi klucz różni się od pierwszego klucza (kl) użytego przez element szyfrujący w wykonaniu szyfrowania części oprogramowania zgodnie z pierwszym algorytmem (gl).
  18. 18. Urządzenie według zastrz. 17, znamienne tym, że element rozszyfrowujący jest przystosowany do wykonywania rozszyfrowania zgodnie z drugim algorytmem (g2), gdy komputer główny przy wykonywaniu części oprogramowania, które jest zaszyfrowane zgodnie z pierwszym algorytmem (gl), napotyka ciąg wywołań, lub podobnych instrukcji, które zapewniają skok do odpowiedniego punktu wejściowego dodanego kodu wynikowego, komputer główny używa tego kodu wynikowego do ustanowienia kanału komunikacyjnego do jednostki zewnętrznej, przez który komputer powoduje przesłanie zaszyfrowanej części oprogramowania, w pierwszej sesji transmisji, do jednostki zewnętrznej i podlegającej wspomnianemu rozszyfrowaniu, a ponadto procesor własny jednostki zewnętrznej jest przystosowany do przeprowadzenia rozszyfrowania części oprogramowania i powoduje, że otrzymany wynik jest przesłany w kierunku przeciwnym, w drugiej sesji transmisji, przez kanał komunikacyjny, dla dalszego wykorzystania wyniku w komputerze.
  19. 19. Urządzenie według zastrz. 18, znamienne tym, że jednostka zewnętrzna zawiera element dekodujący do dekodowania, zgodnie z czwartym algorytmem (g4) i czwartym kluczem (k4), części oprogramowania zaszyfrowanego zgodnie z pierwszym algorytmem (gl), która przed pierwszą sesją transmisji jest kodowana przez komputer główny zgodnie z trzecim algorytmem (g3) i przesłana do jednostki zewnętrznej w pierwszej sesji transmisji, trzeci klucz (k3) jest użyty przez komputer główny w kodowaniu opartym na losowo wybranej liczbie dla odpowiedniej sesji transmisji i korzystnie dostarczony przez generator liczb w jednostce zewnętrznej, a czwarty klucz (k4) użyty przez element dekodujący w jednostce zewnętrznej jest oparty na tej samej losowo wybranej liczbie, jak ta dla trzeciego klucza (k3), a czwarty algorytm jest algorytmem odwrotnym do trzeciego algorytmu (g3).
  20. 20. Urządzenie według zastrz. 19, znamienne tym, że jednostka zewnętrzna jest ponadto zaopatrzona w element kodujący do kodowania, przed drugą sesją transmisji, zgodnie z piątym algorytmem (g5) i piątym kluczem (k5), wyniku otrzymanego w jednostce zewnętrznej na podstawie tej części oprogramowania, które urządzenie rozszyfrowało zgodnie z drugim algorytmem (g2), wspomniany piąty klucz użyty przez element kodujący jest oparty na liczbie, która została wybrana losowo dla odpowiedniej sesji transmisji i korzystnie wytwarzanej przez generator liczb w jednostce zewnętrznej, komputer główny jest w stanie dekodować zgodnie z szóstym algorytmem i szóstym kluczem wspomniany wynik, otrzymany w jednostce zewnętrznej, dla dalszego wykorzystania w komputerze głównym, wynik ten przed drugą sesją transmisji jest kodowany zgodnie z piątym algorytmem (g5) za pomocą podzespołu elementu kodującego w jednostce zewnętrznej i przesłany do komputera w drugiej sesji transmisji, przy czym szósty klucz (k6) jest oparty na tej samej losowo wybranej liczbie jak piąty klucz (k5), a szósty algorytm (g6) jest algorytmem odwrotnym do piątego algorytmu (g5).
  21. 21. Urządzenie według zastrz. 20, znamienne tym, że jednostka zewnętrzna zawiera element pośredniczący i oddzielny zespół, korzystnie wykonany z materiału zabezpieczającego przed manipulacją, w którym umieszczone są układy elektroniczne, które zawierają przynajmniej procesor jednostki zewnętrznej i pamięć do czytania przez komputer, a które są tak rozmieszczone, że jest ustanowiony kanał komunikacyjny między układami oddzielnego zespołu i komputerem głównym, gdy zespół jest wsunięty do szczeliny elementu pośredniczącego, lub jest połączony w inny sposób z elementem pośredniczącym, przy czym drugi algoiytm (g2) i drugi klucz (k2) są korzystnie zapamiętane w pamięci w taki sposób, że nie mogą być czytane przez inne układy niż procesor oddzielnego zespołu i nigdy nie staną się osiągalne na zewnątrz oddzielnego zespołu.
    187 088
  22. 22. Urządzenie według zastrz. 21, znamienne tym, że oddzielny zespół ma postać małej płytki, takiej jak karta plastikowa, mającej kształt zwykłej karty kredytowej lub Inteligentnej Karty, a element pośredniczący zawiera stację czytnika kart dla płytek, która wariantowo jest wprowadzona do komputera głównego lub urządzenia peryferyjnego z nim połączonego.
  23. 23. Urządzenie według zastrz. 21, znamienne tym, że oddzielny zespół przyjmuje formę karty z układem elektronicznym, przystosowanej do umieszczania w położeniu karty lub szczeliny, występującej w komputerze głównym dla kart rozszerzających, karty sieciowej, w przypadku przenośnych komputerów głównych, skonfigurowanej zgodnie z jednym ze standardów dla wkładanych kart, jak standard PCMCIA.
  24. 24. Urządzenie według zastrz. 21, znamienne tym, że oddzielny zespół ma postać elektronicznej zwory sprzętowej, przy czym, element pośredniczący zawiera wówczas końcówkę wejście-wyjście komputera głównego.
PL96324525A 1995-07-13 1996-07-10 Sposób i urządzenie do przetwarzania programu PL187088B1 (pl)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NO952795A NO302388B1 (no) 1995-07-13 1995-07-13 Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
PCT/NO1996/000171 WO1997003398A1 (en) 1995-07-13 1996-07-10 Protection of software against use without permit

Publications (2)

Publication Number Publication Date
PL324525A1 PL324525A1 (en) 1998-06-08
PL187088B1 true PL187088B1 (pl) 2004-05-31

Family

ID=19898393

Family Applications (1)

Application Number Title Priority Date Filing Date
PL96324525A PL187088B1 (pl) 1995-07-13 1996-07-10 Sposób i urządzenie do przetwarzania programu

Country Status (17)

Country Link
US (3) US6266416B1 (pl)
EP (2) EP0855052B1 (pl)
JP (1) JP4267065B2 (pl)
KR (1) KR19990028931A (pl)
CN (1) CN1155866C (pl)
AT (1) ATE233916T1 (pl)
AU (1) AU713872B2 (pl)
DE (1) DE69626530T2 (pl)
DK (1) DK0855052T3 (pl)
ES (1) ES2194109T3 (pl)
HK (2) HK1009533A1 (pl)
IL (1) IL122888A (pl)
NO (1) NO302388B1 (pl)
NZ (1) NZ313319A (pl)
PL (1) PL187088B1 (pl)
PT (1) PT855052E (pl)
WO (1) WO1997003398A1 (pl)

Families Citing this family (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
US6523119B2 (en) * 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
FR2760871B1 (fr) * 1997-03-13 1999-04-16 Bull Cp8 Procede de stockage et d'exploitation d'une information sensible dans un module de securite, et module de securite associe
SG67401A1 (en) * 1997-07-07 1999-09-21 Low Huan Khing A method and system for protecting intellectual property products distributed in mass market
US6442276B1 (en) 1997-07-21 2002-08-27 Assure Systems, Inc. Verification of authenticity of goods by use of random numbers
US6643775B1 (en) * 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
DE69830834T2 (de) 1998-01-20 2006-01-26 Fujitsu Ltd., Kawasaki Datenspeicheranordnung und Steuerverfahren dafür
EP1004979A1 (en) * 1998-11-24 2000-05-31 CANAL+ Société Anonyme Portable electronic card
US7140005B2 (en) * 1998-12-21 2006-11-21 Intel Corporation Method and apparatus to test an instruction sequence
US7730300B2 (en) 1999-03-30 2010-06-01 Sony Corporation Method and apparatus for protecting the transfer of data
US6697489B1 (en) 1999-03-30 2004-02-24 Sony Corporation Method and apparatus for securing control words
JP2001016195A (ja) * 1999-04-27 2001-01-19 Matsushita Electric Ind Co Ltd 情報利用制御装置
FR2793050B1 (fr) * 1999-04-28 2001-08-17 Fingerprint Procede pour securiser un logiciel d'utilisation a partir d'une unite de traitement et de memorisation d'un secret et systeme en faisant application
US7036738B1 (en) 1999-05-03 2006-05-02 Microsoft Corporation PCMCIA-compliant smart card secured memory assembly for porting user profiles and documents
US7117369B1 (en) * 1999-05-03 2006-10-03 Microsoft Corporation Portable smart card secured memory system for porting user profiles and documents
US6681214B1 (en) * 1999-06-29 2004-01-20 Assure Systems, Inc. Secure system for printing authenticating digital signatures
JP4127587B2 (ja) * 1999-07-09 2008-07-30 株式会社東芝 コンテンツ管理方法およびコンテンツ管理装置および記録媒体
US7351919B1 (en) * 1999-07-15 2008-04-01 Thomson Licensing Port cover for limiting transfer of electromagnetic radiation from a port defined in a host device
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
EP1076279A1 (en) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
GB9922665D0 (en) 1999-09-25 1999-11-24 Hewlett Packard Co A method of enforcing trusted functionality in a full function platform
US6912513B1 (en) * 1999-10-29 2005-06-28 Sony Corporation Copy-protecting management using a user scrambling key
US7039614B1 (en) 1999-11-09 2006-05-02 Sony Corporation Method for simulcrypting scrambled data to a plurality of conditional access devices
US6304972B1 (en) * 2000-01-03 2001-10-16 Massachusetts Institute Of Technology Secure software system and related techniques
DE10003086A1 (de) * 2000-01-25 2001-08-02 Infineon Technologies Ag Datenverarbeitungssystem
SE0000871L (sv) * 2000-03-13 2001-09-14 Oerjan Vestgoete Ett förfarande och system för att vid elektronisk handel förhindra ej auktoriserad användning av programvara
KR20000053933A (ko) * 2000-05-10 2000-09-05 류종렬 소프트웨어의 정품인증시스템 및 그 방법
DE10023820B4 (de) * 2000-05-15 2006-10-19 Siemens Ag Software-Schutzmechanismus
WO2001088817A1 (en) * 2000-05-17 2001-11-22 Smart Modular Technologies, (Ma) Inc. Fee management for programming of electronic devices
WO2002005203A1 (fr) * 2000-07-07 2002-01-17 Fujitsu Limited Dispositif terminal pour carte a circuit integre
MD1871G2 (ro) * 2000-07-28 2002-08-31 Компания ДЕКАРТ с ограниченной ответственностью Procedeu de protecţie contra copierii bazelor de date şi a programelor pentru calculator
JP4067757B2 (ja) * 2000-10-31 2008-03-26 株式会社東芝 プログラム配布システム
JP2004537095A (ja) * 2001-04-24 2004-12-09 ヒューレット・パッカード・カンパニー 情報セキュリティシステム
DK1305708T3 (da) 2001-05-11 2003-07-14 Sospita As Rækkefølge-nummereringsmekanisme til at sikre integriteten af eksekveringsrækkefølgen for indbyrdes afhængige smartcard-applikationer
US20030142827A1 (en) * 2001-05-15 2003-07-31 Minoru Ohwada Contents reproducing apparatus, content distribution server, and content distribution system
US7895616B2 (en) 2001-06-06 2011-02-22 Sony Corporation Reconstitution of program streams split across multiple packet identifiers
US7124303B2 (en) 2001-06-06 2006-10-17 Sony Corporation Elementary stream partial encryption
US7747853B2 (en) 2001-06-06 2010-06-29 Sony Corporation IP delivery of secure digital content
US7146340B1 (en) * 2001-07-25 2006-12-05 Novell, Inc. Method and systems for licensing electronic data
KR100435918B1 (ko) * 2001-11-09 2004-06-16 주식회사 휴맥스 디지털 방송 프로그램에서의 데이터 암호화 기록 방법
CA2473122A1 (en) * 2001-11-12 2003-03-20 Network Research Lab Limited Method and device for protecting information against unauthorised use
CA2363795A1 (en) * 2001-11-26 2003-05-26 Cloakware Corporation Computer system protection by communication diversity
EP1456995B1 (en) * 2001-12-21 2012-01-18 Sony Computer Entertainment Inc. Methods and apparatus for secure distribution of program content
KR20030055713A (ko) * 2001-12-27 2003-07-04 한국전자통신연구원 디지털 컨텐츠 저작권 보호 장치 및 방법
US7765567B2 (en) 2002-01-02 2010-07-27 Sony Corporation Content replacement by PID mapping
US7823174B2 (en) 2002-01-02 2010-10-26 Sony Corporation Macro-block based content replacement by PID mapping
JP2003280754A (ja) * 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
US7162644B1 (en) 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US20030200449A1 (en) * 2002-04-17 2003-10-23 International Business Machines Corporation Method of accessing a shared subroutine of computer system
US20030217280A1 (en) * 2002-05-17 2003-11-20 Keaton Thomas S. Software watermarking for anti-tamper protection
US7093119B2 (en) 2002-07-16 2006-08-15 International Business Machines Corporation Methods and computer program products for protecting source code of an interpreted programming language
WO2004012378A2 (en) * 2002-07-30 2004-02-05 Digital Interactive Streams, Inc. Digital content security system and method
DE60301782T2 (de) * 2002-08-01 2006-05-24 Matsushita Electric Industrial Co., Ltd., Kadoma Apparate und verfahren zum entschüsseln von verschlüsselten datenblöcken und zum lokalisieren der verschlüsselten datenblöcke im für die ausführung verwendeten speicherbereich
GB2392262A (en) * 2002-08-23 2004-02-25 Hewlett Packard Co A method of controlling the processing of data
US8818896B2 (en) 2002-09-09 2014-08-26 Sony Corporation Selective encryption with coverage encryption
US8572408B2 (en) 2002-11-05 2013-10-29 Sony Corporation Digital rights management of a digital device
US7724907B2 (en) 2002-11-05 2010-05-25 Sony Corporation Mechanism for protecting the transfer of digital content
AR042599A1 (es) * 2002-11-19 2005-06-29 Schiavoni Juan Jose Metodo de proteccion de programas y equipo para realizarlo
JP2004171367A (ja) * 2002-11-21 2004-06-17 Matsushita Electric Ind Co Ltd 回路動作シミュレーション装置、回路動作シミュレーション方法、回路動作シミュレーションプログラム、および回路情報復号化プログラム
JP3878542B2 (ja) * 2002-11-29 2007-02-07 株式会社東芝 記録装置
US8645988B2 (en) 2002-12-13 2014-02-04 Sony Corporation Content personalization for digital content
US8667525B2 (en) 2002-12-13 2014-03-04 Sony Corporation Targeted advertisement selection from a digital stream
EP1439446B1 (de) * 2003-01-14 2006-03-29 Aladdin Knowledge Systems GmbH&amp; Co. KG Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
CA2536502A1 (en) * 2003-08-29 2005-03-10 Tgbw Inc. Flash memory distribution of digital content
US7424620B2 (en) * 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US7353499B2 (en) * 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US7415618B2 (en) * 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US20050069138A1 (en) * 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Application program obfuscation
US20050071656A1 (en) * 2003-09-25 2005-03-31 Klein Dean A. Secure processor-based system and method
US7363620B2 (en) * 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US8220058B2 (en) * 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7853980B2 (en) 2003-10-31 2010-12-14 Sony Corporation Bi-directional indices for trick mode video-on-demand
US20070198857A1 (en) * 2003-12-22 2007-08-23 Koninklijke Philips Electronic, N.V. Software execution protection using an active entity
US20050216548A1 (en) * 2004-03-04 2005-09-29 Brian Wormington Method and system for digital content distribution
FR2867635B1 (fr) * 2004-03-11 2006-09-22 Oberthur Card Syst Sa Procede de traitement de donnees securise, base notamment sur un algorithme cryptographique
EP1766545A2 (en) * 2004-07-02 2007-03-28 Philips Intellectual Property & Standards GmbH Security unit and method for protecting data
US20060020552A1 (en) * 2004-07-26 2006-01-26 James Sloan Copy-restriction system for digitally recorded, computer disk-based music recordings
US8041190B2 (en) 2004-12-15 2011-10-18 Sony Corporation System and method for the creation, synchronization and delivery of alternate content
US7895617B2 (en) 2004-12-15 2011-02-22 Sony Corporation Content substitution editor
US20060137016A1 (en) * 2004-12-20 2006-06-22 Dany Margalit Method for blocking unauthorized use of a software application
CN100373376C (zh) * 2005-01-21 2008-03-05 深圳市致芯微电子有限公司 加密芯片、利用该加密芯片的cpu程序加密方法和系统
US8539587B2 (en) 2005-03-22 2013-09-17 Hewlett-Packard Development Company, L.P. Methods, devices and data structures for trusted data
EP1717723A1 (en) * 2005-04-29 2006-11-02 ST Incard S.r.l. Improved virtual machine or hardware processor for IC-card portable electronic devices
JP2007065850A (ja) * 2005-08-30 2007-03-15 Fujitsu Ltd 情報処理装置、情報処理方法およびプログラム
US20070074050A1 (en) * 2005-09-14 2007-03-29 Noam Camiel System and method for software and data copy protection
JP4631658B2 (ja) * 2005-11-09 2011-02-16 ソニー株式会社 デジタル放送受信システム及びデジタル放送受信装置
CN100446016C (zh) * 2005-11-17 2008-12-24 北京兆维电子(集团)有限责任公司 一种实现数据安全保护的系统
US7991159B2 (en) * 2005-12-09 2011-08-02 Alcatel-Lucent Usa Inc. Layered mobile application security system
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
EP1798653B1 (de) * 2005-12-16 2011-08-03 Aladdin Europe GmbH Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
US8185921B2 (en) 2006-02-28 2012-05-22 Sony Corporation Parental control of displayed content using closed captioning
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
RU2296363C1 (ru) * 2006-04-27 2007-03-27 Общество с ограниченной ответственностью "АСТРОМА" Способ и средство защиты программного обеспечения от несанкционированного использования
US8963932B1 (en) 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
CN100428262C (zh) * 2006-09-22 2008-10-22 中山大学 一种基于改进的一次一密乱码本的软件保护方法
US20080133419A1 (en) * 2006-12-05 2008-06-05 Brian Wormington Secure financial transaction system and method
US8479020B2 (en) * 2007-07-25 2013-07-02 Motorola Mobility Llc Method and apparatus for providing an asymmetric encrypted cookie for product data storage
DE102007059798B3 (de) * 2007-12-11 2009-04-09 Ascolab Gmbh Verfahren zur Verschlüsselung von ausführbarem Programmcode, insbesondere als Schutz gegen unautorisierte Vervielfältigung, Manipulation und unautorisierten Betrieb
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
JP5037422B2 (ja) * 2008-04-30 2012-09-26 株式会社リコー 画像形成装置、アクセス制御方法、及びアクセス制御プログラム
KR101224717B1 (ko) * 2008-12-26 2013-01-21 에스케이플래닛 주식회사 소프트웨어 라이센스 보호 방법과 그를 위한 시스템, 서버,단말기 및 컴퓨터로 읽을 수 있는 기록매체
KR101049718B1 (ko) * 2008-12-29 2011-07-19 에스케이 텔레콤주식회사 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체
WO2011013120A1 (en) * 2009-07-30 2011-02-03 Rascalim Software Security Ltd. System and method for limiting execution of software to authorized users
US9754115B2 (en) 2011-03-21 2017-09-05 Irdeto B.V. System and method for securely binding and node-locking program execution to a trusted signature authority
US20150324597A1 (en) 2011-08-05 2015-11-12 Kpit Technologies Ltd. A system for protection of embedded software codes
US9489541B2 (en) * 2011-09-09 2016-11-08 Nvidia Corporation Content protection via online servers and code execution in a secure operating system
ITMI20120561A1 (it) 2012-04-05 2013-10-06 St Microelectronics Srl Metodo per proteggere un programma applicativo
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9471456B2 (en) 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
CN103324871A (zh) * 2013-05-23 2013-09-25 董礼貌 一种软件万变链接设备、系统和方法
CN104462990B (zh) * 2013-09-13 2019-02-26 腾讯科技(深圳)有限公司 字符串加解密方法和装置
JP6287964B2 (ja) * 2015-06-09 2018-03-07 株式会社デンソー ソフトウェア複製防止システム
US9881142B2 (en) * 2015-09-11 2018-01-30 Patrick Robert Koren Method and apparatus for preventing and investigating software piracy
US11829454B2 (en) * 2018-03-09 2023-11-28 Patrick Robert Koren Method and apparatus for preventing and investigating software piracy
KR102052489B1 (ko) * 2017-06-23 2019-12-05 미쓰비시덴키 가부시키가이샤 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴
US20220374512A1 (en) * 2021-05-21 2022-11-24 Vmware, Inc. Software-based hardware security module (hsm) for a virtualized computing environment

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2523745B1 (fr) * 1982-03-18 1987-06-26 Bull Sa Procede et dispositif de protection d'un logiciel livre par un fournisseur a un utilisateur
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US4799258A (en) * 1984-02-13 1989-01-17 National Research Development Corporation Apparatus and methods for granting access to computers
GB2163577B (en) 1984-08-23 1988-01-13 Nat Res Dev Software protection device
GB8423784D0 (en) * 1984-09-20 1984-10-24 Fifield K J Processing device
CA1238427A (en) * 1984-12-18 1988-06-21 Jonathan Oseas Code protection using cryptography
US5109413A (en) * 1986-11-05 1992-04-28 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
US4817140A (en) * 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
EP0266748B1 (en) * 1986-11-05 1995-02-08 International Business Machines Corporation A software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US5081676A (en) 1990-10-04 1992-01-14 Chou Wayne W Method and apparatus for protecting multiple copies of computer software from unauthorized use
US5410717A (en) * 1991-03-22 1995-04-25 Allen-Bradley Company, Inc. Removable function card for a programmable controller processor
US5485519A (en) * 1991-06-07 1996-01-16 Security Dynamics Technologies, Inc. Enhanced security for a secure token code
US5222133A (en) * 1991-10-17 1993-06-22 Wayne W. Chou Method of protecting computer software from unauthorized execution using multiple keys
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
DE4239865A1 (de) 1992-11-27 1994-06-01 Heinz Johann Verfahren zur Verhinderung der Anwendung eines unberechtigt auf einen Datenträger kopierten Programms und Vorrichtung zur Durchführung des Verfahrens
US5337357A (en) 1993-06-17 1994-08-09 Software Security, Inc. Method of software distribution protection
US5319704A (en) * 1993-06-17 1994-06-07 Exar Corporation Control circuit for voltage controlled attenuator for speakerphones
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
US5398285A (en) * 1993-12-30 1995-03-14 Motorola, Inc. Method for generating a password using public key cryptography
DE4419115A1 (de) 1994-06-01 1994-10-20 Michael Doelker Verfahren zum hochwirksamen Schutz vor unauthorisierter Benutzung von Softwarekopien
US5651068A (en) * 1995-03-08 1997-07-22 Hewlett-Packard Company International cryptography framework
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse

Also Published As

Publication number Publication date
NO952795L (no) 1997-01-14
PT855052E (pt) 2003-06-30
KR19990028931A (ko) 1999-04-15
EP0855052A1 (en) 1998-07-29
WO1997003398A1 (en) 1997-01-30
NZ313319A (en) 1999-10-28
US20040193987A1 (en) 2004-09-30
HK1048674A1 (zh) 2003-04-11
US20030190043A1 (en) 2003-10-09
MX9800385A (es) 1998-09-30
AU713872B2 (en) 1999-12-09
PL324525A1 (en) 1998-06-08
EP0855052B1 (en) 2003-03-05
AU6535796A (en) 1997-02-10
JPH11509023A (ja) 1999-08-03
EP1253503A2 (en) 2002-10-30
CN1155866C (zh) 2004-06-30
DE69626530D1 (de) 2003-04-10
ATE233916T1 (de) 2003-03-15
IL122888A0 (en) 1998-08-16
JP4267065B2 (ja) 2009-05-27
DE69626530T2 (de) 2003-11-13
CN1192814A (zh) 1998-09-09
ES2194109T3 (es) 2003-11-16
US6266416B1 (en) 2001-07-24
NO302388B1 (no) 1998-02-23
DK0855052T3 (da) 2003-07-07
EP1253503A3 (en) 2004-07-14
NO952795D0 (no) 1995-07-13
HK1009533A1 (en) 1999-06-04
IL122888A (en) 2000-10-31

Similar Documents

Publication Publication Date Title
PL187088B1 (pl) Sposób i urządzenie do przetwarzania programu
US6871192B2 (en) System and method for preventing unauthorized use of protected software utilizing a portable security device
KR101091465B1 (ko) 프로세서의 가상 머신 내 기밀 콘텐츠의 보안 처리를 위한 방법 및 장치
RU2321179C2 (ru) Способ защищенной передачи данных между двумя устройствами
CN103221961B (zh) 包括用于保护多用户敏感代码和数据的架构的方法和装置
KR100350841B1 (ko) 원본 데이터 유통 방법, 시스템, 장치 및 컴퓨터 판독가능매체
EP1505470A2 (en) Terminal application generation apparatus and application authentication method
WO2004006075A1 (ja) 開放型汎用耐攻撃cpu及びその応用システム
WO2003021403A1 (en) Method to protect software against unauthorized use
CN107832589B (zh) 软件版权保护方法及其系统
CN115563589B (zh) 一种芯片防盗版方法、装置、电子设备及存储介质
KR100358705B1 (ko) Pc 기반의 유.에스.비. 보안 모듈과 암호칩을 사용한정보 보호 장치
JPS5947646A (ja) 計算機デ−タ処理装置および方法
TW200820076A (en) Portable mass storage with virtual machine activation
Mana et al. A framework for secure execution of software
JP2005215945A (ja) 情報処理装置、ソフトウェアの実行を許可する記憶装置、および、ソフトウェア実行方法
Barbareschi et al. Partial FPGA bitstream encryption enabling hardware DRM in mobile environments
KR100310445B1 (ko) Pc 기반의 암호칩을 사용한 유.에스.비 보안모듈 제어방법
CN111611551B (zh) 一种基于国密算法的动态链接库保护方法及其系统
CA2226386C (en) Protection of software against use without permit
CN115659292B (zh) 脚本代码的加密方法及装置
KR20030010240A (ko) 아이씨칩내장카드를 이용한 소프트웨어불법복제방지방법과그 소프트웨어 복제방지용 아이씨칩내장카드
MXPA98000385A (en) Protection of computer programs against unauthorized use
Aouadi et al. Mobile agents security
AU777158B2 (en) Centralised cryptographic system and method with high cryptographic rate

Legal Events

Date Code Title Description
LAPS Decisions on the lapse of the protection rights

Effective date: 20090710