modifié : 2-InformationTheory/1InformationTheory.ods

modifié :         2-InformationTheory/4Brevet.md
	supprimé :        "Brevets/2023-24-R\303\251partition choix de brevets - th\303\251orie de l'information.xlsx"
	supprimé :        Brevets/Equipe1_EP01202556NWA1.pdf
	supprimé :        Brevets/Equipe2_EP 1761067 A1 .pdf
	supprimé :        Brevets/Equipe3_US5732138.pdf
	supprimé :        Brevets/Equipe4_WO2012006106A2.pdf
	supprimé :        Brevets/Equipe5_FR 3024006 A1 .pdf
	supprimé :        Brevets/Equipe6_FR 3044196 A1 .pdf
	supprimé :        Brevets/Equipe7_EP 3373509 A1 .pdf
	supprimé :        Brevets/Equipe8_FR 3057727 A1 .pdf
	supprimé :        Brevets/SupportsPresentation/Equipe1PhillipsBrevetEuropeCodeDetecteurEtCorrecteurPourVideoAdaptatifConnexion.pdf
	supprimé :        Brevets/SupportsPresentation/Equipe2_Script_Sony_CompressionPhoto.pdf
	supprimé :        Brevets/SupportsPresentation/Equipe2_Slides_Sony_CompressionPhoto.pdf
	supprimé :        Brevets/SupportsPresentation/Equipe3PseudoAleatoireLampeALave.pdf
	supprimé :        Brevets/SupportsPresentation/Equipe4_Slide_Intel_CompressionEtCorrectionDisqueSSD.pdf
	supprimé :        Brevets/SupportsPresentation/Equipe5_Slide_CompressionInterneImage.pdf
	supprimé :        Brevets/SupportsPresentation/Equipe6_Script_THALES_CompressionPresqueSansPerteImagesHauteResSatellite.docx
	supprimé :        Brevets/SupportsPresentation/Equipe6_Slides_THALES_CompressionPresqueSansPerteImagesHauteResSatellite.pptx
	supprimé :        Brevets/SupportsPresentation/Equipe8_Script_Enedis_CompressionEnTeteIPV6_ProtocoleReseau.pdf
	supprimé :        Brevets/SupportsPresentation/Equipe8_Slides_Enedis_CompressionEnTeteIPV6_ProtocoleReseau.pdf
	modifié :         python/2/0LoopOnWord.py
	modifié :         python/2/1LoopOnWord.py
	modifié :         python/2/2Rot13.py
	modifié :         python/2/3Rot13.py
	modifié :         python/2/4Rot13.py
This commit is contained in:
Florent Madelaine 2025-03-03 00:30:57 +01:00
parent 894ea1502f
commit d752c5bacc
26 changed files with 177 additions and 12161 deletions

Binary file not shown.

@ -1,11 +1,142 @@
Cours de Florent.
# Information Theory / Brevet
Dans cette partie du cours, nous nous intéressons à la protection juridique de travail ou d'invention en lien avec l'informatique.
## Point rapide de Droit
## Licences.
Nous avons déjà abordé rapidement l'existence de divers licences originales pour protéger un programme informatique qui sont le dual des licences avec copy-right et sont dites copy-left.
Un aspect central consiste à demander à pouvoir disposer des sources du code sous licence et à autoriser sa réutilisation et les changements ultérieurs de celui-ci.
Le mouvement autour du logiciel libre s'officialise en particulier avec la création du free software foundation (FSF) aux états-unis en 1985, qui propose la licence GPL (General Public License).
* (GNU GPL)[https://en.wikipedia.org/wiki/GNU_General_Public_License]
Le noyaux Linux est traditionnellement protégé par cette licence GPL.
D'autres système d'exploitation libres basés sur unix, comme FreeBSD sont protégés par leur propre licence (licence BSD) plus permissive pour une intégration avec du lociel non-libre.
Il existe de facto un foisonnement de licences plus ou moins libres au sens qu'elles sont plus ou moins copy-left. La FSF elle-même propose une version plus permissive de sa licence GPL, particulièrement adaptée pour des librairies qui pourraient être compatibles avec des logiciels pourtant sous licence copy-right.
* (GNU Lesser GPL)[https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License]
En France, une licence libre est proposée par plusieurs organismes de recherche.
* (CeCILL)[https://fr.wikipedia.org/wiki/Licence_CeCILL]
De manière générale, le militantisme tel que porté par la FSF trouve un terreau assez fertile dans de nombreuses universités dans les département d'informatique, ce qui va contribuer à faire évoluer les mentalités dans l'industrie assez rapidement.
* (Foisonnement de licences)[https://en.wikipedia.org/wiki/Free-software_license]
Un autre aspect plus restreint consiste à promouvoir des API ouvertes.
Une APi consiste à promouvoir la modularité et à documenter la manière d'interagir avec un composant, sans pour autant nécessairement rendre open source ce composant.
* (API)[https://en.wikipedia.org/wiki/API]
* (open API)[https://en.wikipedia.org/wiki/Open_API]
Un précurseur en terme d'API ouverte est par exemple la norme POSIX pour les systèmes unix en 1988 (en fait un standard pour unix).
L'archétype de l'entreprise initialement totalement opposée à la culture du logicel libre et de la transparence est Microsoft qui va pendant toutes les années 90 continuer à s'appuyer sur un copyright traditionnel, des sources non disponibles, deslogiciels qu'il faut acheter, et un système d'API peu documenté qui rend très difficile de faire un logiciel pour le système d'exploitation windows pour une entreprise tierce. En particulier, Microsoft a tout fait pour entraver l'adoption de standard du web et pour favoriser son propre navigateur Internet Explorer. L'entreprise a même poussé le vice jusqu'à faire semblant de suivre des standards en construction pour mieux les saborder (Embrace, extend and extinguish).
* (Monopole)[https://en.wikipedia.org/wiki/Microsoft_litigation]
* (Saborder les standards)[https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish]
* (le jeu XBill)[https://en.wikipedia.org/wiki/XBill]
On assiste in fine à une transformation de la manière dont les gros projet logiciels sont vendus et organisées depuis des logiciels des années 1980/90 comme ceux vendus par une entreprise comme Microsoft avec une industrie qui va s'approprier certaines pratiques promus par la mouvance du logiciel libre.
Par exemple, en 1998, Netscape entame le projet open source Mozilla et livre le code de son browser Netscape sous licence GPL. C'est ce projet qui distribue Firefox.
En 2001, même Microsoft fini par ouvrir les sources de son système d'exploitation.
* (Shared Source Initiative)[https://en.wikipedia.org/wiki/Shared_Source_Initiative]
En 2001, Apple propose Mac OS X qui est basé sur FreeBSD (sous Apple Public Source License); et, en 2005, Android alors racheté par Google développe son système d'exploitation basé sur linux (sous licence Apache) avec initialement une réimplémentation plus ou moins partielle de l'API du langage java.
Ceci n'a pas empêché les mastodontes d'abuser de leur position dominante sous couvert de veiller à la sécurité de leurs usagers et à la qualité des produits de prélever des frais fixe de 30 pour cent (apple store, google play)
Le fait que Android soit open source permet par exemple de réaliser des forks qui permettent une meilleure protection des données personnelles.
*(CalyxOS)[https://en.wikipedia.org/wiki/CalyxOS]
*(custom Android OS)[https://en.wikipedia.org/wiki/List_of_custom_Android_distributions]
Quelques affaires.
*(google vs Oracle)[https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc]
* (Epic Game vs Apple)[https://en.wikipedia.org/wiki/Epic_Games_v._Apple]
* (Epic Game vs Google)[https://en.wikipedia.org/wiki/Epic_Games_v._Google]
## Patent in the US.
Aux états-unis, on peut déposer un brevet sur un algorithme (avec un contenu mathématique important et novateur ou pas).
Exemples de 3 brevets.
1. LZW compression et le format GIF
2. RSA Public Key encryption
3. Amazon One click Shopping
Nous avons déjà évoqué l'algorithme de compression LZW et son lien avec le format GIF.
Un autre exemple intéressant est le travail sur la crypto à clé publique avec RSA (papier en 76, RSA est l'initiale des trois auteurs, brevet en 1983) et peu d'alternatives pendant plusieurs années. RSA était utilisé au début des années 90 dans le programme PGP (pretty good privacy) ainsi que dans des protocoles comme SSL ou SSH.
Un exemple qui peut sembler un peu plus ridicule est l'achat en un clic d'amazon (plutôt pour se défendre de ces concurrents directs à l'époque dans la vente en ligne de livres), la demande est rejettée en 2007 pour un brevet européen (pas original) et au Canada (effet physique).
* (source un peu datée mais intéressante vieux projet à Stanford en 2000)[https://cs.stanford.edu/people/eroberts/courses/cs181/projects/1999-00/software-patents/]
* (one click)[https://en.wikipedia.org/wiki/1-Click]
Les trois brevets discutés dans cette section sont disponibles sur le git.
* (brevet Compression LZW US)[../Brevets/BrevetsHistoriques/US_4558302_A.pdf]
* (brevet RSA US)[../Brevets/BrevetsHistoriques/US4405829.pdf]
* (brevet One click US)[../Brevets/BrevetsHistoriques/US5960411.pdf]
Un peu d'histoire des brevets aux US avec les évolutions en particulier politique lorsque l'administration Clinton nomme à la tête de l'USPTO un ancien lobbyiste de l'industrie du logiciel.
* (software patent in the US)[https://en.wikipedia.org/wiki/Software_patents_under_United_States_patent_law]
## Brevets en Europe
Il y a une différence fondamentale entre le droit aux US et en Europe qui limite plus lourdement la brevetabilité d'un algorithme.
En France, depuis 2007, c'est la convention sur le brevet Européen (CBE) et ces directives qui sont applicables.
* (intro vulgarisée)[https://www.epo.org/fr/news-events/in-focus/ict/hardware-and-software]
En général en europe, on peut poser un brevet sur n'importe quelle technologie (article 52) à condition d'avoir 3 ingrédients : être novateur (détails à l'article 53), ne pas être évident (détails à l'article 56), être susceptible d'une application industrielle (détails à l'article 57).
Il y toutefois des exceptions. En particulier l'Article 52.2.a stipule qu'on ne peut pas poser un brevet sur
> les découvertes, les théories scientifiques et les méthodes mathématiques".
* (Article 52)[https://www.epo.org/fr/legal/epc/2020/a52.html]
On ne peut pas non plus poser de brevet sur du code qui lui relève du droit d'auteur.
Au final il semble qu'un ingrédient typique permettant de poser un brevet sur une idée informatique consiste à l'expliquer dans un contexte physique.
Par exemple de la compression dans le cadre d'un usage en télécommunication, de la cryptographie embarqué, ou encore de l'indexation dans le cadre d'un cache.
Dans les directives il faut plus spécifiquement regarder les articles en lien avec une invention mise en oeuvre par ordinateur (IMO, en anglais et en allemand CII).
La définition est reproduite ci-dessous.
> Une invention mise en œuvre par ordinateur (IMO) est une invention qui implique l'utilisation d'un ordinateur,
> d'un réseau informatique ou d'un autre appareil programmable et dont une ou plusieurs caractéristiques sont
> réalisées totalement ou en partie par un programme d'ordinateur.
> A computer-implemented invention (CII) is one which involves the use of a computer,
> computer network or other programmable apparatus, where one or more features
> are realised wholly or partly by means of a computer program.
Pour plus de détails une annexe propose
* (index IMO)[https://www.epo.org/fr/legal/guidelines-epc/2024/j.html#]
## Stratégie pour permettre de poser un brevet sur un algorithme
De manière générale, il est intéressant de mettre en avant la stratégie permettant de poser un brevet sur un algorithme.
Un aspect très fréquent semble consister à mettre en avant les aspects matériels.
Une autre technique consiste à rendre l'algorithme tellement flou qu'on peut mettre en avant d'autres aspects.
TO DO.
## Recherche de Brevets
@ -14,24 +145,25 @@ Exemples de sites pour trouver des brevets :
* (en local)[../Brevets/]
* (inpi)[https://data.inpi.fr/recherche_avancee/brevets?advancedSearch=%257B%2522checkboxes%2522%253A%257B%2522bases_choice%2522%253A%257B%2522order%2522%253A0%252C%2522searchField%2522%253A%255B%2522origin%2522%255D%252C%2522values%2522%253A%255B%257B%2522value%2522%253A%2522FR%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522CCP%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522EP%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522WO%2522%252C%2522checked%2522%253Atrue%257D%255D%257D%257D%252C%2522texts%2522%253A%257B%2522cpc%2522%253A%257B%2522order%2522%253A5%252C%2522searchField%2522%253A%255B%2522patentClassifications.classificationSymbol%2522%255D%252C%2522checkedSearchField%2522%253A%255B%255D%252C%2522value%2522%253A%2522H03M%25207%252F40%2522%257D%257D%252C%2522multipleSelects%2522%253A%257B%257D%252C%2522dates%2522%253A%257B%257D%257D]
* (recherche par code CDC)[https://worldwide.espacenet.com/classification?locale=fr_EP#!/CPC=H03M7/00]
* (google patent)[https://patents.google.com/]
## Exercice de compréhension et restitution d'un brevet
## Exercice de compréhension et restitution d'un brevet (pour les M1DN)
objectif : lire un brevet avec un aspect technique qui présente un contenu algorithmique. Le restituer en vulgarisant les aspects techniques et en mettant en avant.
objectif : lire un brevet avec un aspect technique, qui présente au moins un algorithme.
Soit dans la liste présenté, soit un de votre choix mais à faire valider par mes soins avant.
Soit dans la liste présenté, soit un de votre choix mais à faire vazlider par mes soins avant.
* restitution le 25 mars.
* 15 minutes environ pare groupe
* restitution devantr un jury composé de Florent et Maïté
* 15 minutes environ par groupe
* groupe de 2 ou 3
* Préparer un support de présentation de 3 à 5 pages maximum : e.g. 1 page pour présenter le brevet très rapidement, 1 ou 2 pages pour présenter tout ou partie de l'aspect algorithmique (un ou plusieurs dessins du brevet, ou des versions simplifiées), 1 ou 2 pages pour parler plutôt de votre perception en temps que juriste. Si l'algorithme est très complioqué, vous pouvez présenter grossièrement l'algorithme général puis zoomer sur un point particulier.
* Préparer un support de présentation de 3 à 5 pages maximum : e.g. 1 page pour présenter le brevet très rapidement, 1 ou 2 pages pour présenter tout ou partie de l'aspect algorithmique (un ou plusieurs dessins du brevet, ou des versions simplifiées), 1 ou 2 pages pour parler plutôt de votre perception en temps que juriste. Si l'algorithme est très compliqué, vous pouvez présenter grossièrement l'algorithme général puis zoomer sur un point particulier.
Notation. Bienveillante. L'important est de faire l'exercice et de voir à quoi ressemble un brevet sur un sujet technique car ceci pourrait vous concerner dans votre travail à court ou moyen terme.
Notation. Bienveillante.
L'important est de faire l'exercice et de voir à quoi ressemble un brevet sur un sujet technique car ceci pourrait vous concerner dans votre travail à court ou moyen terme.
Autre aspect. Expliquer de manière vulgarisée un algorithme.
Cas d'usage qu'on ne verra pas pour aller au delà de l'exercice.
* une équipe technique souhaite poser un brevet.
* Vous devez faire une étude préliminaire pour leur dire si c'est intéressant ou bien si il y a déjà des idées similaires trop proches qui sont déposées.
@ -39,4 +171,3 @@ Cas d'usage qu'on ne verra pas pour aller au delà de l'exercice.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,8 +1,20 @@
#! /usr/bin/python3
# -*- coding: utf-8 -*-
voyelles="aeiouy"
for element in voyelles:
print(element," ", end=' ')
print("\n")
voyelles="unechaînedecharactère#%@&❤"
out=" "
for élément in voyelles:
#print(element,", ", end='')
out= out + élément + ", " # concaténation
# slicing
print(out[0:-2])
#
#print(out[1:-2])
#print(out[3:-2])
#
#liste=[0,1,2,3,4,5,6,7,8,9]
#print(liste)
#print(liste[0:-1]) #enlever le dernier
#print(liste[1:-1]) #enlever le premier aussi
#print(liste[-4:-2])
#print("\n")

0
python/2/1LoopOnWord.py Normal file → Executable file

19
python/2/2Rot13.py Normal file → Executable file

@ -1,11 +1,22 @@
#! /usr/bin/python3
# -*- coding: utf-8 -*-
message="secretfrperg"
def carot13(c):
""" transforme le caractère c en un caractère rot13 de c i.e. 13 lettres plus loin"""
n=ord(c)-97 # transforme la lettre minuscule entre a et z en un entier entre 0 et 25
m=(n+13)%26 # phase de César je tourne la roue (avec des nombres de 0 à 25) d'un demi tour
rotc=chr(m+97) # traduction en charactère entre a et z
return rotc
message="abcdefghijklmnopqrstuvwxyz"
for element in message:
n=ord(element)-97
m=(n+13)%26
rot=chr(m+97)
# n=ord(element)-97 # transforme la lettre minuscule entre a et z en un entier entre 0 et 25
# m=(n+13)%26 # phase de César je tourne la roue (avec des nombres de 0 à 25) d'un demi tour
# rot=chr(m+97) # traduction en charactère entre a et z
rot=carot13(element)
print(rot,end='')
print("\n")

0
python/2/3Rot13.py Normal file → Executable file

0
python/2/4Rot13.py Normal file → Executable file