PL187088B1 - Sposób i urządzenie do przetwarzania programu - Google Patents
Sposób i urządzenie do przetwarzania programuInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 51
- 238000004891 communication Methods 0.000 claims abstract description 39
- 230000005540 biological transmission Effects 0.000 claims description 50
- 238000013475 authorization Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 230000009977 dual effect Effects 0.000 claims description 2
- 238000003780 insertion Methods 0.000 claims description 2
- 230000037431 insertion Effects 0.000 claims description 2
- 239000000463 material Substances 0.000 claims description 2
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 238000012546 transfer Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 13
- 238000013478 data encryption standard Methods 0.000 description 7
- 239000012634 fragment Substances 0.000 description 5
- 238000010200 validation analysis Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 241000195493 Cryptophyta Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- LFULEKSKNZEWOE-UHFFFAOYSA-N propanil Chemical compound CCC(=O)NC1=CC=C(Cl)C(Cl)=C1 LFULEKSKNZEWOE-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/109—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/77—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/302—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/127—Trusted platform modules [TPM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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/0442—Network 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 <=>
CĆ
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)
- Zastrzeżenia patentowe1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 pierwszej187 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
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)
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& 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)
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 |
-
1995
- 1995-07-13 NO NO952795A patent/NO302388B1/no not_active IP Right Cessation
-
1996
- 1996-07-10 EP EP96925180A patent/EP0855052B1/en not_active Expired - Lifetime
- 1996-07-10 CN CNB96196247XA patent/CN1155866C/zh not_active Expired - Fee Related
- 1996-07-10 NZ NZ313319A patent/NZ313319A/en not_active IP Right Cessation
- 1996-07-10 DK DK96925180T patent/DK0855052T3/da active
- 1996-07-10 AU AU65357/96A patent/AU713872B2/en not_active Ceased
- 1996-07-10 EP EP02010974A patent/EP1253503A3/en not_active Withdrawn
- 1996-07-10 PT PT96925180T patent/PT855052E/pt unknown
- 1996-07-10 IL IL12288896A patent/IL122888A/xx not_active IP Right Cessation
- 1996-07-10 JP JP50571097A patent/JP4267065B2/ja not_active Expired - Fee Related
- 1996-07-10 PL PL96324525A patent/PL187088B1/pl not_active IP Right Cessation
- 1996-07-10 DE DE69626530T patent/DE69626530T2/de not_active Expired - Fee Related
- 1996-07-10 AT AT96925180T patent/ATE233916T1/de not_active IP Right Cessation
- 1996-07-10 KR KR1019980700233A patent/KR19990028931A/ko not_active Application Discontinuation
- 1996-07-10 ES ES96925180T patent/ES2194109T3/es not_active Expired - Lifetime
- 1996-07-10 WO PCT/NO1996/000171 patent/WO1997003398A1/en active Search and Examination
- 1996-07-10 US US08/983,461 patent/US6266416B1/en not_active Expired - Fee Related
-
1998
- 1998-08-29 HK HK98110296A patent/HK1009533A1/xx not_active IP Right Cessation
- 1998-08-29 HK HK02108918.0A patent/HK1048674A1/zh unknown
-
2001
- 2001-06-05 US US09/873,351 patent/US20030190043A1/en not_active Abandoned
-
2004
- 2004-01-06 US US10/752,429 patent/US20040193987A1/en not_active Abandoned
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 |